
各位堆高機朋友大家好,
我不確定我是否以完美的方式規劃了我的網路配置。
我有一個像這樣的家庭網路拓撲:
數據機/路由器 <-> 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 規則。現在,一切都按預期進行:-)