在同一主机上的两个 openvpn 隧道网络之间转发数据包

在同一主机上的两个 openvpn 隧道网络之间转发数据包

我有两个 p2p 隧道到主机上的两个不同服务器,tun1 和 tun2:(主机是 Ubuntu 服务器 18.04)

(服务器 1:IP1)<-->(主机:IP0)<-->(服务器 2:IP2)

对于 tun1 到 server 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 add IP4/32 via 192.168.77.3

Ip转发也已启用。

sysctl -w net.ipv4.ip_forward=1

不存在 Iptables 规则。所有链均具有 ACCEPT 行为。

所有隧道接口均已连接到其相应的服务器并启动。当我从目标地址为 IP4 的服务器 1 向隧道发送数据包时,主机会收到数据包,但不会将其转发到 tun2,而且我无法使用 看到服务器 2 中的数据包tcpdump。有什么想法吗?

答案1

我必须明确启用转发tun1(传入流量):

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

sysctl -w net.ipv4.ip_forward=1 是不够的(实际上是不需要的)。

相关内容