모든 기본 게이트웨이를 제거하는 방법


13

사용자 정의 빌드 Linux 시스템을 실행 중이므로 모든 Linux 명령을 사용할 수있는 것은 아닙니다 .
네트워크 관련 명령을 실행하므로 명령을 실행하기 직전에 기본 게이트웨이 를 설정 한 다음 바로 해당 게이트웨이를 제거해야합니다.

그렇게하려면 모든 명령을 한 줄로 실행하십시오.

/sbin/route add default gw 10.10.10.10;my command;/sbin/route del default gw 10.10.10.10;

문제는 어떤 이유로 한 번 같은 컴퓨터에서 2 개의 기본 게이트웨이를 발견했기 때문에 테스트를 실행하기 전에 기본 게이트웨이를 설정해도 여전히 엉망이되어 테스트를 실행할 수 없기 때문에 모든 명령이 실패했습니다.

하나의 명령으로 모든 기본 게이트웨이 를 제거 하는 방법이 있습니까? 나는 많은 양의 머신을 가지고 있으며 모든 머신에 스크립트를 설치하는 것은 실용적이지 않습니다. 다음과 같은 간단한 명령이 필요합니다 .

/sbin/route del all default;set my default gw;mycommand;/sbin/route del all default;

지금까지 내가 찾은 것은 기본 게이트웨이 를 제거하는 명령 이지만 전부 /sbin/route del default작동하지는 않습니다.

/sbin/route help는 다음을 표시합니다

/sbin/route --help

Usage: route [{add|del|delete}]

Edit the kernel's routing tables

Options:
        -n      Don't resolve names
        -e      Display other/more information
        -A inet Select address family

답변:


17

ip대신에 를 사용 route하면 간단하게 실행할 수 있습니다.

ip route del 0/0

나는 그것이 모든 기본 경로를 잡는다고 생각합니다.


감사하지만 여전히 하나의 기본 게이트웨이 만 제거합니다.
— Muhammad Gelbana

4
그런 다음 첫 번째 제거가 모든 경로를 제거한다고 가정하지 않고 모든 기본 경로를 반복하여 제거해야합니다. 코드가 어떻게 든 깨져서 하나 이상의 기본 경로를 추가하는 것처럼 들립니다. 이것은 정상적인 상황이 아닙니다.
— jsbillings

나는 내 코드가 어느 시점에서 깨지는 것에 동의하지만 내가 가지고 있지 않은 많은 시간을 낭비하는 대신 GW를 수정하여 신속하게 해결할 수있을 것입니다. 도와 주셔서 정말로 고맙습니다.
— Muhammad Gelbana

이것은 현대 리눅스 전용입니다.
— jordanm


2

코드가 여러 개의 기본 게이트웨이로 중단되면 장치 당 여러 개의 IP 주소를 찾아야합니다.

이미받은 것처럼 여기에 대한 대답은 또 다른 방법은 당신이해야 같다 결코 당신이 / 실행 스크립트를 테스트 할 이유만으로 시스템의 구성을 변경하지 않습니다. 대신 네트워크 네임 스페이스를 사용하는 것은 어떻습니까. NS (네임 스페이스)에 가상 장치를 추가하는 방법에 대한 간단한 소개는 http://code.google.com/p/coreemu/wiki/Namespaces 를 참조 하십시오 .

test라는 네임 스페이스를 만들고이 네임 스페이스에서 명령을 실행하려면 다음을 실행하십시오.

ip netns add test
ip netns exec test COMMAND

여기서 COMMAND는 예를 들어 쉘 또는 서버 스크립트 일 수 있습니다.


2

모든 대답은 훌륭하지만 다른 접근 방식을 사용 하여이 문제를 해결했습니다. 명령을 사용하여 하나의 기본 게이트웨이 만 추가했지만 이미있는 경우 실패합니다. 따라서 결국 명령 끝에 잘못된 게이트웨이를 제거하십시오. 이것은 두 번째 isa에서 작동해야합니다.

ip route add default via my-gateway ip route del default

당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.