Raspberry-Pi
Linux ppp0 和預設路由以及如何訪問公共網際網路
我的項目需要移動網際網路。我試圖通過使用帶有 M2M sim(公共 IP,無 NAT)的 LTE 棒式調製解調器來實現這一點
這在 ubuntu (5.3.0-29-generic) 上執行良好,但我無法在 Raspbian Buster (4.19.97+) 上執行
Feb 11 22:31:48 raspberrypi systemd[1]: Reloading. Feb 11 22:31:51 raspberrypi systemd[1]: getty@tty1.service: Current command vanished from the unit file, execution of the command list won't be resumed. Feb 11 22:31:51 raspberrypi systemd[1]: serial-getty@ttyAMA0.service: Current command vanished from the unit file, execution of the command list won't be resumed. Feb 11 22:32:00 raspberrypi systemd[1]: Reloading. Feb 11 22:32:41 raspberrypi pppd[699]: pppd 2.4.7 started by root, uid 0 Feb 11 22:32:41 raspberrypi pppd[699]: Using interface ppp0 Feb 11 22:32:41 raspberrypi pppd[699]: Connect: ppp0 <--> /dev/ttyUSB1 Feb 11 22:32:41 raspberrypi NetworkManager[288]: <info> [1581460361.7138] manager: (ppp0): new Ppp device (/org/freedesktop/NetworkManager/Devices/5) Feb 11 22:32:42 raspberrypi pppd[699]: CHAP authentication succeeded: Welcome!! Feb 11 22:32:42 raspberrypi pppd[699]: CHAP authentication succeeded Feb 11 22:32:42 raspberrypi pppd[699]: Could not determine remote IP address: defaulting to 10.64.64.64 Feb 11 22:32:42 raspberrypi pppd[699]: not replacing default route to eth0 [192.168.0.1] Feb 11 22:32:42 raspberrypi pppd[699]: local IP address 10.217.44.214 Feb 11 22:32:42 raspberrypi pppd[699]: remote IP address 10.64.64.64 Feb 11 22:32:42 raspberrypi pppd[699]: primary DNS address 109.249.185.224 Feb 11 22:32:42 raspberrypi pppd[699]: secondary DNS address 109.249.186.32 Feb 11 22:32:42 raspberrypi NetworkManager[288]: <info> [1581460362.2378] device (ppp0): state change: unmanaged -> unavailable (reason 'connection-assumed', sys-iface-state: 'external') Feb 11 22:32:42 raspberrypi NetworkManager[288]: <info> [1581460362.3090] device (ppp0): state change: unavailable -> disconnected (reason 'none', sys-iface-state: 'external') Feb 11 22:35:30 raspberrypi pppd[699]: Terminating on signal 15 Feb 11 22:35:30 raspberrypi pppd[699]: Connect time 2.8 minutes. Feb 11 22:35:30 raspberrypi pppd[699]: Sent 0 bytes, received 0 bytes. Feb 11 22:35:30 raspberrypi NetworkManager[288]: <info> [1581460530.4393] device (ppp0): state change: disconnected -> unmanaged (reason 'connection-assumed', sys-iface-state: 'external') Feb 11 22:35:30 raspberrypi pppd[699]: Connection terminated.
為此,我嘗試將 wvdial 與這些設置一起使用
[Dialer Defaults] Auto DNS = yes Init1 = ATZ+CFUN=1 Init2 = ATH Init3 = ATE1 Init3 = AT+CGDCONT=1,"IP","EEM2M" Stupid mode = 1 Baud = 9600 Dial Command = ATD Modem = /dev/ttyUSB1 ISDN = 0 Phone = *99# Password = bt Username = bt
NetworkManager.conf 有這個內容
[main] plugins=ifupdown,keyfile [ifupdown] managed=false
ppp/resolv.conf 有這個內容
nameserver 109.249.185.224 nameserver 109.249.186.32
我認為這是由設置設置的(請參閱上面的日誌)
最後但並非最不重要的一點是,這表明我在 wvdial 執行後執行 ifconfig -a 時。請注意,ppp0 中的 6 個數據包是到 10.217.44.214 的內部 ping
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 192.168.0.12 netmask 255.255.255.0 broadcast 192.168.0.255 inet6 fe80::b435:fc5d:b267:a226 prefixlen 64 scopeid 0x20<link> ether 00:e0:92:00:15:f3 txqueuelen 1000 (Ethernet) RX packets 299 bytes 30739 (30.0 KiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 269 bytes 36598 (35.7 KiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536 inet 127.0.0.1 netmask 255.0.0.0 inet6 ::1 prefixlen 128 scopeid 0x10<host> loop txqueuelen 1000 (Local Loopback) RX packets 4 bytes 156 (156.0 B) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 4 bytes 156 (156.0 B) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 ppp0: flags=4305<UP,POINTOPOINT,RUNNING,NOARP,MULTICAST> mtu 1500 inet 10.217.44.214 netmask 255.255.255.255 destination 10.64.64.64 ppp txqueuelen 3 (Point-to-Point Protocol) RX packets 6 bytes 66 (66.0 B) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 7 bytes 129 (129.0 B) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 wwan0: flags=4098<BROADCAST,MULTICAST> mtu 1500 ether 00:1e:10:1f:00:00 txqueuelen 1000 (Ethernet) RX packets 0 bytes 0 (0.0 B) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 0 bytes 0 (0.0 B) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
編輯1:當以root身份執行wvdial時,我得到這個:
--> WvDial: Internet dialer version 1.61 --> Initializing modem. --> Sending: ATZ+CFUN=1 OK --> Sending: ATH OK --> Sending: AT+CGDCONT=1,"IP","EEM2M" OK --> Modem initialized. --> Sending: ATD*99# --> Waiting for carrier. CONNECT 150000000 --> Carrier detected. Starting PPP immediately. --> Starting pppd at Tue Feb 11 23:01:49 2020 --> Pid of pppd: 1281 --> Using interface ppp0 --> pppd: X?C[01]X?C[01] --> pppd: X?C[01]X?C[01] --> pppd: X?C[01]X?C[01] --> pppd: X?C[01]X?C[01] --> pppd: X?C[01]X?C[01] --> pppd: X?C[01]X?C[01] --> local IP address 10.217.44.214 --> pppd: X?C[01]X?C[01] --> remote IP address 10.64.64.64 --> pppd: X?C[01]X?C[01] --> primary DNS address 109.249.185.224 --> pppd: X?C[01]X?C[01] --> secondary DNS address 109.249.186.32 --> pppd: X?C[01]X?C[01]
我還注意到,當 wvdial 執行時,NetworkManager 將在 /etc/resolv.conf 中載入正確的 DNS,改變
# Generated by NetworkManager nameserver 194.168.4.100 nameserver 194.168.8.100
到
nameserver 109.249.185.224 nameserver 109.249.186.32 # Generated by NetworkManager
面對類似的問題,
sudo route add default ppp0
為我工作。
如果您需要該過程自動化,您可以在 /etc/ppp/ip-up.d 中創建一個腳本,它會在設置連接時執行。