Linux에서 여러 기본 게이트웨이 중에서 선택하는 방법은 무엇입니까?

Linux에서 여러 기본 게이트웨이 중에서 선택하는 방법은 무엇입니까?

두 개의 네트워크 카드가 있는 컴퓨터가 있는데, 그 중 하나는이더 리움하나무선 랜.

  • 무선 랜10.0.0.0/24에 위치
  • 이더 리움192.168.0.0/16에 위치

커널 라우팅 테이블은 다음과 같습니다.

 $ route -n
 Kernel IP routing table
 Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
 0.0.0.0         192.168.0.1     0.0.0.0         UG    100    0        0 enp4s0f0
 0.0.0.0         10.0.0.1        0.0.0.0         UG    600    0        0 wlp3s0
 10.0.0.0        0.0.0.0         255.255.255.0   U     600    0        0 wlp3s0
 169.254.0.0     0.0.0.0         255.255.0.0     U     1000   0        0 enp4s0f0
 192.168.0.0     0.0.0.0         255.255.0.0     U     100    0        0 enp4s0f0

질문:

  1. 커널은 사용할 기본 gw를 선택합니까, 아니면 둘 다에 보냅니까?
  2. 선택한다면 어떻게 선택될 것인가?
  3. 선택에 영향을 미치거나 선택을 하게 만드는 가장 효과적인 방법은 무엇입니까?

답변1

이 경우 커널은 메트릭을 기반으로 선택됩니다. 즉, 낮은 메트릭이 우선합니다. (경로 선택은 경로 특이성, 관리 비용, 측정항목을 순서대로 기준으로 합니다. 두 개의 기본 게이트웨이의 특이성과 관리 비용은 동일합니다.)

선택을 변경하려면 가장 좋은 방법은 경로 메트릭을 변경하는 것입니다.

답변2

제가 이 글을 쓰는 이유는 각각 듀얼 네트워크 카드가 있고 각각 다음과 같이 구성된 서로 다른 두 대의 컴퓨터가 있기 때문입니다.

auto enp6s0 
iface enp6s0 inet dhcp
    address 192.168.20.36
    netmask 255.255.255.0
    gateway 192.168.20.1


auto enp7s0 
iface enp7s0 inet static
    address 10.10.10.3
    netmask 255.255.255.0
    gateway 192.168.20.1

둘 다 192.168.* LAN의 다른 컴퓨터와 10.10.*의 IOT 가젯에 연결할 수 있지만 둘 중 하나는 인터넷에 액세스할 수 없습니다.

정의된 정책이 없으며, Route 명령은 인터넷 연결이 없는 기본 게이트웨이가 10.10.* 네트워크와 연결된 네트워크 카드를 사용한다는 점을 제외하면 메트릭이 동일하다는 것을 보여줍니다.

분명히(경험상 보장할 수 없습니다!) 커널에 더 나은 옵션이 없으면 찾은 첫 번째 옵션을 사용합니다. /etc/network/interfaces에서 192.168.*에 대한 참조가 10.10.*에 대한 참조 앞에 나열되도록 /etc/network/interfaces를 편집하면 문제가 해결된 것으로 보입니다.

답변3

실험에 따르면 Linux는 마지막에 추가한 (동등한) 기본 게이트웨이를 사용하는 것 같습니다.

관련 정보