路由器(和伪装)仅来自特定 IP

路由器(和伪装)仅来自特定 IP

我希望所有来自 192.168.2.10 接口 eth0 的流量都被伪装并通过接口 tun0 转发出去。我希望响应通过 tun0 返回。我不希望接口 eth0 上的其他流量受到影响。这是我的配置:

# iptables -t nat -A POSTROUTING -o tun0 -j MASQUERADE
# iptables -A FORWARD -i tun0 -o eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT
# iptables -A FORWARD -i eth0 -s 192.168.2.10/32 -o tun0 -j ACCEPT
# ip rule add from 192.168.2.10/32 table 100
# ip route add default via 10.8.0.1 table 100

这个配置正确吗?它似乎可以正常工作,但是 iftop 中的流量看起来非常奇怪。看起来传出的流量正在通过 tun0,但响应来自 eth0,尽管我可能读错了,也可能是由另一端的配置错误引起的。

答案1

您无法直接更改回复的界面 -接受者没有做出这个决定,发送者 (以及中介机构) 也是如此。

但你应该确保传出数据包被伪装成正确的源地址。如果源地址不正确,请考虑使用-j SNAT明确配置的源地址,而不是依赖-j MASQUERADE自动选择。

换句话说,为了使回复通过 tun0 到达,原始数据包必须有一个通常也可以通过 tun0 到达的“源”地址。

相关内容