Linux
通過 Debian 路由器連接不同子網上的兩個 Windows 客戶端
我在不同的子網上有兩個 Windows 環境(192.168.1.80/30和172.16.21.0/25),它們都靜態分配了連接到具有兩個 NIC 的單個 Debian 路由器的地址。我已將172.16.21.1分配給eth1和192.168.1.81分配給eth2。每個 Windows 環境都使用它們各自的網關 IP。
如何允許 Windows 環境使用路由表相互 ping 通?我已經在*/etc/sysctl.conf文件中啟用了net.ipv4.ip_forward=1 。*我嘗試使用單獨的路由表,但我的配置似乎不起作用。現在我只在每台機器上完成了IP配置,其他一切都是預設的。
ifconfig 輸出:
eth1 Link encap:Ethernet HWaddr 00:0c:29:08:05:01 inet addr:172.16.21.1 Bcast:172.16.21.127 Mask:255.255.255.128 inet6 addr: fe80::20c:29ff:fe08:501/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:526 errors:0 dropped:0 overruns:0 frame:0 TX packets:562 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:44822 (43.7 KiB) TX bytes:40642 (39.6 KiB) Interrupt:17 Base address:0x20a4 eth2 Link encap:Ethernet HWaddr 00:0c:29:08:05:0b inet addr:192.168.1.81 Bcast:192.168.1.83 Mask:255.255.255.252 inet6 addr: fe80::20c:29ff:fe08:50b/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:856 errors:0 dropped:0 overruns:0 frame:0 TX packets:909 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:71421 (69.7 KiB) TX bytes:85064 (83.0 KiB) Interrupt:17 Base address:0x2424 lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 inet6 addr: ::1/128 Scope:Host UP LOOPBACK RUNNING MTU:65536 Metric:1 RX packets:47 errors:0 dropped:0 overruns:0 frame:0 TX packets:47 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:4733 (4.6 KiB) TX bytes:4733 (4.6 KiB)
路由表(使用 route -n):
Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 0.0.0.0 172.16.21.1 0.0.0.0 UG 0 0 0 eth1 169.254.0.0 0.0.0.0 255.255.0.0 U 1000 0 0 eth1 172.16.21.0 172.16.21.1 255.255.255.128 UG 0 0 0 eth1 192.168.1.80 192.168.1.81 255.255.255.252 UG 0 0 0 eth2
eth1 上的 tcpdump:
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode listening on eth1, link-type EN10MB (Ethernet), capture size 262144 bytes 14:35:38.591460 IP 172.16.21.2 > 192.168.1.82: ICMP echo request, id 1, seq 71, length 40 14:35:43.126147 ARP, Request who-has router (00:0c:29:08:05:01 (oui Unknown)) tell 172.16.21.2, length 46 14:35:43.126189 ARP, Reply router is-at 00:0c:29:08:05:01 (oui Unknown), length 28 14:35:43.141954 IP 172.16.21.2 > 192.168.1.82: ICMP echo request, id 1, seq 72, length 40 14:36:08.894329 IP router.mdns > 224.0.0.251.mdns: 0 [2q] PTR (QM)? _ipps._tcp.local. PTR (QM)? _ipp._tcp.local. (45) 14:36:09.658277 ARP, Request who-has 199.7.91.13 tell router, length 28 14:36:10.656763 ARP, Request who-has 199.7.91.13 tell router, length 28 14:36:10.707265 IP6 fe80::20c:29ff:fe08:501.mdns > ff02::fb.mdns: 0 [2q] PTR (QM)? _ipps._tcp.local. PTR (QM)? _ipp._tcp.local. (45)
要使 Linux 機器充當路由器,您需要告訴它如何路由來自兩個子網的流量。
您需要使用 route 命令為每個子網添加路由,這樣應該可以工作:
route add -net 192.168.1.80/30 gw 192.168.1.81 dev eth2 route add -net 172.16.21.0/25 gw 172.16.21.1 dev eth1
如果你已經
net.ipv4.ip_forward=1
像你說的那樣啟動了,它應該可以工作。如果您在 debian 機器上啟用了防火牆,則需要對其進行適當的配置。