我有两个 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
是不够的(实际上是不需要的)。