Openvpn

在同一主機上的兩個 openvpn 隧道網路之間轉發數據包

  • March 26, 2021

我有兩個 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 上接收到的數據包轉發到 tun2,所以我添加了一個靜態路由:

ip route add IP4/32 via 192.168.77.3

還啟用了 IP 轉發。

sysctl -w net.ipv4.ip_forward=1

不存在 iptables 規則。所有鏈都有 ACCEPT 行為。

所有隧道介面都連接到其相應的伺服器並啟動。當我使用 dst=IP4 從伺服器 1 向隧道發送數據包時,在主機中接收到數據包,但它們沒有轉發到 tun2,我無法在伺服器 2 中使用tcpdump. 任何的想法?

我必須明確啟用tun1(傳入流量)轉發:

sysctl -w net.ipv4.conf.tun1.forwarding=1

sysctl -w net.ipv4.ip_forward=1 還不夠(其實不需要)。

引用自:https://serverfault.com/questions/1058355