두 개의 서로 다른 인터페이스를 사용하여 외부 IP를 ping하는 방법은 무엇입니까?

두 개의 서로 다른 인터페이스를 사용하여 외부 IP를 ping하는 방법은 무엇입니까?

이 사이트에서 다중 인터페이스 핑에 대한 몇 가지 예를 살펴봤지만 이러한 방법 중 어느 것도 나에게 적합한 것 같지 않습니다.

두 개의 인터페이스가 있습니다

  • eth0 (192.168.0.x)
  • 무선랜 0(192.168.1.2)

eth0은 dhcp 서버에서 IP를 가져옵니다.

wlan0에는 고정 IP가 있습니다.

내가 명령을 실행할 때

ping -I eth0 www.google.com

내가 얻은 결과는 eth0(ipv6 항목)에서 나온 것 같습니다.

내가 명령을 실행할 때

ping -I wlan0 www.google.com

나는 다음과 같은 결과를 얻습니다.

connect: Network is unreachable

eth0을 분리하고 명령을 다시 실행하면 원하는 결과를 얻습니다.

인터페이스를 선택하여 외부 서버를 ping하는 방법은 무엇입니까? 한 사람이 지배하고 한 사람이 있으면 다른 사람은 무시되는 것과 거의 같습니다.

답변1

문제는 라우팅이 작동하는 방식입니다.

인터페이스가 여러 개인 경우 각 인터페이스를 게이트웨이로 구성할 수 있습니다. 귀하의 특정 시스템에서 라우팅 테이블이 어떻게 채워지는지는 잘 모르겠지만 귀하의 시스템은 첫 번째 기본 경로에 가장 높은 우선순위를 부여한 다음 두 번째 기본 경로에 가장 높은 우선순위를 부여하는 식으로 진행되는 것 같습니다. . 최적의 기본 경로만 활성화됩니다. 해당 인터페이스를 종료하면 해당 인터페이스의 기본 경로도 사라지므로 다른 기본 경로가 있으면 해당 인터페이스가 대신하게 됩니다. 이 우선순위를 "메트릭"이라고 합니다.

핑을 하면 시스템은 소스 주소가 포함된 패킷을 생성합니다. 자체적으로 주소를 선택할 수 있지만(로컬 네트워크 경로의 "src" 속성에서) -I 스위치를 사용하여 사용할 주소나 로컬 네트워크 경로가 주소를 가져오는 인터페이스를 지정할 수 있습니다. 이것이 바로 이 스위치가 수행하는 작업입니다. 소스 주소만 설정합니다. 경로를 선택하지 않으며 사용되는 인터페이스에 영향을 주지 않습니다.

결과: "첫 번째" 인터페이스에서 "두 번째" 인터페이스의 소스 주소를 사용하여 "첫 번째" 게이트웨이로 패킷을 보냅니다. 해당 소스 주소에 도달하는 방법(응답이 필요할 때 누구에게 응답해야 합니까?)을 모르거나 그런 식으로 표시되기를 원하지 않는 게이트웨이에 삭제될 가능성이 높습니다.

무엇을 해야 할까요? 출발지 주소를 기준으로 라우팅을 설정해야 합니다. 이것은 고급 주제입니다. Linux에서는 각각 서로 다른 기본 경로를 갖는 여러 개의 라우팅 테이블을 설정하고 시스템에 패킷 소스 주소를 기반으로 사용할 라우팅 테이블을 선택하도록 지시합니다. 이를 멀티 호밍이라고 합니다.

Linux에서 상황에 맞는 기본 멀티호밍 설정은 다음과 같습니다.

ip route add default via 192.168.0.GW0 table 1
ip route add default via 192.168.1.GW1 table 2
ip rule add from 192.168.0.x lookup 1
ip rule add from 192.168.1.2 lookup 2

처음 두 개는 resp가 있는 기본 경로입니다. 게이트웨이, 세 번째와 네 번째는 어떤 테이블이 어떤 주소에 사용되는지입니다. 물론 구체적인 실제 값을 자리 표시자에 넣는 것이 좋습니다. 동적 호스트 구성 프로토콜? 멀티호밍을 잊어버리거나 주소가 수신될 때 모든 것을 동적으로 설정하고 주소가 손실되면 삭제하는 스크립트를 작성하십시오(일반적으로 경로는 자동으로 삭제되고 규칙은 항상 수동으로 삭제해야 합니다). 부팅 시 자동으로 구성하시겠습니까? 배포 매뉴얼은 네트워크 중단을 준비하고 깨끗한 상태로 복원하는 방법을 알기 위한 올바른 접근 방식을 안내할 수 있습니다.

관련 정보