Соедините две сети с OpenVPN

Я пытаюсь соединить две сети вместе через OpenVPN.

Шлюзы могут проверить с помощью ping-запросов друг друга, однако они не могут получить доступ к другим компьютерам в сети, к которой они присоединяются. Журналы не показывают ошибок, и соединение устанавливается.

Что я пропускаю здесь? Кажется, что у многих есть эта проблема по различным причинам, но после 50 + попытки я сдался и решил спросить :)

Сеть 1:

dev tun port 1194 ifconfig 10.8.222.40 10.8.222.41 route 10.2.1.0 255.255.255.0 vpn_gateway comp-lzo keepalive 10 60 persist-key persist-tun user nobody group nobody secret /etc/openvpn/static.key

ip route default via 10.0.1.1 dev eth0 10.0.1.0/27 dev eth0 proto kernel scope link src 10.0.1.9 10.2.1.0/24 via 10.8.222.41 dev tun0 10.3.0.0/24 via 10.3.0.2 dev tun2 10.3.0.2 dev tun2 proto kernel scope link src 10.3.0.1 10.8.222.41 dev tun0 proto kernel scope link src 10.8.222.40 172.17.0.0/16 dev docker0 proto kernel scope link src 172.17.42.1

Сеть 2

dev tun port 1194 remote my_ext_ip 1194 ifconfig 10.8.222.41 10.8.222.40 route 10.0.0.0 255.254.0.0 vpn_gateway comp-lzo keepalive 10 60 persist-key persist-tun user nobody group nobody secret /etc/openvpn/static.key

ip route default via 10.2.1.1 dev eth0 10.0.0.0/15 via 10.8.222.40 dev tun0 10.2.1.0/24 dev eth0 proto kernel scope link src 10.2.1.9 10.8.222.40 dev tun0 proto kernel scope link src 10.8.222.41 172.17.0.0/16 dev docker0 proto kernel scope link src 172.17.42.1 172.27.224.0/22 dev as0t0 proto kernel scope link src 172.27.224.1 172.27.228.0/22 dev as0t1 proto kernel scope link src 172.27.228.1 172.27.232.0/22 dev as0t2 proto kernel scope link src 172.27.232.1 172.27.236.0/22 dev as0t3 proto kernel scope link src 172.27.236.1

Обновление:

Вот то, что я имею iptables-мудрый:

Обе сети: iptables -I FORWARD -i eth0 -o tun0 -m conntrack --ctstate NEW -j ACCEPT iptables -I FORWARD -i tun0 -o eth0 -m conntrack --ctstate NEW -j ACCEPT

Сеть 1: iptables -t nat -A POSTROUTING -s "10.0.0.0/15" -o "eth0" -j MASQUERADE iptables -A FORWARD -p tcp -s 10.0.0.0/15 -d 0.0.0.0/0 -j ACCEPT

Сеть 2: iptables -t nat -A POSTROUTING -s "10.2.1.0/24" -o "eth0" -j MASQUERADE iptables -A FORWARD -p tcp -s 10.2.1.0/24 -d 0.0.0.0/0 -j ACCEPT

\

Обновление 2:

Ввод туннеля: # tcpdump -i tun0 listening on tun0, link-type RAW (Raw IP), capture size 65535 bytes 01:01:15.181262 IP ip-10-8-222-41.ec2.internal > ip-10-0-1-5.ec2.internal: ICMP echo request, id 28767, seq 1, length 64

Выход из туннеля: # tcpdump -i tun0 listening on tun0, link-type RAW (Raw IP), capture size 65535 bytes 01:03:44.304930 IP 10.8.222.41 > 10.0.1.5: ICMP echo request, id 28784, seq 1, length 64

Коммутационные интерфейсы # tcpdump -i eth0 01:08:56.093291 IP 10.8.222.41 > 10.0.1.5: ICMP echo request, id 28785, seq 3, length 64

1
задан 3 February 2015 в 03:08
2 ответа

Решено!

tcpdump позволил мне увидеть, что источником пакетов для пересылки iptables был 10.8.222.41/32

, поэтому добавление

iptables -t nat -A POSTROUTING - s "10.8.222.41/32" -o "eth0" -j МАСКАРАД iptables -A FORWARD -p tcp -s 10.8.222.41/32 -d 0.0.0.0/0 -j ACCEPT

решил проблему!

Теперь оба шлюза могут пинговать серверы в сети друг друга. Теперь мне нужно выяснить, как разрешить это для всех компьютеров в обеих сетях, но это другой вопрос ...

1
ответ дан 4 December 2019 в 00:13

Итак, из выходных данных вашего IP-маршрута он выглядит как ваш

eth0 at Network 1 is 10.0.1.0 with mask 255.255.255.224
eth0 at Network 2 is 10.2.1.0 with mask 255.255.255.0

. Итак, я бы отредактировал openvpn conf на машине Сети 1, чтобы читать:

route 10.2.1.0 255.255.255.0  #this is the remote network I want to see

и openvpn conf на машине Сети 2, чтобы читать :

route 10.0.1.0 255.255.255.224 #this is the remote network I want to see

Это должно поднять правильные маршруты. Также не беспокойтесь о добавлении параметра vpn_gateway в конце строки маршрута, это не нужно. По умолчанию он добавляет другой конец туннеля в качестве шлюза.

0
ответ дан 4 December 2019 в 00:13

Теги

Похожие вопросы