У меня есть два туннеля p2p для двух разных серверов на хосте, tun1 и tun2: (хост - это сервер Ubuntu 18.04)
(Сервер 1: IP1) <--> (Хост: IP0) <- > (Сервер 2: IP2)
Для tun1 на сервер 1 у меня есть:
proto udp
mode p2p
remote IP1
rport 4856
local IP0
lport 4856
dev-type tun
tun-ipv6
resolv-retry infinite
dev tun1
comp-lzo
persist-key
persist-tun
cipher aes-256-cbc
ifconfig 192.168.76.2 192.168.76.3
secret /etc/openvpn/key.key
для tun2 на сервер 2 у меня есть:
proto udp
mode p2p
remote IP2
rport 4857
local IP0
lport 4857
dev-type tun
tun-ipv6
resolv-retry infinite
dev tun2
comp-lzo
persist-key
persist-tun
cipher aes-256-cbc
ifconfig 192.168.77.2 192.168.77.3
secret /etc/openvpn/key.key
Я хочу пересылать пакеты, полученные на tun1 с dst = IP4, на tun2, поэтому я добавил статический маршрут:
ip route добавить IP4 / 32 через 192.168.77.3
Пересылка IP также включена.
sysctl -w net.ipv4.ip_forward = 1
Правил Iptables не существовало. Все цепочки имеют поведение ПРИНЯТЬ.
Все туннельные интерфейсы подключены к своим соответствующим серверам и выше.
Когда я отправляю пакеты с Сервера 1 с dst = IP4 в туннель, пакеты принимаются на хосте, но они не пересылаются на tun2, и я не могу увидеть их на Сервере 2, используя tcpdump
.
Есть идеи?
Мне нужно явно включить пересылку на tun1
(входящий трафик):
sysctl -w net.ipv4.conf.tun1.forwarding = 1
sysctl -w net.ipv4.ip_forward = 1
недостаточно (на самом деле это не нужно).