通過單個 NIC 路由到不同的子網到另一個盒子
我有一個帶有 3 個子網的家庭網路(我喜歡到處玩!)
我一直在為一些我認為很容易的事情而苦苦掙扎,但幾天后我離答案更近了。我的網路如圖所示
主子網是192.168.1.0/24,它通過帶有乙太網 ( 192.168.1.2 ) 和 wifi ( 192.168.2.1 ) 適配器的筆記型電腦連接到192.168.2.0/24子網。
我正在使用 2 個 NIC(帶有IP Maquearading )的筆記型電腦上執行hostapd和dhcpd - 所以我將它用作 WiFi 熱點。那裡的設置工作正常(已經有一段時間了)。我最近添加了一個 wifi 路由器,它通過 WAN 連接器乙太網鏈路(192.168.1.10 )連接到192.168.1.0/24子網,在192.168.3.0/24子網範圍內提供 DHCP 地址。
主子網連接到 Linux 機器(192.168.1.1),該機器充當內部網路到網際網路的網關路由器(IP 偽裝用於進出公共網際網路的數據包)。
如果我在Linux 機器(路由器)上,我可以 ping 192.168.1.2和192.168.2.2(在路由表中添加條目以到達192.168.2.0/24子網之後):
ip route add 192.168.2.0/24 via 192.168.1.2
我的目標是從無線連接到 wifi 路由器的筆記型電腦 ( 192.168.3.2 )訪問手機 ( 192.168.2.2 ) ,而 wifi 路由器又連接到192.168.1.0/24子網。
這就是事情出錯的地方。我認為來自192.168.3.2的數據包- 發往192.168.2.2 - 將被發送到192.168.1.1(無線路由器的預設網關),並且由於192.168.1.1可以 ping 192.168.2.2,我假設這會起作用(因為上面提到的路由條目)。
IP 轉發在 Linux 路由器 ( 192.168.1.1 ) 以及充當 WiFi 熱點的筆記型電腦上啟用。我在這裡嘗試做的是可能的,還是我錯過了一些基本概念?
- 路由表
Routing table for 192.168.1.1: Destination Gateway Genmask Flags Metric Ref Use Iface 0.0.0.0 10.0.0.1 0.0.0.0 UG 10 0 0 eth0 10.0.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0 192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1 192.168.2.0 192.168.1.25 255.255.255.0 UG 0 0 0 eth1 Routing table for 192.168.1.2: Destination Gateway Genmask Flags Metric Ref Use Iface 0.0.0.0 192.168.1.1 0.0.0.0 UG 0 0 0 eth0 192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0 192.168.2.0 0.0.0.0 255.255.255.0 U 0 0 0 wlan0
謝謝你們!
在這裡,我不得不承認一個非常盲目的疏忽,並回答了我自己的問題(至少是讓我絆倒的部分!)
我有一個腳本可以啟動和停止我的 Linux 路由器設置(設置防火牆規則、啟用 IP 轉發和偽裝等),並在停止命令上執行“反向”。停止部分中的一條線是:
iptables -P FORWARD DROP
這將
FORWARD
策略設置為DROP
- 有效地終止數據包轉發,因此是我所有問題的原因!最後它就像添加一樣簡單ip route add 192.168.2.0/24 via 192.168.1.2
路由到 Linux 路由器上的路由表。來自不同子網的數據包被正確轉發到192.168.1.1,如果需要,它們會從那裡進一步轉發,通過子網192.168.1.25 GW 為192.168.2.0/24
感謝 wurtel和user2999479,他們的回答讓我更深入地了解自己的設置 :)