搞不清楚。我有 3 个主机。
HostA: eth0: 10.10.80.5
HostB: eth0: 10.10.80.4, tun0:10.9.0.1
HostC: tun0: 10.9.0.74
我尝试从 HostA 访问 HostC 上的端口 7000。HostB 成为路由问题。到目前为止...:
HostA ---> HostB = OK
HostB ---> HostC = OK
HostC ---> HostB = OK
HostC ---> HostA = OK
HostA ---> HostC = Nothing
我有在 HostB 上启用 ipv4 转发和sysctl net.ipv4.ip_forward。我为此使用了 iptables。以下是我当前的规则:注意:LANIF=eth0,WANIF=tun0
主机B:
$IPTABLES -t nat -A POSTROUTING -o $LANIF -j MASQUERADE
$IPTABLES -A FORWARD -i $LANIF -o $WANIF -m state --state RELATED,ESTABLISHED -j ACCEPT
$IPTABLES -A FORWARD -i $WANIF -o $LANIF -j ACCEPT
$IPTABLES -t nat -A POSTROUTING -o $WANIF -j MASQUERADE
$IPTABLES -A FORWARD -i $WANIF -o $LANIF -m state --state RELATED,ESTABLISHED -j ACCEPT
$IPTABLES -A FORWARD -i $LANIF -o $WANIF -j ACCEPT
主人A:
Route Table:
10.9.0.74 10.10.80.4 255.255.255.255 UGH 0 0 0 eth0
我已在 HostB 上启用日志记录以查看流量,除尝试从 HostA ---> HostC 发起连接外,所有路由均正确。看起来它没有在两个接口之间进行转换。
谢谢
答案1
您需要在操作系统中启用 ipv4 转发(路由)。检查转发状态:
sysctl net.ipv4.ip_forward
如果它说net.ipv4.ip_forward = 0
然后编辑/etc/sysctl.conf
改变:
net.ipv4.ip_forward = 0
读书
net.ipv4.ip_forward = 1
答案2
我已经确认这是 Azure 路由问题。虽然许多人不会遇到同样的问题,但我添加了默认路由和下一跳,以便将流量转发出正确的接口。