동일한 네트워크에 추가 경로를 추가하려고 하면 해당 경로가 이미 테이블에 있습니다.

동일한 네트워크에 추가 경로를 추가하려고 하면 해당 경로가 이미 테이블에 있습니다.

나는 다음과 같은 테이블을 가지고 있습니다

$ netstat -r -4 | grep 33.0
192.168.33.0/24    192.168.29.4       UGS      ovpns5

동일한 네트워크에 추가 경로를 추가하고 싶습니다.

$ route add -net 192.168.33.0/24 192.168.27.2
add net 192.168.33.0: gateway 192.168.27.2 fib 0: route already in table

왜? 동일한 네트워크에 두 개의 경로가 있을 수 없나요?

나는 그것을 할 수 route change있고 효과가 있습니다.

답변1

커널은 아웃바운드 패킷에 대한 경로를 찾을 때 답을 찾고 싶어합니다. 일치하는 항목이 여러 개 있으면 어느 것을 선택할지 알 수 없습니다.

이 스레드메일링 리스트에서도 동일한 문제가 다루어졌으며 freebsd-questions경로 중 하나를 "분할"하여 두 개의 더 구체적인 경로를 생성하여 문제를 해결하는 것이 제안되었습니다.

백업 기본 경로를 추가하는 방법은 "기본"을 2개의 서로 다른 보다 구체적인 서브넷으로 분할하는 것입니다.

# route add 0.0.0.0 PRIMARY_GW -netmask 127.0.0.0
# route add 127.0.0.0 PRIMARY_GW -netmask 127.0.0.0
# route add default SECONDARY_GW

이제 기본값은 "기본값"보다 작은 2개의 서로 다른 서브넷으로 분할되어 기본 경로가 됩니다. PRIMARY_GW에 연결하는 인터페이스가 실패하면 처음 2개의 경로가 삭제되고 백업 "기본" 게이트웨이는 그대로 유지됩니다.

귀하의 경우, 가능한 경우 기존 경로(192.168.29.4를 통해)를 사용하려면 다음과 같이 할 수 있습니다.

route add -net 192.168.33.0/25 192.168.29.4
route add -net 192.168.33.128/25 192.168.29.4
route add -net 192.168.33.0/24 192.168.27.2

커널은 항상 가장 구체적인 경로를 선호하므로 ovpns5인터페이스를 사용할 수 있을 때마다 192.168.29.4가 게이트웨이로 사용됩니다. 해당 인터페이스가 실패하면 경로가 제거되고 커널은 게이트웨이를 사용하여 시작됩니다 192.168.27.2.


두 연결 간의 로드 밸런싱을 원할 경우 동일 비용 다중 경로 라우팅(ecmp)을 찾고 있는데 FreeBSD가 이를 지원하는지 모르겠습니다.

관련 정보