Debian 라우터를 통해 서로 다른 서브넷에 있는 두 개의 Windows 클라이언트 연결

Debian 라우터를 통해 서로 다른 서브넷에 있는 두 개의 Windows 클라이언트 연결

서로 다른 서브넷에 두 개의 Windows 환경이 있습니다(192.168.1.80/30&172.16.21.0/25), 둘 다 정적으로 할당된 주소이며 두 개의 NIC가 있는 단일 Debian 라우터에 연결됩니다. 나는 할당했다172.16.21.1도착하다이더넷 1그리고192.168.1.81도착하다이더리움 2. 각 Windows 환경은 자체 게이트웨이 IP를 사용합니다.

라우팅 테이블을 사용하여 Windows 환경이 서로 핑하도록 하려면 어떻게 해야 합니까? 활성화했습니다net.ipv4.ip_forward=1내부에/etc/sysctl.conf문서. 별도의 라우팅 테이블을 사용해 보았지만 구성이 작동하지 않는 것 같습니다. 이제 각 컴퓨터에는 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)

답변1

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작동할 것입니다. 데비안 컴퓨터에 방화벽이 활성화되어 있으면 적절하게 구성해야 합니다.

답변2

~에 따르면https://askubuntu.com/questions/95199/two-network-cards-and-ip-forwarding, 한 네트워크 인터페이스에서 다른 네트워크 인터페이스로(예: eth0에서 eth1로) 전달하려면 다음 iptables 규칙이 필요합니다.

sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
sudo iptables -A FORWARD -i eth0 -o eth1 -m state --state RELATED,ESTABLISHED -j ACCEPT
sudo iptables -A FORWARD -i eth1 -o eth0 -j ACCEPT

양방향 전달이 작동하도록 하려면 반대 규칙도 적용해야 합니다.

sudo iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE
sudo iptables -A FORWARD -i eth1 -o eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT
sudo iptables -A FORWARD -i eth0 -o eth1 -j ACCEPT

관련 정보