在Linux上具有不同網路遮罩和廣播的兩個網路之間路由?
乙太網路:
ServerA; IP=192.168.255.254; Mask=255.255.0.0; Bcast=192.168.255.255 | | eth1 IP=192.168.1.254; Mask=255.255.0.0; Bcast=192.168.255.255 ServerB DHCP: 192.168.1.1 - 192.168.1.252 eth0 IP=192.168.1.253; Mask 255.255.255.0; Bcast=192.168.1.255 | | Client1..252 IP over DHCP (192.168.1.1 - 192.168.1.252)
如何連接/路由以在 ClientX 和 ServerA 之間進行通信?
_
ClientX 和 ServerB 之間的 Ping 工作正常。
ServerA 和 ServerB 之間 Ping 正常。
_
我嘗試在 linux 上的兩個網路之間進行路由?在 eth0 和 eth1 之間路由但沒有用。
auto lo iface lo inet loopback auto eth0 iface eth0 inet static address 192.168.1.253 netmask 255.255.255.0 broadcast 192.168.1.255 auto eth1 iface eth1 inet static address 192.168.1.254 netmask 255.255.0.0 broadcast 192.168.255.255
/etc/網路/介面
interface=eth0 no-dhcp-interface=eth1 dhcp-range=interface:eth0,192.168.1.1,192.168.1.252,1
/etc/dnsmasq.conf
———————————-更新1————– ———————-
ServerA; IP=192.168.255.254; Mask=255.255.255.0; Bcast=192.168.255.255 | | eth1 IP=192.168.255.1; Mask=255.255.255.0; Bcast=192.168.255.255 ServerB DHCP: 192.168.1.1 - 192.168.1.253 eth0 IP=192.168.1.254; Mask 255.255.255.0; Bcast=192.168.1.255 | | Client1..253 IP over DHCP (192.168.1.1 - 192.168.1.253)
路由:
sysctl -w net.ipv4.ip_forward=1 iptables -A INPUT -i lo -j ACCEPT # Always accept loopback traffic iptables -A INPUT -i eth0 -j ACCEPT # We allow traffic from the LAN side iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT # Allow established connections iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE # Masquerade iptables -A FORWARD -i eth1 -o eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT # fowarding iptables -A FORWARD -i eth0 -o eth1 -j ACCEPT # Allow outgoing connections from the LAN side.
結果:
從 ClientX 到 ServerA 的 Ping 有效,但從 ServerA 到 ClientX 無效:
$ ping 192.168.1.119 PING 192.168.1.119 (192.168.1.119) 56(84) bytes of data. From 192.168.255.254 icmp_seq=1 Destination Host Unreachable From 192.168.255.254 icmp_seq=2 Destination Host Unreachable …
———————————-沒有iptables的UPDATE 2(解決方案)——— ————————–
根據更新 1 的網路:
ServerA | |------------------|------------------|-------------… eth1 eth1 eth1 ServerB ServerC ServerD eth0 eth0 eth0 | | | | | … ClientX network ClientY network
ServerA 上的路由:
route add -net 192.168.1.0 netmask 255.255.255.0 gw 192.168.255.1 route add -net 192.168.2.0 netmask 255.255.255.0 gw 192.168.255.2 … route add -net 192.168.N.0 netmask 255.255.255.0 gw 192.168.255.N
在 ServerB 上轉發:
sysctl -w net.ipv4.ip_forward=1
所有網路參與者之間的 ping 都在沒有 iptables 的情況下工作。
您的
192.168.0.0/16
(192.168.0.0 - 255.255
) 包含192.168.1.0/24
(192.168.1.0-255
)。因此,您不能通過 ServerB 從 ServerA 路由到 ClientX。讓我們保留盡可能多的變數,只修改必要的:
保持:
- ClientX 配置原樣。
- ServerB
eth0
原樣。- 伺服器A IP 地址
192.168.255.254
和Bcast=192.168.255.255
.改變:
- 伺服器網路遮罩到
255.255.255.0
.- 伺服器B
eth1
:auto eth1 iface eth1 inet static address 192.168.255.253 netmask 255.255.255.0 broadcast 192.168.255.255
當然,您可以在 ServerA 和 ServerB 之間使用更寬的網路遮罩,只要它不與
192.168.1.0/24
;重疊即可。/17
ienetmask 255.255.128.0
即是可能的192.168.128.0 - 192.168.255.255
最廣泛的範圍。這只是對確切問題的快速解決方案,請用CIDR介紹自己。
現在,根據評論。假設您有許多伺服器,並且希望將每台伺服器用作從其自己的子網到
192.168.255.0/24
ServerA的路由器192.168.255.254
。你可以在你的配置中使用一個簡單的模式,其中一個192.168.255.254/24
作為伺服器之間的網路,另一個是客戶端-伺服器網路。eth0 eth1 ServerB 192.168.1.253 192.168.255.1 ServerC 192.168.2.253 192.168.255.2 ServerD 192.168.3.253 192.168.255.3 ... Server<N> 192.168.N.253 192.168.255.N
假設
eth0
作為該特定伺服器後面的客戶端的預設網關,每個客戶端都能夠通過中間伺服器連接到 ServerA。但是,ServerA0.0.0.0
通過它自己的預設網關(我們不知道)有預設路由。這包括除了它自己的子網之外的所有內容。您需要在其他伺服器後面的每個子網中添加一個路由,即route add -net 192.168.1.0 netmask 255.255.255.0 gw 192.168.255.1 route add -net 192.168.2.0 netmask 255.255.255.0 gw 192.168.255.2 route add -net 192.168.3.0 netmask 255.255.255.0 gw 192.168.255.3 ... route add -net 192.168.N.0 netmask 255.255.255.0 gw 192.168.255.N
/etc/network/interfaces
您可以通過on ServerA使其持久化,例如auto eth0 iface eth0 inet static address 192.168.255.254 netmask 255.255.255.0 broadcast 192.168.255.255 up route add -net 192.168.1.0 netmask 255.255.255.0 gw 192.168.255.1 up route add -net 192.168.2.0 netmask 255.255.255.0 gw 192.168.255.2 up route add -net 192.168.3.0 netmask 255.255.255.0 gw 192.168.255.3 down route del -net 192.168.1.0 netmask 255.255.255.0 gw 192.168.255.1 down route del -net 192.168.2.0 netmask 255.255.255.0 gw 192.168.255.2 down route del -net 192.168.3.0 netmask 255.255.255.0 gw 192.168.255.3