표적
이더넷 케이블을 연결할 때 무선보다 이더넷에 우선순위를 부여하세요.
방법
많은 인터넷 검색과 독서 끝에 다음과 같은 지점에 도달했습니다.믿다내가해야 할 일은 다음과 같습니다
nmcli connection modify [id-of-ethernet-interface] ipv4.route-metric 200
nmcli connection modify [id-of-ethernet-interface] ipv6.route-metric 200
여기서 200은 무선보다 이더넷에 우선순위를 부여하기 위한 무선 메트릭보다 낮은 값입니다.
결과
나를 혼란스럽게 하는 것은 위의 명령을 실행하고 재부팅한 후(좋은 측정을 위해) 얻은 보고서 route -n
와 이것이 내 목표를 달성하지 못하는 것 같다는 사실입니다.
$ route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 123.456.89.1 0.0.0.0 UG 600 0 0 wlp1s0
0.0.0.0 123.456.89.1 0.0.0.0 UG 20200 0 0 enp0s31f6
123.456.89.0 0.0.0.0 255.255.255.192 U 200 0 0 enp0s31f6
123.456.89.0 0.0.0.0 255.255.255.192 U 600 0 0 wlp1s0
654.321.0.0 0.0.0.0 255.255.0.0 U 1000 0 0 enp0s31f6
이 숫자는 내 명령 실행과 관련이 있지만
0.0.0.0 123.456.89.1 0.0.0.0 UG 20200 0 0 enp0s31f6
654.321.0.0 0.0.0.0 255.255.0.0 U 1000 0 0 enp0s31f6
첫 번째 줄에는 내가 설정한 200 값 앞에 20 접두사가 있습니다. 실행 중인 항목을 기준으로 측정항목 값을 nmcli
500 으로 변경하면 route -n
20500이 보고됩니다. 왜 이런 일이 발생합니까? 20200이나 20500이 아니라 200이나 500을 원한다고 말했기 때문에 틀린 것 같습니다.
두 번째 줄에는 측정값이 있는데, 그 값이 어디에서 왔는지 전혀 알 수 없으며 전혀 영향을 미칠 수 없는 것 같습니다. 누구든지 이것에 대해 밝힐 수 있다면 감사하겠습니다.
이러한 명령은 영향 지표 외에는 어떤 실질적인 결과도 생성하지 않는 것 같습니다. 이더넷이 우선순위인지 알 수 없으므로 그렇지 않다고 가정합니다.
기타 결과
궁금해서 작업하고 있는 것 같아요일부정도는 용도입니다 $ sudo ifmetric enp0s31f6 200
. 이것은 두세 가지 일을 합니다.
- 인터페이스의 메트릭에 영향을 미칩니다(
route -n
Iface가 있는 모든 라인에 대해 200 값을 보고함enp0s31f6
). - 이는 Ubuntu의 UI에 영향을 미칩니다(오른쪽 상단에는 명령에 제공한 측정항목 값에 따라 이더넷과 무선 아이콘 간의 시각적 전환이 표시됩니다
ifmetric
). - 그것때때로
NETLINK: Error: File exists
나에게 오류가 발생합니다. 동일한 명령의 후속 실행가능한또는가능한이 오류가 발생하지 않습니다
일부 시스템 정보
- 엘리트 노트북 850 G5
- 우분투18.04
- Ubuntu 설치는 설치 프로그램이 전체 디스크를 사용하고, 암호화를 활성화하고, 타사 드라이버 다운로드를 활성화하는 등의 방식으로 수행됩니다.
업데이트 #1
$ nmcli c show
NAME UUID TYPE DEVICE
Wired connection 2 [n/a] ethernet enp0s31f6
WiFi1 [n/a] wifi wlp1s0
$ route -n
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 [n/a] 0.0.0.0 UG 600 0 0 wlp1s0
0.0.0.0 [n/a] 0.0.0.0 UG 20200 0 0 enp0s31f6
[n/a] 0.0.0.0 255.255.255.192 U 200 0 0 enp0s31f6
[n/a] 0.0.0.0 255.255.255.192 U 600 0 0 wlp1s0
[n/a] 0.0.0.0 255.255.0.0 U 1000 0 0 enp0s31f6
답변1
여기에 많은 질문이 있습니다.
- 유선 LAN과 무선 LAN은 동일한 서브넷에 대한 브리지입니다.
123.456.89.0/24
- 이러한 네트워크에 동시에 연결하면 두 개의 기본 게이트웨이가 생깁니다(이는 일부 고급 라우팅으로 해결 가능
ip rules
) - Wi-Fi와 유선 연결 사이에 브리지가 있기 때문에 이러한 게이트웨이의 주소는 동일합니다.
이더넷에 연결될 때 Wi-Fi를 자동으로 비활성화하려면 다음과 같이 외부 스크립트를 사용해야 할 수도 있습니다.
스크립트를 만듭니다 /etc/NetworkManager/dispatcher.d/70-wifi-wired-exclusive.sh
. 콘텐츠:
#!/usr/bin/env bash
name_tag="wifi-wired-exclusive"
syslog_tag="$name_tag"
skip_filename="/etc/NetworkManager/.$name_tag"
if [ -f "$skip_filename" ]; then
exit 0
fi
interface="$1"
iface_mode="$2"
iface_type=$(nmcli dev | grep "$interface" | tr -s ' ' | cut -d' ' -f2)
iface_state=$(nmcli dev | grep "$interface" | tr -s ' ' | cut -d' ' -f3)
logger -i -t "$syslog_tag" "Interface: $interface = $iface_state ($iface_type) is $iface_mode"
enable_wifi() {
logger -i -t "$syslog_tag" "Interface $interface ($iface_type) is down, enabling wifi ..."
nmcli radio wifi on
}
disable_wifi() {
logger -i -t "$syslog_tag" "Disabling wifi, ethernet connection detected."
nmcli radio wifi off
}
if [ "$iface_type" = "ethernet" ] && [ "$iface_mode" = "down" ]; then
enable_wifi
elif [ "$iface_type" = "ethernet" ] && [ "$iface_mode" = "up" ] && [ "$iface_state" = "connected" ]; then
disable_wifi
fi
스크립트를 비활성화하려면 다음을 실행하십시오.touch /etc/NetworkManager/.wifi-wired-exclusive
답변2
나는 이것이 메트릭에 20000을 추가하여 액세스할 수 없다고 간주하는 연결에 페널티를 주는 NetworkManager라고 생각합니다. ~에서NetworkManager.conf 매뉴얼:
전역 연결이 없는 장치의 기본 경로는 경로 측정항목 +20000으로 페널티를 받습니다.
솔루션 1
옵션에 주석을 달거나 uri=
공백으로 남겨서 연결 확인을 비활성화할 수 있습니다 NetworkManager.conf
.
솔루션 2
net.ipv4.conf.all.rp_filter = 2
에 설정합니다 /etc/sysctl.conf
. 조심하다정보유출 취약점이 있을 수 있음.
배경
이것NetworkManager.conf 매뉴얼연결 확인이 실패할 수 있는 이유에 대한 간단한 설명이 있습니다.
배포판에 /proc/sys/net/ipv4/conf/*/rp_filter가 다음으로 설정되어 있을 수 있습니다.엄격한 필터링. SO_BINDDEVICE를 사용하여 모든 장치에 요청을 보내는 장치별 연결 확인에는 제대로 작동하지 않습니다. 엄격한 rp_filter 설정은 모든 응답을 거부하고 최상의 경로를 제외한 모든 연결 확인에 실패합니다.
내 배포판에는 엄격한 필터링이 활성화되어 있습니다.
$ /usr/sbin/sysctl net.ipv4.conf.all.rp_filter
net.ipv4.conf.all.rp_filter = 1
가치는 1
의미한다엄격한 필터링이것이 연결 확인에 실패하는 이유입니다. 시스템 사람들은 그것을 2
(느슨한 필터링) 로 변경했습니다.논란의 여지가 있는 제출소개한허점, 따라서 배포판에 의해 복원됩니다.