我有一台充当路由器的机器(Linux ubuntu),路由工作正常。
iptables -A FORWARD -i wg0 -j ACCEPT
iptables -A FORWARD -o wg0 -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
iptables -t nat -A POSTROUTING -o wg0 -j MASQUERADE
eth0
网络上的一台机器可以wg0
使用该路由器 ping 网络上的另一台机器。
我不能做的是:从一台机器上eth0
pingwg0
路由器的 -ip。
说清楚一点:
[Machine A: IP 192.168.68.2]
<--> [Router eth0: 192.168.68.114 / wg0: 10.100.100.2]
<-->[Machine B: 10.100.100.1]
Machine A
可以 ping :192.168.68.114
但是10.100.100.1
不是 10.100.100.2
当我10.100.100.2
从ping 时Machine A
,我能够看到正在Router
使用tcpdump
的 ping 传入包,但是在到达 之前它被丢弃iptables
,链级别的计数器没有增加。
据我所知,目前他们Router
正在丢弃包裹,但我无法找到他们在哪里。
您知道如何让Router
的 Wan IP 在 LAN 内可用吗?
答案1
所述错误的答案是:有一条iptables
规则(在 raw/PREROUTING 上)正在丢弃数据包。一旦我删除了它,一切都会按预期运行。
关于我的问题本身,该wg0
接口是由Wireguard工具创建的wg-quick
,该工具默认添加了规则。
为了解决这个问题,我使用接口配置文件添加了一条规则:
PostUp = iptables -t raw -I PREROUTING -i eth0 --src 192.168.68.0/24 --dst 10.100.100.2 -j ACCEPT