물리적 연결이 끊어지면 네트워크 인터페이스를 종료하세요.

물리적 연결이 끊어지면 네트워크 인터페이스를 종료하세요.

두 개의 네트워크 카드가 있는 헤드리스 데비안 서버가 있습니다:

2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT qlen 1000
    link/ether 01:02:1d:54:7c:01 brd ff:ff:ff:ff:ff:ff
2: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT qlen 1000
    link/ether 01:02:1d:54:7e:01 brd ff:ff:ff:ff:ff:ff

연결된 케이블을 분리하면 eth1포트가 다운되지만 관리 관점에서는 계속 켜져 있습니다.

2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT qlen 1000
    link/ether 01:02:1d:54:7c:01 brd ff:ff:ff:ff:ff:ff
2: eth1: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast state DOWN mode DEFAULT qlen 1000
    link/ether 01:02:1d:54:7e:01 brd ff:ff:ff:ff:ff:ff

이는 연결된 경로가 eth1여전히 라우팅 테이블에 존재한다는 것을 의미합니다. eth1물리적으로 연결이 끊어진 후 관리 종료를 강제로 수행할 수 있는 방법이 있습니까?

답변1

빠르고 더러운 해결책은 ip monitor"ifupdowns" 인터페이스가 있는 스크립트를 사용하는 것입니다.

스크립트는 다음과 같습니다:

#!/bin/sh

ip monitor link | while IFS=':' read num name status; do
    read extraline # iproute2 outputs physical address on a separate line.
    newstate=$(echo "$status"|awk -F' ' '{print $NF}')
    if [ "$newstate" = "UP" ]; then
        ifup "$name"
    elif [ "$newstate" = "DOWN" ]; then
        ifdown "$name"
    fi
done

스크립트는 변경을 시도하기 전에 네트워크 인터페이스 상태를 확인하지 않지만 이는 문제가 되지 않습니다.

사용하려면 에 넣고 /opt/bin/linkmonitor.sh실행 가능하게 만든 다음 chmod +x /opt/bin/linkmonitor.sh끝에 앰퍼샌드를 추가하세요./etc/rc.local

/opt/bin/linkmonitor.sh &

보다 강력한 솔루션이 필요한 경우 다음 사항에 관심이 있을 수 있습니다.라우팅 장애 조치해결책.

관련 정보