우분투 서버에서 고정 경로를 설정하는 방법?


51

우분투 8.10부터 우분투를 사용했습니다. 오늘 저는 우분투 12.04 서버와 함께 일하고 있습니다.

부팅시 고정 경로를 유지하는 데 어려움이 있습니다. 나는 보통 경로 명령을 넣을 것입니다

/sbin/route add -net <IP>/<MASK> <GW> dev <ethX>

/etc/rc.local또는 내가 (라는 이름의 파일을 생성 할 routes디렉토리 내부) /etc/network/if-up/,하지만 난 우분투 12.04에 작동하지 않는 것을 알 수 있습니다.

쉘에 명령을 입력하면 작동하지만 지정된 파일에있을 때 동일한 명령이 작동하지 않습니다.

routes우분투 12.04에서 내 파일 이름 ( )이 잘못 될 수 있다고 생각하면서 파일 이름을 다른 이름으로 변경하려고 시도했지만 작동하지 않았습니다.

또한 명령이 /sbin/ifconfig작동 한다는 것을 알았 습니다 /sbin/route.

네트워크 설정에서 변경된 사항은 무엇입니까?

Ubuntu 12.04에서 고정 경로를 어떻게 정의 할 수 있습니까?


확인하기 : rc.local이 실행 가능하고 shebang 라인으로 시작합니까? 명령에 문제가있을 수 있습니다. stderr을 파일 ( your_command > stderr.txt 2>&1)로 리디렉션 하고 출력을 검사 할 수 있습니다 .
Salem

/etc/rc.local이 아닌 / etc / network / interfaces에 경로를 설정해야합니다. 그리고 사용해야하는 새로운 명령은 ip addand ip route입니다. 그물을 지배하는 하나의 명령. :)
Anders

확실히 읽음man 5 interfaces
David Tonhofer

답변:


64

고정 경로를 /etc/network/interfaces다음에 넣을 수 있습니다 .

auto eth0
iface eth0 inet static
      address 192.168.1.2
      netmask 255.255.255.0
      up route add -net 192.168.0.0 netmask 255.255.0.0 gw 192.168.1.1
      up route add -net 172.16.0.0 netmask 255.240.0.0 gw 192.168.1.1

13
/ sbin / ip 구문 :up ip route add 192.168.0.0/24 via 192.168.1.1
w00t

1
답변의 마지막 두 줄을 친절하게 설명하거나 지식 소스에 대한 링크를 제공 하시겠습니까? 감사!
itsols

-net 192.68.0.0을 와일드 카드로 볼 수 있으며, 192.168. *. *로 향하는 모든 패킷은 기본 게이트웨이 192.168.1.1을 통해 라우팅되어야합니다. 그런 다음 커널은 기본 게이트웨이를 해결하려고 시도하지만 ARP 항목이 이미있는 경우 게이트웨이는 다음 홉의 대상 MAC과 게이트웨이가 있다는 것을 알게 된 인터페이스로 패킷을 보냅니다. 희망이 조금 도움이됩니다.
Neil McGill 2016 년

/etc/network/interfaces.d/도 있는데 경로를 배치하기에 더 좋은 곳일 수 있습니다.
Elijah Lynn

이것은 작동하지만 네트워크 인터페이스에 대한 매뉴얼 페이지에는 설명되어 있지 않습니다. 이 표준입니까?
BЈовић

18

정적 경로를 정의하는 올바른 위치가 / etc / network / interfaces에 있다는 것을 매우 자주 발견했습니다. 예를 들어 /etc/init.d/networking restart를 사용하여 네트워크를 전체적으로 다시 시작하려는 경우 괜찮습니다. 그러나 ifdown 및 ifup을 사용하여 인터페이스를 개별적으로 종료하려는 경우 ifup은 오류로 끝납니다.

ifup eth1

RTNETLINK answers: File exists
Failed to bring up eth1.

이로 인해 경로를 정의하려고하지만 이미 정의되어 있습니다. 어쨌든 인터페이스는 작동하지만 ifup은 / run / network / ifstate를 업데이트하지 않으므로 다음에 ifdown을 수행하면 --force 플래그를 사용하지 않으면 인터페이스를 수행 할 수 없습니다.

경로가 이미 정의되어 있어도 ifup을 계속 구성하려면 / etc / network / interfaces에서 경로를 정의 할 때이 형식을 사용할 수 있습니다

