수정 : 여러 네트워크가있는 Ubuntu에서 호스트에 대한 경로 없음 실패



문제를 제거하기 위해 도구를 사용해보십시오

복잡한 네트워크 설정이있는 경우 ' 호스트 경로가 없습니다 ”새 인터페이스를 올린 후 표시되기 시작합니다. 이는 기본 경로가 변경되거나 삭제되기 때문에 자주 발생합니다.



기본 경로를 확인하려면 다음을 입력하십시오.



ip 경로 쇼



host-1에 대한 경로 없음

위와 같이 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

호스트 -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

호스트 -3에 대한 경로 없음

라우팅 테이블을 다시 확인하여 모든 것이 정상인지 다시 확인할 수 있습니다.

sudo ip 경로 쇼

전역 적으로 실행 가능하게하려면 스크립트를 / usr / local / bin /에 복사 할 수 있습니다. 수정하고 인터페이스하기 때문에 여전히 sudo가 필요합니다.

sudo cp setip.sh / usr / local / bin / setip

2 분 읽기