무선보다 유선 연결이 우선

무선보다 유선 연결이 우선

두 개의 Linux 시스템을 함께 연결했습니다. 한 컴퓨터는 내 라우터에 무선으로 연결되어 있지만 다른 컴퓨터는 그렇지 않습니다. 무선 접속이 불가능한 기기(PC1)는 고유한 고정 IP를 갖고 다른 기기(PC2)는 기본 게이트웨이로 설정되도록 구성됩니다. PC2도 고유한 IP를 갖고 라우터를 기본 게이트웨이로 사용하도록 구성됩니다. 유선 연결을 활성화하면 PC1은 PC2의 eth0 및 wlan0 인터페이스와 통신할 수 있고 PC2는 PC1과 통신할 수 있습니다. 불행하게도 유선 연결이 활성화되면 PC2는 라우터와 통신할 수 없으므로 PC1도 마찬가지입니다. 기본적으로 PC2 유선 및 무선 연결은 동시에 작동할 수 없습니다.

PC2(참고: route-n유선 활성화 여부에 관계없이 동일함)

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         10.0.0.138      0.0.0.0         UG    0      0        0 wlan0
10.0.0.0        0.0.0.0         255.255.255.0   U     1      0        0 eth0
10.0.0.0        0.0.0.0         255.255.255.0   U     9      0        0 wlan0
172.17.0.0      0.0.0.0         255.255.0.0     U     0      0        0 docker0

docker0   Link encap:Ethernet  HWaddr 56:84:7a:fe:97:99  
          inet addr:172.17.42.1  Bcast:0.0.0.0  Mask:255.255.0.0
          UP BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

eth0      Link encap:Ethernet  HWaddr 60:a4:4c:62:ee:86  
          inet addr:10.0.0.140  Bcast:10.0.0.255  Mask:255.255.255.0
          inet6 addr: fe80::62a4:4cff:fe62:ee86/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:155 errors:0 dropped:0 overruns:0 frame:0
          TX packets:7744 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:12554 (12.5 KB)  TX bytes:1509568 (1.5 MB)

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:2179347 errors:0 dropped:0 overruns:0 frame:0
          TX packets:2179347 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:217854881 (217.8 MB)  TX bytes:217854881 (217.8 MB)

wlan0     Link encap:Ethernet  HWaddr c0:4a:00:66:58:98  
          inet addr:10.0.0.103  Bcast:10.0.0.255  Mask:255.255.255.0
          inet6 addr: fe80::c24a:ff:fe66:5898/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:1605422 errors:0 dropped:0 overruns:0 frame:0
          TX packets:669649 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:1405768536 (1.4 GB)  TX bytes:83997471 (83.9 MB)

PC1(참고: PC1의 ifconfig를 검색할 수 없습니다.)

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         10.0.0.139      0.0.0.0         UG    0      0        0 eth0
10.0.0.0        0.0.0.0         255.255.255.0   U     1      0        0 eth0

답변1

PC2 라우팅 테이블의 현재 설정이 문제입니다. 중요하지 않은 열을 제거하고 넷마스크에서 CIDR 표기법으로 변환하여 여기에 재현했습니다.

Destination     Gateway         Metric Iface
0.0.0.0/0       10.0.0.138      0      wlan0
10.0.0.0/24     0.0.0.0         1      eth0
10.0.0.0/24     0.0.0.0         9      wlan0

첫 번째 행은 일반 영어로 "다른 모든 사이트로의 트래픽은 10.0.0.138 게이트웨이를 통해 전송됩니다"를 의미합니다.

두 번째와 세 번째 행은 동일한 대상을 제공하므로 낮은 측정항목이 우선합니다. 행 3은 거기에 없을 수도 있습니다. 일반 영어로 "게이트웨이 10.0.0.138 및 기타 모든 10.0.0.* 피어에 도달하려면 eth0을 통해 전송하십시오"라는 의미

이로 인해 인터넷으로 향하는 트래픽이 eth0을 통과하게 되어 연결이 부족해집니다.

동일한 네트워크에 있는 두 개의 서로 다른 브리징 도메인에 동일한 서브넷을 사용하기 때문에 문제가 발생합니다. 이는 허용되지 않습니다. 그만!

PC2의 eth0 인터페이스의 넷마스크를 255.255.252.0으로 변경하고 라우터에서 더 먼 IP 주소를 지정합니다. 그러면 라우팅 테이블이 다음으로 변경됩니다(예: PC2 eth0 10.0.0.21 및 PC1 eth0 10.0.0.22 제공).

Destination     Gateway         Metric Iface
0.0.0.0/0       10.0.0.138      0      wlan0
10.0.0.20/30    0.0.0.0         1      eth0
10.0.0.0/24     0.0.0.0         9      wlan0

이제 게이트웨이 10.0.0.138에 대한 트래픽은 두 번째 행과 전혀 일치하지 않으며 세 번째 행을 올바르게 사용합니다.

유선 연결에 겹치지 않는 범위(예: 10.0.1.x)를 사용하는 것이 더 좋습니다.

PC1에서도 인터넷 액세스가 작동하도록 하려면 라우터가 PC2를 통해 PC1로 향하는 트래픽을 보내야 합니다. 이를 설정하는 방법에는 두 가지가 있습니다. 라우터의 라우팅 테이블을 변경하거나 PC2가 프록시-ARP를 수행하도록 구성하는 것입니다.

답변2

문제를 일으킬 수 있다고 생각되는 몇 가지 사항이 있습니다.

  1. PC1이 PC2를 기본 게이트웨이로 사용하고 있다고 명시했지만 실제로 PC1의 라우팅 테이블은 10.0.0.139PC2의 eth0 인터페이스가 아닌 기본 게이트웨이로 표시됩니다.10.0.0.140
  2. PC2가 PC1의 트래픽 라우팅을 담당하는 경우 PC2에서 IP 전달을 설정했습니까? 나는 이것이 Linux에서 기본적으로 활성화되어 있다고 생각하지 않습니다. 으로 확인하세요 cat /proc/sys/net/ipv4/ip_forward. 0이면 PC2는 PC1에서 보낸 라우팅 가능한 모든 트래픽을 삭제합니다.켜야 할 경우 안내.
  3. IP 전달이 실제로 PC2에서 활성화된 경우 iptables가 전달 체인에 도달하는 트래픽을 허용하도록 구성되었습니까? iptables -nvL순방향 체인의 규칙을 확인합니다.

관련 정보