상태:
- 2개의 인터넷 링크(A와 B)는 모두 Linux 라우터에 연결되어 있습니다.
- 2개의 라우팅 테이블, 첫 번째 테이블은 기본적으로 A를 통과하고 두 번째 테이블은 기본적으로 B를 통과합니다.
- iptables 및 ip 규칙은 특정 트래픽에 대해 "최적" 테이블을 선택합니다.
모든 것이 잘 작동하지만 이는 정적 구성입니다.
인터넷 링크 중 하나가 다운되면 어떻게 되나요? 이 경우 모든 것이 두 번째 올바른 링크를 통과해야 합니다. 그리고 - 실패한 링크가 다시 돌아오면 - 트래픽이 두 링크를 모두 통과하는 것과 같은 상태로 모든 것이 되돌아가야 합니다.
이를 수행하기 위한 "표준" 도구가 있습니까? 그런 일을 하기 위해 무언가(스크립트)를 작성하는 것은 문제가 되지 않습니다. 하지만 – 아마도 더 많은 표준 도구가 있을까요?
(실패한 링크의 정의 - 중요한 IP 중 하나는 특정 링크에서는 연결할 수 없지만 두 번째 링크에서는 연결할 수 있습니다.)
답변1
내 다중 WAN Draytek 라우터는 ping 또는 arp를 사용하여 이더넷 및 VPN 링크의 연결 유지를 모니터링할 수 있습니다. (분명히 xDSL에 대한 더 나은 옵션이 있습니다.) 내부 연결 유지를 생성하도록 Ssh 및 OpenVPN을 구성할 수 있습니다. 나는 다른 표준 방법을 모른다.
다음과 같은 것(테스트되지 않음):
ROUTE1=up LINK1=up COUNT1=3
ROUTE2=up LINK2=up COUNT2=3
SHOUT=once
while sleep 5
do
if ping {destination_via1}
then
LINK1_UP=up COUNT1=3
else
[[ 0 -lt $COUNT1 ]] && COUNT1=$((COUNT1 - 1))
[[ 0 -ge $COUNT1 ]] && LINK1=down
fi
if ping {destination_via2}
then
LINK2_UP=up COUNT2=3
else
[[ 0 -lt $COUNT2 ]] && COUNT2=$((COUNT2 - 1))
[[ 0 -ge $COUNT2 ]] && LINK2=down
fi
if [[ down = $LINK1 -a up = $ROUTE1 ]]
then
# add code here to remove route via LINK1 #
ROUTE1=down
elif [[ up = $LINK1 -a down = $ROUTE1 ]]
# add code here to add route via LINK1 #
ROUTE1=up
SHOUT=once
fi
if [[ down = $LINK2 -a up = $ROUTE2 ]]
then
# add code here to remove route via LINK2 #
ROUTE2=down
elif [[ up = $LINK2 -a down = $ROUTE2 ]]
# add code here to add route via LINK2 #
ROUTE2=up
SHOUT=once
fi
if [[ once = $SHOUT -a down = $ROUTE1 -a down = $ROUTE2 ]]
then
# add code here to shout that both routes are down #
SHOUT=no
fi
done