복잡한 네트워크 설정이있는 경우 ' 호스트 경로가 없습니다 ”새 인터페이스를 올린 후 표시되기 시작합니다. 이는 기본 경로가 변경되거나 삭제되기 때문에 자주 발생합니다.
기본 경로를 확인하려면 다음을 입력하십시오.
ip 경로 쇼
위와 같이 3 개의 물리적 인터페이스가 있는데 하나는 외부를 향하고 2 개는 내부 네트워크를 향합니다. 연결이 재설정 될 때 기본 경로가 네트워크에서 삭제되어 나머지 네트워크가 정상적으로 작동하고이 컴퓨터 만 인터넷에 도달 할 수있는 위치를 알지 못합니다.
컴퓨터가 인터넷에 연결할 수 있으려면 다음 명령으로 추가 할 수있는 기본 경로가 있어야합니다.
sudo ip route add default via 136.63.176.1
이 문제가 한두 번 이상 발생하면 성가신 일이 될 수 있으므로 상황을 신속하게 수정하기 위해 몇 가지 쉘 스크립트를 작성했습니다.
첫 번째 스크립트는 현재 IP를 가져옵니다. $ INTF를 STDIN으로 설정했습니다. 인터페이스 이름을 입력하지 않으려면 특정 인터페이스로 변경합니다.
좋아하는 텍스트 편집기를 사용하여 vim을 좋아하고 내 홈 디렉토리에 소스 폴더가 있습니다.
mkdir ~ / src && cd ~ / src
getip.sh 왔어요
#! / bin / bash
# 주어진 기기에 설정된 IP 주소 가져 오기
INTF = $ {1}
PTH = (~ / src /)
TMP_IP2 선언
TMP_IP2 = $ (ip a | grep $ {INTF} | grep inet | cut -d””-f6 | cut -d“/”-f1> $ {PTH} current _ $ {INTF} .ip)
ip a | grep $ {INTF} | grep inet | cut -d””-f6 | cut -d“/”-f1 | cut -d”.” -f1-3 | awk‘{print $ 0 ″ .0 / 24 ″}’> $ {PTH} net _ $ {INTF} .ip
ip a | grep $ {INTF} | grep inet | cut -d””-f6 | cut -d“/”-f1 | cut -d”.” -f1-3 | awk‘{print $ 0 ″ .1 ″}’> $ {PTH} gw _ $ {INTF} .ip
TMP_IP 선언
TMP_IP = $ (고양이 $ {PTH} current _ $ {INTF} .ip)
echo '현재 wan ip $ TMP_IP'
저장하고 종료하고 실행 가능하게 만든 다음 테스트하십시오.
sudo chmod a + x getip.sh
bash getip.sh eth0.2
제대로 작동했다고 가정하고 / usr / local / bin /에 복사하여 전역 적으로 실행 가능하게 만드십시오.
sudo cp getip.sh / usr / local / bin / getip
이제 간단히 getip eth0.2를 입력하면 ip가 반환됩니다.
두 번째 스크립트는 기본 경로를 할당하고 첫 번째 스크립트를 실행합니다.
나는 setip.sh에서 왔습니다.
#! / bin / bash
getip $ {1}
# 주어진 기기에 설정된 IP 주소 가져 오기
PTH = (~ / src /)
RT_IP 선언
RT_IP = $ (고양이 $ {PTH} gw _ $ {1} .ip)
$ RT_IP를 통한 IP 경로 변경 기본값
$ RT_IP를 통해 IP 경로 추가 기본값
echo 'ip 경로 — $ RT_IP를 통한 기본값'
저장하고 종료하십시오. 내가 기본 경로를 변경하고 추가하는 것을 눈치 챘을 수 있습니다. 이것은 잘못된 게이트웨이를 설정 한 경우입니다.
sudo chmod a + x setip.sh
sudo setip.sh eth0.2
라우팅 테이블을 다시 확인하여 모든 것이 정상인지 다시 확인할 수 있습니다.
sudo ip 경로 쇼
전역 적으로 실행 가능하게하려면 스크립트를 / usr / local / bin /에 복사 할 수 있습니다. 수정하고 인터페이스하기 때문에 여전히 sudo가 필요합니다.
2 분 읽기sudo cp setip.sh / usr / local / bin / setip