여기에서 설명이 길어진 점 양해해 주시기 바랍니다. 하지만 질문을 하시기 전에 설정에 대해 설명해 드리는 것이 좋을 것 같습니다.
내 컴퓨터(debian)에 2개의 USB 이더넷 장치가 연결되어 있고 169.254.xx 주소를 사용하여 avahi를 통해 스스로 구성됩니다.
각 USB 이더넷 장치의 다른 쪽 끝에는 SSH 호스트 ( host1
및host2
언제누구나 host1
또는 host2
장치 연결을 통해 SSH를 통해 호스트1.local 또는 호스트2.local에 연결할 수 있습니다.
둘 다 연결된 경우 에만 host1.local
OR 에 연결할 수 있습니다 host2.local
(호스트를 알 수 없음/접속할 수 없음 및 유사한 메시지가 나타남).
내가 달리면
ifconfig
두 인터페이스가 모두 작동 중이고 IP 주소가 있는 것으로 확인됩니다.
내가 달리면
ip route show
다음과 같이 두 개의 일치하는 경로가 설정되어 있는 것을 확인했습니다.
169.254.0.0/16 dev eth0 scope link src 169.254.3.232 metric 212
169.254.0.0/16 dev eth1 scope link src 169.254.79.120 metric 213
그래서 나는생각하다여기서 일어나는 일은 이러한 경로 중 하나가 Zeroconf 범위 내의 모든 트래픽을 가져와 장치 중 하나로 보내는 것입니다. 즉, 두 장치가 모두 연결되면 트래픽이 해당 장치에만 해당되기 때문에 하나의 장치만 응답합니다. 마지막에 호스트 장치.
이를 테스트하기 위해 다른 경로가 인계받아 다른 장치로 트래픽을 보낼 수 있도록 작업 장치의 경로를 삭제하려고 시도했지만 시도한 경로 삭제 명령의 모든 변형이 아무 작업도 수행하지 않는 것처럼 보였고 경로는 그대로 유지되었습니다.
eth0
host1
대신, 이 명령을 실행하면 장치의 다른 모든 설정(예: 예상되는 IP)과 함께 (연결된) 경로가 사용(제거)됩니다. 이론을 입증하기 전에 host1.local
응답을 중지하고 host2.local
응답이 없는 부분부터 응답을 시작하십시오.
ip addr flush dev eth0
그래서 내 해결책은 모든 것을 능가하는 자동으로 생성된 일반 경로를 제거하고 장치에 더 구체적인 경로를 추가하는 것이었습니다(각 호스트에 고정 IP가 있다는 것을 추가했어야 했습니다).
그처럼
ip route add 169.254.102.0/24 dev eth0
ip route add 169.254.116.0/24 dev eth1
심지어
ip route add 169.254.102.23/32 dev eth0
ip route add 169.254.116.74/32 dev eth1
그러나 경로를 강제로 제거하는 방법이 너무 가혹하기 때문에 완전히 작동하지 않습니다 ip addr flush
. 경로가 들어왔지만 플러시로 인해 인터페이스가 심각하게 종료됩니다.
그래서 내 질문은 다음과 같습니다
ip route del
NOT의 모든 변형이 잘못된 경로를 제거하는 이유는 무엇 입니까?명령을 사용하는 것 외에 경로를 삭제하는 다른 방법이 있습니까
ip
?
이 문제를 어떻게 해결할 수 있습니까?
인터페이스를 연결하여 로드 밸런서처럼 작동하도록 하는 솔루션이 더 합리적일까요?
라우팅을 보다 구체적으로 만들기 위해 노력해야 할 다른 사항이 완전히 누락된 것입니까(아마도 Zeroconf/Avahi가 이러한 연결을 설정하는 방법 측면에서)?
답변1
이러한 경로의 네트워크를 변경하는 것은 권장되지 않습니다. 또한 avahi에 의해 다시 플러시되고, 기껏해야 뒤에 있는 마스크로 돌아가고, 최악의 경우 경로/마스크가 엉망이 됩니다.
또한 구성이 필요 없는 주소/자동 개인 주소 라우팅에 대한 집착을 멈추는 것이 좋습니다. 이는 네트워크 로컬이며 정의상 라우팅이 불가능합니다.
나는 책을 읽고 개인 RFC 1918 IP 주소를 사용하는 것이 좋습니다.