우분투에서 네트워크 연결 우선 순위를 어떻게 설정합니까?


41

Ubuntu 11.04 시스템이 WiFi와 3G에 동시에 연결된 경우 우선 응용 프로그램 (브라우저 등)이 WiFi를 사용하도록 우선 순위를 어떻게 설정합니까? 사용할 수없는 경우 3G를 사용해야합니다.

기본적으로 네트워크 연결이 사용되는 순서를 설정하고 싶습니다.

편집 : 나는 우분투 / 리눅스의 전문가가 아닌 편안하고 편한 사람들에게 유용한 더 쉬운 접근 방법을 찾고 있습니다.

답변:


27

아무도 이것을 수행하는 가장 간단한 명령을 언급하지 않은 것에 놀랐습니다 ifmetric. 를 사용하여 설치할 수 있습니다 sudo apt-get install ifmetric. 이 명령은 모든 인터페이스의 메트릭을 변경하는 데 사용할 수 있습니다. 낮은 메트릭 인터페이스 바람직하다 인터넷 용.

이를 사용하려면 먼저 route다음 명령을 사용하여 메트릭을 확인하십시오 .

$ route -n

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         10.42.0.1       0.0.0.0         UG    100    0        0 eth0
0.0.0.0         10.42.0.2       0.0.0.0         UG    600    0        0 wlan0

여기에서 eth0측정 항목이 더 낮으므로보다 선호됩니다 wlan0. 를 원하면 wlan0측정 항목을 낮추십시오.

sudo ifmetric wlan0 50

이제 라우팅 테이블은 다음과 같습니다.

$ route -n

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         10.42.0.2       0.0.0.0         UG    50     0        0 wlan0
0.0.0.0         10.42.0.1       0.0.0.0         UG    100    0        0 eth0

이제 리눅스는 wlan0인터넷에 사용될 것 입니다. 변경 사항이 즉시 반영됩니다.


1
좋은 대답입니다. Thx (라우트 -n에도 해당) 메트릭을 변경하는 명령에 대해 ifmetric을 설치 한 후 재부팅해야했습니다
Thorsten Niehues

이 변경을 영구적으로 만드는 방법 (실수로 내 아이폰 핫스팟을 사용하고 싶지 않다)
Thorsten Niehues

2
@ThorstenNiehues : 영구적으로 만들기 위해 내 마음에 오는 빠른 해결책은 crontab에 ifmetric 명령을 crontab -e추가 한 다음 끝에 줄을 추가하는 것 @reboot sudo ifmetric wlan0 50입니다.
shivams

작동합니다. 그러나 (예 : 브라우저를 통해)이 후에 로컬 컴퓨터에 액세스 할 수 없습니다. 어떤 생각? 감사.
tomasb

@tomasb : 흥미로운 의심. 그러나 인터페이스 기본 설정을 변경하면 기본 인터페이스의 로컬 네트워크로 연결되므로 예상됩니다. 로컬 컴퓨터에 액세스하는 간단한 방법 중 하나는 가상 컴퓨터를 사용하여 로컬 컴퓨터에 액세스하는 것입니다. 그러나 더 나은 솔루션이 존재해야합니다. 생각하고 대답하겠습니다.
shivams

14

메트릭 설정은 우선 순위를 변경하는 방법입니다. 높은 메트릭은 사용하기에 "고가"이므로 트래픽을 라우팅해야하는 경우 OS는 메트릭이 가장 낮은 인터페이스를 사용합니다. 낮은 메트릭 인터페이스가 종료 된 경우 특정 네트워크 / 대상으로 트래픽을 라우팅하는 데 사용할 수있는 유일한 인터페이스이므로 높은 메트릭 인터페이스를 사용합니다.

메트릭은 / etc / network / interfaces 파일에 지정되어 있으며 링크 포인트는 설명서를 가리 킵니다.

텍스트 편집기를 사용하여 파일을 편집하고 네트워크를 식별 한 다음 metric매개 변수를 변경 하고 저장하십시오. 재부팅은 네트워크 서비스 재시작에 대한 자세한 정보를 얻지 않고 모든 값을 재설정하는 가장 간단한 방법입니다.


2
Harry-응답 주셔서 감사합니다. eth1에 관심이있는 네트워크는 "ifconfig"에 표시되지만 "/ etc / network / interfaces"에는 표시되지 않습니다. "ifconfig"와 "/ etc / network / interfaces"에 무엇이 표시됩니까?
Praveen Sripati

1
"/ etc / network / interfaces"에 eth0을 추가하는 것이 더 위험합니다. 인터페이스에 대한 메트릭을 변경하기 위해 ifconfig를 루트로 시도 할 수 있습니다 (부팅 후에 유지되는지 확인).
harrymc

