내 RPi는 4G USB 어댑터를 통해 인터넷에 연결되어 있으며 모뎀 연결은 /dev/ttyUSB0을 사용하여 NetworkManager(Raspbian/debian 10)에서 관리됩니다. OpenVPN 터널도 활성화했습니다. 이제 이더넷 eth0(케이블을 통한 Wi-Fi AP)을 통해 이 인터넷 연결을 공유하고 싶습니다. 그래서 새로운 NetworkManager 연결을 추가했습니다 nmcli connection add type ethernet ifname eth0 ipv4.method shared con-name ethShared
. 그러나 eth0에 무엇이든 연결하면 NetworkManager가 어떤 이유로 eth0을 통해 기본 게이트웨이를 추가하기 때문에 RPi의 인터넷 액세스가 끊어집니다.
root@rpi3meteo:~# ip route
default dev eth0 scope link src 169.254.15.88 metric 202
default via 100.94.218.129 dev wwan0 proto static metric 700
10.5.6.0/24 via 10.5.6.5 dev tun0
10.5.6.5 dev tun0 proto kernel scope link src 10.5.6.6
10.42.0.0/24 dev eth0 proto kernel scope link src 10.42.0.1 metric 100
100.94.218.128/25 dev wwan0 proto kernel scope link src 100.94.218.191 metric 700
169.254.0.0/16 dev eth0 scope link src 169.254.15.88 metric 202
또한 어떤 이유로 eth0은 2개의 IP 주소, 즉 10.42.0.1(내부 DHCP 서버에서도 사용됨)과 169.254.15.88(가짜 라우팅 테이블 항목에 사용됨)을 얻었습니다. 169.254.0.0/16이 로컬 링크이고 DHCP 서버 없이 사용할 수 있다는 것을 알고 있지만 NetworkManager가 이를 "공유" 유형 연결로 구성하는 이유를 모르겠습니다. 이 연결에는 NetworkManager가 자동으로 제공하는 DHCP가 있습니다.
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether b8:27:eb:20:80:80 brd ff:ff:ff:ff:ff:ff
inet 10.42.0.1/24 brd 10.42.0.255 scope global noprefixroute eth0
valid_lft forever preferred_lft forever
inet 169.254.15.88/16 brd 169.254.255.255 scope global noprefixroute eth0
valid_lft forever preferred_lft forever
3: wwan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN group default qlen 1000
link/ether 00:1e:10:1f:00:00 brd ff:ff:ff:ff:ff:ff
inet 100.94.218.191/25 brd 100.94.218.255 scope global noprefixroute wwan0
valid_lft forever preferred_lft forever
4: tun0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN group default qlen 100
link/none
inet 10.5.6.6 peer 10.5.6.5/32 scope global tun0
valid_lft forever preferred_lft forever
가짜 경로를 수동으로 제거하자 RPi 및 Wifi 클라이언트에 대한 인터넷 액세스가 작동하기 시작했습니다 route del default dev eth0
. 하지만 라즈베리파이는 원격 위치에 있기 때문에 재부팅 후에도 수동 개입 없이 작동해야 합니다.
매개변수 설정을 시도했지만 ipv4.never-default
도움이 되지 않습니다. 또한 IP 주소 범위를 수동으로 설정해 보았습니다 ipv4.addresses
. 기본 경로( ipv4.route-metric
)와 DNS( ) 의 우선 순위를 변경하는 해결 방법도 찾았 ipv4.dns-priority
지만 아직 테스트할 시간은 없지만 애초에 이런 일이 발생하지 않도록 방지하거나 NetworkManager를 사용하는 데 더 관심이 있습니다. 매일 경로 삭제 이 작업은 연결이 처음 활성화될 때 자동으로 발생합니다.
connection.id: ethShared
connection.stable-id: --
connection.type: 802-3-ethernet
connection.interface-name: eth0
connection.autoconnect: yes
connection.autoconnect-priority: 0
connection.autoconnect-retries: -1 (default)
connection.multi-connect: 0 (default)
connection.auth-retries: -1
connection.master: --
connection.slave-type: --
connection.autoconnect-slaves: -1 (default)
connection.secondaries: --
connection.gateway-ping-timeout: 0
connection.metered: unknown
connection.lldp: default
connection.mdns: -1 (default)
connection.llmnr: -1 (default)
802-3-ethernet.port: --
802-3-ethernet.speed: 0
802-3-ethernet.duplex: --
802-3-ethernet.auto-negotiate: no
802-3-ethernet.mac-address: --
802-3-ethernet.cloned-mac-address: --
802-3-ethernet.generate-mac-address-mask:--
802-3-ethernet.mac-address-blacklist: --
802-3-ethernet.mtu: auto
802-3-ethernet.s390-subchannels: --
802-3-ethernet.s390-nettype: --
802-3-ethernet.s390-options: --
802-3-ethernet.wake-on-lan: default
802-3-ethernet.wake-on-lan-password: --
ipv4.method: shared
ipv4.dns: --
ipv4.dns-search: --
ipv4.dns-options: ""
ipv4.dns-priority: 0
ipv4.addresses: --
ipv4.gateway: --
ipv4.routes: --
ipv4.route-metric: -1
ipv4.route-table: 0 (unspec)
ipv4.ignore-auto-routes: no
ipv4.ignore-auto-dns: no
ipv4.dhcp-client-id: --
ipv4.dhcp-timeout: 0 (default)
ipv4.dhcp-send-hostname: yes
ipv4.dhcp-hostname: --
ipv4.dhcp-fqdn: --
ipv4.never-default: no
ipv4.may-fail: yes
ipv4.dad-timeout: -1 (default)
GENERAL.NAME: ethShared
GENERAL.DEVICES: eth0
GENERAL.STATE: activated
GENERAL.DEFAULT: yes
GENERAL.DEFAULT6: no
GENERAL.SPEC-OBJECT: --
GENERAL.VPN: no
GENERAL.ZONE: --
GENERAL.MASTER-PATH: --
IP4.ADDRESS[1]: 10.42.0.1/24
IP4.ADDRESS[2]: 169.254.15.88/16
IP4.GATEWAY: 0.0.0.0
IP4.ROUTE[1]: dst = 10.42.0.0/24, nh = 0.0.0.0, mt = 100
IP4.ROUTE[2]: dst = 169.254.0.0/16, nh = 0.0.0.0, mt = 202
IP4.ROUTE[3]: dst = 0.0.0.0/0, nh = 0.0.0.0, mt = 202
답변1
해결책을 찾지는 못했지만 적어도 작동하도록 하는 해결 방법을 찾았습니다. 이 제안에 따라 경로 표시기를 변경해 보았습니다.답변.
ipv4.route-metric
연결을 ethShared
더 높은 값(낮은 우선순위)으로 설정하면 169.254.15.88을 통한 가짜 경로에 전혀 영향을 주지 않으므로 아무런 효과가 없습니다.
그래서 결국 ipv4.route-metric
4G 모뎀 연결을 기본 700에서 99로 설정했습니다(이제 이더넷의 202 우선순위보다 더 높은 우선순위를 갖습니다).