接口之间的路由

接口之间的路由

搞不清楚。我有 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 路由问题。虽然许多人不会遇到同样的问题,但我添加了默认路由和下一跳,以便将流量转发出正确的接口。

相关内容