Linux

通過 Debian 路由器連接不同子網上的兩個 Windows 客戶端

  • February 26, 2018

我在不同的子網上有兩個 Windows 環境(192.168.1.80/30172.16.21.0/25),它們都靜態分配了連接到具有兩個 NIC 的單個 Debian 路由器的地址。我已將172.16.21.1分配給eth1192.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 機器上啟用了防火牆,則需要對其進行適當的配置。

引用自:https://unix.stackexchange.com/questions/325545