'sudo ifconfig eth1 metric 4'를 실행하면 'SIOCSIFMETRIC : Operation not supported'라는 오류가 발생합니다. goo.gl/UhXBJ 는 또한 '모든 시스템이 메트릭 인수를 사용하는 것은 아닙니다. ..... Linux 시스템을 구성 할 때 각 인터페이스에 대해 명시적인 경로 명령을 추가합니다. "초보 사용자를위한 UI에서와 같이 Ubuntu에는 직접적인 접근 방식이없는 것 같습니다.
Praveen Sripati

2
Linux는 모든 어댑터에서 빠른 속도 테스트 후 가장 빠른 어댑터를 결정하는 것처럼 보입니다. 많은 배포에서 메트릭이 더 이상 지원되지 않습니다. 여전히 "/ etc / network / interfaces"를 통해 시도하고 지시 할 수는 있지만 얼마나 성공적인지 모르겠습니다. 이 질문 도 참조하십시오 .
harrymc

3
모든 사람이하는 가장 간단한 해결책은 사용하지 않으려는 인터페이스를 끄거나 "네트워크의 리소스에만이 연결 사용"으로 제한하는 것입니다. 동일한 라우터).
harrymc

7
  1. 일반 트래픽에 대한 인터페이스 우선 순위는 라우팅 메트릭을 조작하여 수행됩니다. 각 경로에는 홉 수 및 대역폭과 같은 관련 매개 변수가 있습니다. route명령 에 대해서는 맨 페이지의 "metric"옵션을 참조하십시오 .

    $ route -n
    Kernel IP routing table
    Destination     Gateway         Genmask         Flags Metric Ref     Use Iface
    0.0.0.0         192.168.1.254   255.255.255.255 U     0      0        0 eth0
    192.168.1.0     0.0.0.0         255.255.255.0   U     256    0        0 eth0
    
  2. 네트워크 리소스에 대한 응용 프로그램 액세스 우선 순위는 종종 "트래픽 셰이핑"을 통해 해결됩니다. 웹 검색 엔진을 사용하여 Ubuntu 또는 라우터가이를 수행 할 수 있는지 확인합니다.


각주.

Linux가 아닌 MS Windows에서는 netstat -nr명령이와 동일한 정보를 출력합니다 route print. 라우팅 메트릭을 포함합니다.


루트 "Metric '대상까지의 거리"(보통 홉으로 계산)의 맨 페이지에서 최근 커널에서는 사용되지 않지만 라우팅 데몬에서는 필요할 수 있습니다. 일반 Ubuntu Desktop에서 Metric 매개 변수가 영향을 미치는지 확실하지 않습니다.
Praveen Sripati

1
이 작업을 수행하는 특정 경로 명령을 알려주시겠습니까?
Praveen Sripati