up ip route add 172.16.0.0/24 via 192.168.10.1 || true
up ip route add 192.168.0.0/16 via 192.168.10.1 || true

이렇게하면 출력에 경고가 표시되지만 인터페이스 구성이 완료됩니다.

ifup eth1

RTNETLINK answers: File exists
RTNETLINK answers: File exists
ssh stop/waiting
ssh start/running, process 18553

1
왜 단순히 192.168.10.1을 통해 192.168.0.0/16의 다운 IP 경로를 구성에 추가하지 않습니까?
w00t

사람들은 ifconfig을 실행하는 대신 수동으로 사용하는 것과 같은 작업을 수행 ifdown하므로 올바른 도구를 사용하여 복구 할 수 있기를 원합니다. 따라서 해당 도구가 상태를 수정하려고 할 때 예기치 않은 상태로 복원력이 있으면 도움이됩니다. || true제안은 좋은 것입니다. 다운 라인을 추가 너무 것은 도움이된다.
Phil P

5
임의 사용자 : ip 명령에서 "add"대신 "replace"를 사용하십시오. 예 : up ip route replace 172.16.0.0/24 via 192.168.10.1"바꾸기"는 경로가 아직 없으면 경로를 추가하지만 동일한 선택기가있는 경로는 경로가 동일한 경우에도 현재 경로로 바뀝니다.
Xen2050

9

이것을 시도 할 수 있습니다 (에 추가하십시오 /etc/network/interfaces). 이것은 경로를 설정하는 거의 완전한 방법입니다.

auto eth0
iface eth0 inet static
    post-up /sbin/route add -net 192.168.0.0 netmask 255.255.0.0 gw 192.168.1.1
    post-up /bin/mount -t nfs 192.168.0.203:/motd/ /motd/

6

우분투 에는 ifupdown-extra 패키지가 있습니다 .
자동 스크립트 (에 설치됨 /etc/network/*/)를 제공하며이 중 하나는 정적 경로를 추가하는 데 사용됩니다.

이 구성 파일은 /etc/network/routes

이 구성 파일의 상단에는 좋은 설명이 있습니다.

이 구성 파일은 정적 인터페이스 if-updown 스크립트 및 /etc/init.d/networking-routes 스크립트에서 읽어 특정 인터페이스 또는 글로벌 경로와 연관된 경로 목록을 설정합니다.

내가 사용하는 예제 경로는 다음과 같습니다.

192.168.240.0 255.255.255.0 192.168.130.3 em3

1

우리를 위해 일한 것은

sudo route add -net 192.168.0.2/32 gw 192.168.1.1 netmask 255.255.0.0

나는 Mac에서 실행했었다 :

sudo route -n add -net 192.168.0.2/32 192.168.1.1

그러나 우분투에서 IP와 마지막 "netmask"부분 사이의 "gw"가 누락되었습니다 (우분투에서 -n도 필요하지 않음)


10
이 임시 (비 지속적인 가상) 경로에 대해 완벽하게 작동, 문제는 경로를 지속적으로 얻기에 관하여이다
anneb을

0

사용하는 것을 선호합니다 nmcli.

nmcli device modify <device-name> ipv4.routes "<ip>/<mask> <gw>" ipv4.route-metric 25

예를 들면 다음과 같습니다.

nmcli device modify wlp2s0 ipv4.routes "1.1.1.0/24 192.168.0.1" ipv4.route-metric 25

그런 다음 NetworkManager 서비스를 다시 시작하여 변경 사항을 적용하십시오.

sudo systemctl restart NetworkManager.service

0

를 사용 nmcli하여 영구 솔루션을 실행할 수있었습니다 (@isapir 솔루션이 장치에서 작동하지 않았습니다).

sudo nmcli connection modify <conection-name> +ipv4.routes "<ip>/<mask> <gw> <mt>"

예를 들면 다음과 같습니다.

sudo nmcli connection modify ssid-name +ipv4.routes "1.1.1.0/24 192.168.0.1 100"

그런 다음 연결을 껐다가 다시 설정하여 변경 사항을 적용 할 수 있습니다 (전체 NetworkManager를 다시 시작할 필요가 없음).

sudo nmcli con down ssid-name ; sudo nmcli con up ssid-name

현재 연결을 확인하려면 다음을 수행하십시오.

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