라우팅을 위해 BGP를 사용하여 두 개의 ISP에 연결된 라우터(Linux 실행)가 있지만 각 연결을 별도로 핑/추적하고 싶습니다.
표준 Traceroute 명령은 이 작업을 수행할 수 있는 것으로 보이지만(나가는 인터페이스, 소스 IP 선택 허용) 게이트웨이 선택은 허용하지 않습니다. 명령줄 옵션(-g)이 있지만 여기서 수행하는 작업은 단순히 패킷을 보내는 것이 아니라 IP 라우팅 옵션을 설정하는 것뿐입니다.
내가 원하는 것은 다음과 같습니다. 내 라우터에 10.0.0.1(첫 번째 ISP에서 제공), 10.1.0.1(두 번째 ISP에서 제공)이라는 두 개의 IP가 있다고 가정해 보겠습니다. 첫 번째 ISP의 기본 게이트웨이(다음 홉)는 10.0.0.254이고 두 번째 ISP의 기본 게이트웨이는 10.1.0.254입니다. 그 중 하나가 현재 기본 게이트웨이(BGP를 통해)로 선택되어 있지만 다른 게이트웨이를 통해서도 추적/핑을 사용할 수 있도록 하고 싶습니다. 라우팅 테이블을 변경할 수 없습니다(특히 다른 ISP에 문제가 있는 경우 연결이 끊어지지 않고).
Traceroute_oth --nexthop 10.0.0.254 8.8.8.8은 다음을 제공해야 합니다.
1 10.0.0.254
2 some-iother-ip.first-isp.com
...
x 8.8.8.8
Traceroute_oth --nexthop 10.1.0.254 8.8.8.8은 다음을 제공해야 합니다.
1 10.1.0.254
2 some-ip.second-isp.com
...
x 8.8.8.8
편집: 라우터가 다른 게이트웨이에 대해 모르기 때문에 "traceroute -i"가 작동하지 않습니다. 기본적으로 라우팅 테이블은 다음과 같습니다(단순화).
0.0.0.0/0 gw 10.0.0.254 eth0
명시적으로 지정하지 않으면 프로그램은 eth1(다른 ISP에 연결되는)의 기본 게이트웨이가 무엇인지 알 수 없습니다.
답변1
매뉴얼 페이지를 읽었죠?
-i interface, --interface=interface
Specifies the interface through which traceroute should send
packets. By default, the interface is selected according to the
routing table.
답변2
혹시 저와 같은 문제가 있는 분이 계실까봐 이렇게 글을 올립니다.
우분투에서 inetutils-traceroute
패키지는 소스 인터페이스 설정을 허용하지 않지만 패키지는 traceroute
이를 허용합니다. 당신은 거의 확실히 후자를 원합니다.
답변3
저도 같은 문제가 있었는데 다행히 해결이 되었습니다.
멀티홈 시스템에서는 인터페이스 수에 관계없이 기본 게이트웨이는 하나만 정의할 수 있습니다. 플래그로 지정한 인터페이스와 동일한 서브넷에 있지 않은 호스트로 경로 추적을 시도하면 -i
게이트웨이 누락으로 인해 경로 추적이 실패합니다(기본값이 정의된 단일 인터페이스를 사용할 만큼 운이 좋지 않다고 가정). 게이트웨이).
해결책은 머신의 각 "추가" 인터페이스에 대한 추가 라우팅 테이블을 정의하는 것입니다.
요약하자면, 다음과 같은 특성을 지닌 2개의 인터페이스가 있는 경우:
Interface A: IP: 10.0.0.10 subnet: 255.255.255.0 Gateway 10.0.0.1
Interface B: IP: 192.168.0.10 subnet: 255.255.255.0 Gateway 192.168.0.1
A의 기본 게이트웨이만 라우팅 테이블에 나타나므로 B의 게이트웨이를 포함하려면 다음 단계를 수행해야 합니다.
/etc/iproute2/rt_tables
다음 줄의 끝 으로 이동1 routingTableB
루트로 다음 명령을 실행하십시오.
ip route add 192.168.0.0/24 dev <Interface B> src 192.168.0.10 table routingTableB ip route add default via 192.168.0.1 dev <Interface B> table routingTableB ip rule add from 192.168.0.10/32 table routingTableB ip rule add to 192.168.0.10/32 table routingTableB
-i
그 후에는 아무런 문제 없이 인터페이스 B에서 이 플래그를 사용할 수 있습니다 .
재부팅 후에는 이 구성이 손실됩니다. 영구적으로 만드는 방법을 알아보려면 위의 링크를 확인하세요.
참고로 플래그는 -g
인터페이스가 패킷을 보내는 IP를 나타내지 않습니다. 중간 노드에 패킷 라우팅 방법을 지시하기 위해 프로브에 포함된 매개변수입니다.
답변4
음...여기에는 개념만 설명되어 있습니다. - 정책 라우팅:
Linux에 새 RT 테이블 추가
echo 200 test >> /etc/iproute2/rt_tables
일치하는 정책 규칙을 추가하세요.
ip rule add oif <iface_to_second_ISP> table test
새로 생성된 테이블에 기본 경로 추가
ip route add 0.0.0.0/0 via <second_ISP_next_hop> dev <iface_to_second_ISP> table test
캐시 새로 고침 및 테스트
ip route flush cache
ping -I <IP_on_second_ISP_iface> google.com