11
@PraveenSripati-당신이 그러한 답변에 대해 100 번 열심히 노력한 담당자를 믿지 않았습니다-기술적으로 정확하지만 당신이나 나에게 도움이되지 않습니다. :-( 나는 또한 특정한 명령을 찾고 있습니다.
Lord Loh.

1
정말 무슨 대답 ?? 또한 netstat -nr은 메트릭을 표시하지 않습니다. @shivams
Thorsten Niehues의

3

실제로 시도하지는 않았지만 NCD (Network Configuration Daemon-1)를이 목적으로 사용할 수 있습니다. 이 사이트는 네트워크 구성을 쉽게한다고 주장합니다. 문법이 간단 해 보입니다.

# 일부 네트워크 연결을 기다립니다. eth1을 eth0 앞에 두어 eth1을 선호하십시오.
list ( "NET-eth1", "NET-eth0") pnames;

(1) -http : //code.google.com/p/badvpn/wiki/NCD


네 말이 맞아, 내 NCD 소프트웨어가 이것을 훌륭하게 수행한다. 이 예제는있는 그대로 작동합니다. 그러나 pnames목록은 실제로 multidepend()다음 줄 의 진술에 대한 인수 일뿐 입니다. 이것이 우선 순위를 구현하는 것입니다. 이 뒤에 메커니즘은 때이다 eth1할 때 등장 eth0이미, 그것을 실행 multiprovide("NET-eth1");하기 때문에, NET-eth1앞에있는 NET-eth0, multidepend()내려 가서까지 즉시 돌아올 있지만에서 변수를 노출하는 것 eth1대신에 공정 eth0.
Ambroz Bizjak

나는 그것을 보았지만 알아낼 수 없었다. 이것은 어렵지 않아야합니다.
SDsolar 2016 년

3

이것은 모두 루트 메트릭 때문입니다. 메트릭이 가장 낮은 기본 경로를 삭제 한 다음 메트릭이 더 높은 이전 경로를 복원하려고합니다. 아래 명령을 따르십시오.

라우팅 테이블이 다음과 같다고 가정 해 보겠습니다.

# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         10.16.87.254    0.0.0.0         UG    100    0        0 ens38
0.0.0.0         192.168.151.2   0.0.0.0         UG    101    0        0 ens33
10.16.86.64     0.0.0.0         255.255.255.248 U     100    0        0 ens38
10.16.87.254    0.0.0.0         255.255.255.255 UH    100    0        0 ens38
10.16.88.6      10.16.87.254    255.255.255.255 UGH   100    0        0 ens38
169.254.0.0     0.0.0.0         255.255.0.0     U     1000   0        0 ens38
192.168.151.0   0.0.0.0         255.255.255.0   U     100    0        0 ens33

이제 기본 게이트웨이를 삭제하십시오.

# route delete default gateway

이제 이전 기본 게이트웨이를 복원하십시오 (이 경우 메트릭은 현재 기본 경로 101보다 높음).

# route add default gw 10.16.87.254 metric 102 dev ens38                                                              
# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.151.2   0.0.0.0         UG    101    0        0 ens33
0.0.0.0         10.16.87.254    0.0.0.0         UG    102    0        0 ens38
10.16.86.64     0.0.0.0         255.255.255.248 U     100    0        0 ens38
10.16.87.254    0.0.0.0         255.255.255.255 UH    100    0        0 ens38
10.16.88.6      10.16.87.254    255.255.255.255 UGH   100    0        0 ens38
169.254.0.0     0.0.0.0         255.255.0.0     U     1000   0        0 ens38
192.168.151.0   0.0.0.0         255.255.255.0   U     100    0        0 ens33

작동합니다. 다른 초보자를위한 참고 (나는 무슨 일이 일어 났는지에 따라이 몇 번을 읽을 수 있었다) : 제거합니다 위의 1 단계를 진입 Gateway= 10.16.87.254는 IS, UG가장 낮은에 Metric, 2 단계 풋 그것을 다시 더 높은와 Metric는 그래서 를 192.168.151.2사용할 수없는 경우 백업으로 계속 사용할 수 있습니다.
WillC

0

[업데이트] Ubuntu 18.04 LTS (서버) 기준 netplan으로 네트워크 관리를위한 기본 래퍼입니다. Netplan 구성은 기본적으로 YAML 파일을 통해 수행됩니다 /etc/netplan/01-netcfg.yaml(자세한 내용은 여기 참조 ).

라우팅 메트릭은 " metric"옵션으로 정의되며 양의 정수를 예상합니다 ( 100일반적으로 기본값 임). 참조 페이지 의 는 다음과 같습니다 .

network:
  version: 2
  renderer: networkd
  ethernets:
    eno1:
      addresses:
      - 10.0.0.10/24
      - 11.0.0.11/24
      nameservers:
        addresses:
          - 8.8.8.8
          - 8.8.4.4
      routes:
      - to: 0.0.0.0/0
        via: 10.0.0.1
        metric: 100
      - to: 0.0.0.0/0
        via: 11.0.0.1
        metric: 100

가장 낮은 metric경로 (경로 길이)가 "선호"게이트웨이가됩니다. (사용 : sudo netplan try변경을 활성화 하려면 )

로밍 환경 (다중 연결, 켜짐 및 꺼짐)에서 optional(부울) 매개 변수를 true(기본값은 false) 로 설정할 수 있습니다 .

network:
  version: 2
  ethernets:
    enred:
      dhcp4: yes
      dhcp4-overrides:
        route-metric: 100
    engreen:
      dhcp4: yes
      dhcp4-overrides:
        route-metric: 200
      # this is plugged into a test network that is often
      # down - don't wait for it to come up during boot.
      optional: true

DHCP 연결의 경우 경로 메트릭의 구문이 약간 다릅니다.

NetworkManager렌더러로 도 사용할 수 있습니다 (아직 테스트하지는 않았지만) GUI 도구를 통해 구성의 해당 부분을 보거나 편집 할 수 있다고 생각합니다.

renderer (스칼라)

이 정의에 지정된 네트워킹 백엔드를 사용하십시오. 현재 지원되는 networkdNetworkManager입니다. 이 속성은 networks:장치 유형 (예 :) ethernets:또는 특정 장치 정의에 대해 전체적으로로 지정할 수 있습니다 . 기본값은 networkd입니다.

(레퍼런스 페이지의 마지막 '큰'예제는 두 렌더러의 하이브리드 사용을 보여줍니다).

이 질문 (askubuntu) 도 참조하십시오 .

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