나는 외부 세계에 연결된 두 개의 네트워크 인터페이스, 즉 이더넷(예: ADSL 라우터를 통해)과 ppp를 가진 시스템(커널 4.4)을 가지고 있습니다. 둘 다 NAT를 통과합니다. (그런데 들어오는 연결을 수락할 필요가 없고 ipv6이 없습니다.) 이더넷 연결이 실패하기 쉽습니다. 로컬 케이블만 문제일 수도 있지만 ADSL 라우터(예: 꺼짐) 또는 ISP/ADSL 회선도 문제일 수 있습니다. . 인터페이스를 구체적으로 ping하여 이를 감지할 수 있습니다. 이 경우 ppp를 시스템 기본값으로 설정하여 응용 프로그램이 새 연결을 열 때 어떤 인터페이스를 사용할지 알거나 지정할 필요가 없습니다. . eth 인터페이스가 언제 다시 활성화되는지 알기 위해 지속적으로 핑을 보내야 하기 때문에 단순히 eth 인터페이스를 종료하고 싶지는 않습니다.
노선정보는 다음과 같습니다.
route -n
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.10.254 0.0.0.0 UG 100 0 0 eth0
0.0.0.0 10.68.55.242 0.0.0.0 UG 700 0 0 ppp0
10.68.55.242 0.0.0.0 255.255.255.255 UH 700 0 0 ppp0
192.168.10.0 0.0.0.0 255.255.255.0 U 100 0 0 eth0
ip route
default via 192.168.10.254 dev eth0 proto static metric 100
default via 10.68.55.242 dev ppp0 proto static metric 700
10.68.55.242 dev ppp0 proto kernel scope link src 10.68.55.242 metric 700
192.168.10.0/24 dev eth0 proto kernel scope link src 192.168.10.125 metric 100
[I'm unsure about there being two 'default', or indeed why there are...]
ip address
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 00:0c:c6:7f:e5:50 brd ff:ff:ff:ff:ff:ff
inet 192.168.10.125/24 brd 192.168.10.255 scope global dynamic eth0
valid_lft 75591sec preferred_lft 75591sec
3: ppp0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN group default qlen 3
link/ppp
inet 10.68.55.242/32 scope global ppp0
valid_lft forever preferred_lft forever
경로 중 하나를 제거/다시 추가하여 다른 인터페이스보다 더 높거나 낮은 메트릭을 제공함으로써 원하는 것을 얻을 수 있다고 생각합니다. 그러나 이는 스크립트의 구문 분석이 약간 구불구불하다는 것을 의미합니다.
그렇다면 이 작업을 수행하는 "더 유연한" 방법이 있는지 궁금합니다. 나는 iptables 및 규칙에 대한 많은 페이지를 읽었지만 약간 다른 시나리오의 경우 특정(더 간단한?) 상황에 원칙을 적용하려고 합니다. 결국에는 더 매끄러워질지 확실하지 않습니다.
여기에서도 검색했는데 경로 측정항목을 변경하는 것이 실제로 가장 간단한 접근 방식일 수 있다고 생각합니다. 하지만 제가 살펴볼 수 있는 다른 빠르고 깔끔한 방법이 있습니까? 개체를 앞뒤로 밀기 위한 매우 간단한 명령을 제공합니다. 감사해요.