
假設我想建立一個具有 4 個子網路的內部網路。沒有中央路由器或交換器。我有一個「管理子網路」可用於連結所有四個子網路上的網關(192.168.0.0/24)。一般圖如下圖所示:
10.0.1.0/24 <-> 10.0.2.0/24 <-> 10.0.3.0/24 <-> 10.0.4.0/24
換句話說,我在每個子網路上配置了一個 linux 盒子,有 2 個介面:10.0.x.1 和 192.168.0.x。它們充當每個子網路的網關設備。每個 10.x/24 子網路將有多個主機。其他主機將只有 1 個介面可用作 10.0.xx
我希望每個主機都能夠 ping 任何其他子網路上的其他主機。我的問題是:這可能嗎?其次,如果是這樣,我需要一些設定 iptables 和/或路由的幫助。我一直在嘗試這一點,但只能提出一種允許單向 ping 的解決方案(icmp 封包只是一個範例,我最終希望主機之間具有完整的網路功能,例如 ssh、telnet、ftp 等) 。
答案1
好的,所以您有五個網路10.0.1.0/24
、10.0.2.0/24
、10.0.3.0/24
和,以及四個在它們之間路由的盒子。假設路由盒的位址為、、和。10.0.4.0/24
192.168.0.0/24
10.0.1.1/192.168.0.1
10.0.2.1/192.168.0.2
10.0.3.1/192.168.0.3
10.0.4.1/192.168.0.4
10.0.x.0/24
您將需要使用類似以下的命令在每個路由器盒上新增到其他網路的靜態路由(已編輯!):
# on the 10.0.1.1 box
ip route add 10.0.2.0/24 via 192.168.0.2
ip route add 10.0.3.0/24 via 192.168.0.3
ip route add 10.0.4.0/24 via 192.168.0.4
以及其他路由器盒上的相應路由。在只有一個介面的非路由盒上,將預設路由設定為指向10.0.x.1
。當然,您也必須在所有介面上新增靜態位址和網路遮罩。
另請注意,Linux 預設不會充當路由器,您需要使用以下命令啟用封包轉送:
echo 1 > /proc/sys/net/ipv4/ip_forward
上面的命令ip
不會使設定持久化,如何做到這一點取決於發行版。
正如我所說,我還沒有測試過這個,可能忘記了一些東西。
答案2
先前接受的答案忽略了這樣一個事實:如果四台主機中的每一台只有兩個接口,那麼如果沒有中央路由器或交換機,它只能直接連接到兩個網路。
如果它使用這兩個介面之一連接到自己子網路上的用戶端,那麼它只有一個介面連接到其他三台主機。
因此,您需要一個中央路由器或交換器在這四台主機之間運行,或者每台主機上需要更多介面。