各位堆垛机朋友大家好,
我不确定我是否以完美的方式规划了我的网络配置。
我有一个像这样的家庭网络拓扑:
调制解调器/路由器 <-> debian 路由器 <-> LAN。
我需要从我的 LAN(位于 Debian 路由器后面)访问互联网。
当我有这 3 条规则时Debian路由器,我可以访问WAN:
default via 192.168.0.10 dev enp1s0f1
10.0.0.0/24 dev enp1s0f0 proto kernel scope link src 10.0.0.12
192.168.0.0/24 dev enp1s0f1 proto kernel scope link src 192.168.0.12
192.168.0.10
是我的调制解调器/路由器。192.168.0.0/24
是带有调制解调器/路由器和 debian 路由器分支的小型 LAN。10.0.0.0/24
是我的 Pi 所在的私人 LAN。
我的问题是我无法通过 debian 路由器192.168.0.10
从我的工作站ping 调制解调器。10.0.0.4
编辑:新的试用:
我以这种方式修改了 /etc/network/interfaces 为Debian路由器:
source /etc/network/interfaces.d/*
# The loopback network interface
auto lo
iface lo inet loopback
allow-hotplug enp1s0f0
iface enp1s0f0 inet static
address 10.0.0.12
netmask 255.255.255.0
allow-hotplug enp1s0f1
iface enp1s0f1 inet static
address 192.168.0.12
netmask 255.255.255.0
gateway 192.168.0.10
结果:通过网络服务验证。它在上生成这些路由Debian路由器:
default via 192.168.0.10 dev enp1s0f1 onlink
10.0.0.0/24 dev enp1s0f0 proto kernel scope link src 10.0.0.12
192.168.0.0/24 dev enp1s0f1 proto kernel scope link src 192.168.0.12
我可以从 debian 路由器 WAN 上 ping 通,DNS 正常,ping 正常。从我的 Pi 在 10... 网络上,我无法 ping 调制解调器/路由器 .10 。我可以 ping 通 debian 路由器的另一侧接口 (192.168.0.12)。
在 debian 路由器上我有这些 ufw 设置:
*nat
#:PREROUTING ACCEPT - [0:0]
:POSTROUTING ACCEPT - [0:0]
#Port fwd
#-A PREROUTING -i enp1s0f1 -p tcp --dport 22 -j DNAT --to-destination 10.0.0.3
# Forward traffic from source through iface
-A POSTROUTING -s 10.0.0.0/24 -o enp1s0f1 -j MASQUERADE
# don't delete the 'COMMIT' line or these nat table rules won't be processed
COMMIT
我不知道为什么我无法从 Rasbian ping 调制解调器/路由器(ufw 上允许 ping - 不知道这是否有意义)。
net.ipv4.ip_forward=1
设置在Debian路由器。
iptables-nvL:
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
117K 7348K ACCEPT all -- enp1s0f0 * 0.0.0.0/0 0.0.0.0/0
Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
iptables -t nat -nvL:
Chain PREROUTING (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
Chain POSTROUTING (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
在 Rasbian 上我有这些路线(简化):
default via 10.0.0.12 { the debian router's directly connected iface }
10.0.0.0/24 via 10.0.0.12
那么,有什么线索说明为什么我无法从 Raspbian Pi ping 调制解调器吗? :-)
答案1
假设iptables
输出来自 Debian 路由器,则您的防火墙MASQUERADE
规则尚未应用。 (事实上,你的规则都没有被应用。)
要解决该问题,您可以执行以下两项操作之一
ufw
使用适当的命令(我不使用)应用防火墙规则,ufw
以便您的整个 10.0.0.0/24 网络隐藏在 Debian 路由器的单个面向外部的 IP 地址后面
或者
- 在调制解调器/路由器上创建一条静态路由,声明它可以通过 192.168.0.12 到达您的内部 10.0.0.0/24 网络。否则,其指向上游的默认路由将是它知道发送此类数据包的唯一位置。
答案2
我发现了问题。我一定是忘记设置了
DEFAULT_FORWARD_POLICY="ACCEPT"
进入 /etc/default/ufw.
正如@roaima 指出的,在 FORWARD ACCEPT 之前没有 ACCEPT 规则。现在,一切都按预期进行:-)