인터넷 종료가 없고 2개의 인터페이스(물리적 eth0 및 vlan iface eth0.101)가 없는 잠긴 환경에 서버가 있습니다.
/etc/network/interfaces에는 다음과 같이 vlan iface를 통해 특정 네트워크 블록으로 라우팅을 활성화하는 post-up 명령이 포함되어 있습니다.
post-up ip route add 10.1.0.0/24 via 10.1.2.1 dev eth0.101
스위치 장애 조치 테스트 중에 경로가 손실된 것을 확인했습니다( RTNETLINK answers: Network is unreachable.
). 이는 의미가 있습니다. 그러나 네트워크가 다시 온라인 상태가 되면 경로가 인터페이스에 다시 추가되지 않습니다.
이유를 이해합니다. 인터페이스가 사라지지 않고 down
네트워크에 액세스할 수 없게 되는 것뿐입니다.
분실되었지만 현재 발견된 네트워크에 대한 경로를 복구하도록 인터페이스를 구성하려면 어떻게 해야 합니까?
[email protected]
ifup
우리는 Debian 9를 사용하고 있으며 명령을 사용하여 장치를 시작/중지하는 각 인터페이스에 대한 서비스 정의를 가지고 있습니다 . 그러나 이번에도 장치와 스위치에 대한 링크는 결코 실패하지 않았습니다. 추가적인 systemd 옵션이 활용될 수 있는 경우에 대비하여 이를 언급합니다.
답변1
라우팅 테이블경로를 영구적으로 만듭니다(스위치 장애 조치 후 다시/수동으로 추가하지 않으려면 먼저 명명된 경로 테이블을 만듭니다). 예를 들어 "mgmt"를 사용할 수 있습니다.
echo '200 mgmt' >> /etc/iproute2/rt_tables
위 내용은 이 솔루션에 대한 확장된 세부 정보일 뿐이며, 커널은 많은 라우팅 테이블을 지원하고 0-255의 고유한 정수로 이러한 라우팅 테이블을 참조합니다. 이 테이블에는 mgmt라는 이름도 정의되어 있습니다. 아래는 /etc/iproute2/rt_tables
일부 숫자가 유지되는 기본 사례입니다 . 이 답변에서 200을 선택하는 것은 임의적입니다. 아직 사용되지 않은 숫자(1-252)를 사용할 수 있습니다.
# reserved values
255 local
0 unspec
둘째, post-up
다음과 같이 규칙을 편집하십시오(/etc/network/interfaces 아래).
post-up ip route add 10.1.0.0/24 dev eth0.101 table mgmt
post-up ip route add default via 10.1.2.1 dev eth0.101 table mgmt
post-up ip rule add from 10.1.0.0/24 table mgmt
post-up ip rule add to 10.1.0.0/24 table mgmt
또는또 다른 해결책은 경로가 존재하는지 확인하고 누락된 경우 다시 추가하는 백그라운드 bash 스크립트일 수 있습니다. 스크립트는 ip route add 10.1.0.0/24 via 10.1.2.1 dev eth0.101
스크립트 결과를 루프 또는 cron에서 설정할 수 있는지 확인할 수 있습니다.
ip route add 10.1.0.0/24 via 10.1.2.1 dev eth0.101
if [ $? -eq 0 ]; then
echo "Route added again"
sleep 10;
command-to-call-the-script-again
else
echo "Route exists"
sleep 10;
command-to-call-the-script-again
fi
답변2
적절한 설정에 대한 귀하의 설명이 약간 모호합니다. "스위치 장애 조치" 시나리오가 서버의 네트워크 장비에 어떤 영향을 줍니까? 링크가 사라졌나요? 패킷 전달을 중단하시겠습니까? 명시적 알림(예: LACP)은 어떤 역할을 합니까? 아니면 또 뭐야? 그리고 어떤 auto
인터페이스를 입력하셨나요 allow-hotplug
? 물리적 장치? 아니면 VLAN 인터페이스? 아니면 둘다?
문제는 설명된 동작이 설명된 설정만으로는 실제로 의미가 없다는 것입니다. 예를 들어 단순히 링크를 잃는 것만으로는 경로를 제거하는 데 충분하지 않으며 인터페이스를 설정하는 것만으로는 충분하지 않습니다.~하지 않는 한이를 명시적으로 수행하기 위한 몇 가지 추가 설정이 있습니다.
ifplugd
또한 언급되지 않은 이 추가 설정은 표준이 될 수 없으며 netplugd
링크 이벤트(예: 케이블 연결/분리)에 대해 작동한다고 말하고 싶습니다. 이러한 설정은 일반적으로 호출 ifup
되고 ifdown
처리 되므로 post-up
링크가 발생할 때 명령은 다음과 같습니다. 해당 구성이 VLAN 인터페이스와 일치하는지 확인하기 위해 실행됩니다.
allow-hotplug
ifupdown 설정 에는 다음이 포함됩니다.장비케이블 핫플러그가 아닌 핫플러그. 즉, 기본적으로 부팅 시(예: 커널이 장치의 존재를 처음 감지할 때) 및/또는 네트워크 장치가 USB 어댑터이고 서버의 USB에 연결하거나 연결 해제하는 경우에만 작동함을 의미합니다. 포트.
ping
따라서 일종의 검색(예: 일반 또는 의도적 TCP 연결)을 통해 네트워크 손실을 감지 할 수 있는 일부 사용자 지정 서비스를 서버에서 실행하고 네트워크 손실이 감지되면 경로를 삭제하지만 검색 시 다시 추가하지 않는 것이 좋습니다. 연결이 다시 활성화됩니다.
특정 질문에 답변하려면:
분실되었지만 현재 발견된 네트워크에 대한 경로를 복구하도록 인터페이스를 구성하려면 어떻게 해야 합니까?
이는 애플리케이션에 대한 "네트워크 연결 끊김"이 무엇을 의미하는지, 그리고 복구가 무엇을 의미하는지에 따라 다릅니다. 인터페이스 링크 상태가 충분하면 실제로 다음 중 하나 ifplugd
또는 netplugd
이에 상응하는 것(원하는 것 또는 요구 사항에 가장 적합한 것)을 사용할 수 있습니다. post-up
항상 존재하는 "ifupdown" VLAN 인터페이스와 연결된 경우 명령은 마스터 장치에 충분하거나 마스터 장치의 운명을 따르도록 구성됩니다.