600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > [原创] 树莓派使用多个联通4G上网卡

[原创] 树莓派使用多个联通4G上网卡

时间:2021-02-28 07:46:55

相关推荐

[原创] 树莓派使用多个联通4G上网卡

需求 在树莓派上使用4G 上网卡上网.

以下内容都是在设备没有加入任何网络的情况下进行的.

如设备已连入局域网或者可以访问公网, 直接翻到文章最后.

下载树莓派系统镜像

我下载的是 ubuntu-mate-16.04.2-desktop-armhf-raspberry-pi.img.xz

Torrent: magnet:?xt=urn:btih:D0F23C109D8662A3FE9338F75839AF8D57E5D4A9

HTTP: https://ubuntu-/raspberry-pi/ubuntu-mate-16.04.2-desktop-armhf-raspberry-pi.img.xz

官方页面: https://ubuntu-/download/

购买4G 上网卡

我买的是联通 4G 的上网卡: 联通4G无线上网卡托, 淘宝地址: /item.htm?id=538368357894&skuId=3215576226356

最好再买一个外接电源的 USB HUB, 绿联30225 4USB 2.0, 京东地址: /1804885.html

制作启动盘

因为我使用的是 MacBook, 所以直接使用 dd 命令操作

# 插入设备之前, 最好是看现有设备$ df -h# .../dev/disk1s1 14Ti 29.1Gi 32G1% 0000 000 0% /Volumes/USB_32GB# 确认设备是挂载到 /dev/disk1 之后# 取消挂载设备sudo diskutil unmountDisk /dev/disk1# 解决写权限问题sudo diskutil partitionDisk /dev/disk1 1 MBR "Free Space" "%noformat%" 100%sudo dd bs=1m if=/Users/zhipeng/Downloads/ubuntu-mate-16.04.2-desktop-armhf-raspberry-pi.img.xz/ubuntu-mate-16.04.2-desktop-armhf-raspberry-pi.img of=/dev/disk1 conv=sync# 弹出设备sudo diskutil eject /dev/disk1

配置 wvdial

# 更新系统$ apt autoclean$ apt autoremove$ apt update -y$ apt upgrade -y# 安装 wvdial$ apt install wvdial# 先不要插入上网卡$ lsusbBus 001 Device 006 ID 05c6:f000 Qualcomm, Inc. # 这种情况再稍微等一下$ lsusbBus 001 Device 006 ID 05c6:6000 Qualcomm, Inc. Siemens SG75...$ ls /dev/ttyUSB*/dev/ttyUSB0 /dev/ttyUSB1 /dev/ttyUSB2 /dev/ttyUSB3# 可以看到设备直接识别出来的. 最好是在 /dev/usb_modeswtich.d/ 新建一个 vender:product 的文件# cat /dev/usb_modeswitch.d/05c6:6000$ echo TargetVendor = 0x05c6 > /dev/usb_modeswitch.d/05c6:6000$ echo TargetProduct = 0x6000 >> /dev/usb_modeswitch.d/05c6:6000$ echo MessageContent = "5553424312345678000000000000061b000000020000000000000000000000" >> /dev/usb_modeswitch.d/05c6:6000$ echo NeadResponse = 1 >> /dev/usb_modeswitch.d/05c6:6000# 配置 /etc/wvdial.conf# 可以新加一组配置, [Dialer SG75-01][Dialer SG75-01]Init1 = ATZInit2 = ATQ V1 E1 S0=0 &C1 &D2 +FCLASS=0Init3 = ATE0V1Init4 = ATS0=0Init5 = AT+CGDCONT=1, "IP", "3GNET"# 这里 APN 邓勇 Init5中的 3GNET, 所以可以不填# APN = 3GNETInit6 = AT+CFUN=1Modem Type = Analog Modem# 波特率常见是 9600, 115200, 460800Baud = 115200New PPPD = yes# Modem 一般为一组 ttyUSB* 中的第一个Modem = /dev/ttyUSB0ISDN = 0Phone = *99## 用户名, 密码可以不填Username = usernamePassword = passwordStupid Mode = 1# 保存退出# 开始拨号$ wvdial SG75-01如果成功, 会输出 local IP Address: ... remote IP address: ... primary DNS address: ..$ ifconfigppp0 Link encap:Point0toPoint Protocolinet addr: 10.17.3.144 P-t-P:10.64.64.64 Mask: 255.255.255.255UP POINTTOPOINT RUNNING NOARP MULTICAST MTU:1500 Metric:1...# 测试一下网上$ pip install speedtest-cli$ speedtest-cli# 最后测试, 下行速度可以达到1.8MB/s, 上行也可以达到1.5MB/s

单网卡拨号已经成功, 接下来就是多网卡拨号了.

配置多网卡

配置 /etc/wvdial.conf和配置单网卡一样, 新增一个配置组 [Dialer SG75-02]# Modem 一般都是每组中的第一个. 其他选项不用改Modem = /dev/ttyUSB4# 等设备绿灯亮以后(红灯灭了), 尝试拨号$ wvidal SG75-02# ...# 不出意外, 第二个上网卡也拨号成功.$ ifconfigppp1 Link encap:Point0toPoint Protocolinet addr: 10.77.31.69 P-t-P:10.64.64.65 Mask: 255.255.255.255UP POINTTOPOINT RUNNING NOARP MULTICAST MTU:1500 Metric:1...

使用不同的网卡访问网络

# curl --interface 可以指定网卡访问网络$ curl --interface ppp0 ip.haschek.at114.242.248.67$ curl --interface ppp1 ip.haschek.at# 结果是 指定 ppp0 可以访问公网. 但指定 ppp1 确没有任何反映.# 查看一下本地路由表$ route -nDestination Gateway Genmask Flags Mertic Ref Use Iface0.0.0.0 0.0.0.0 0.0.0.0 U 0 0 0 ppp010.64.64.64 0.0.0.0 255.255.255.255 UH 0 0 0 ppp010.64.64.65 0.0.0.0 255.255.255.255 UH 0 0 0 ppp1# 可以发现 ppp0 多一条路由配置. 目标网络0.0.0.0的流量都会通过 ppp0 发送, ppp1是个摆设.# 这就很类似 VPN 之类的拨号软件. Destination 是目标网络, 发往Destination的流量会从对应的网卡发送接受.# 添加一条网络路由# 因为我有一台服务器, 可以用来测试是否有请求, IP A 段是112的阿里云ECS.$ route add -net 112.0.0.0/24 ppp1$ route -n# 可以看到多了一条记录Destination Gateway Genmask Flags Mertic Ref Use Iface0.0.0.0 0.0.0.0 0.0.0.0 U 0 0 0 ppp010.64.64.64 0.0.0.0 255.255.255.255 UH 0 0 0 ppp010.64.64.65 0.0.0.0 255.255.255.255 UH 0 0 0 ppp1112.0.0.0 0.0.0.0 255.255.255.0 U 0 0 0 ppp1# 在阿里云服务器上监控 nginx 请求日志.$ tail -f /var/log/nginx/access.log# 回到树莓派. 测试发送请求$ curl --interface ppp0 ip.haschek.at114.242.248.67$ curl --interface ppp1 /<html>hello world</html># 不指定网卡也可以自动分流.$ curl --interface ip.haschek.at114.242.248.67$ curl --interface /<html>hello world</html># 可以看到阿里云机器显示出了一条请求.114.241.28.36 - - [-12-06T13:13:11+08:00] "GET / HTTP/1.1" 200 8699 "-" "curl/7.47.0" "-"# 接下来就是根据网卡数据, 动态的分配 A 段$ route add -net 100.0.0.0/24 ppp1$ route add -net 101.0.0.0/24 ppp1$ route add -net 102.0.0.0/24 ppp1$ route add -net 103.0.0.0/24 ppp1# ...

问题是, 只能做到根据 IP段 分流到不通的网卡. 如何实现可以随机网卡发送请求, 或者指定网卡发情请求, 不需要根据 IP 段分流, 实现爬虫需求.

例如: curl –interface ppp0 ip.haschek.at && curl –interface ppp1 ip.haschek.at 返回不通的 公网IP

Docker? 虚拟机?

是的, 使用 Docker 可以解决这个问题, 详见后续文章 <Docker - wvdial 拨号联通4G 搭建代理服务, 出口 IP 随机> /u012731379/article/details/78744757

单网卡如何公网, 并且不影响局域网. 只需要配置路由表即可.

# 在没有拨号之前查看路由表$ route -n0.0.0.0 172.16.30.1 0.0.0.0 UG 600 wlan0192.254.0.0 0.0.0.0 255.255.255.0 U 600 wlan0# 拨号之后再查看路由表$ route -n0.0.0.0 172.16.30.1 0.0.0.0 UG 600 wlan010.63.63.63 0.0.0.0 255.255.255.255 UH 0 ppp0192.254.0.0 0.0.0.0 255.255.255.0 U 600 wlan0# 可以看到多了一条记录 ppp0# 这时如果访问公网查看 ip, 可以查看结果是 wlan0网卡的公网 ip, 因为路由表也是配置的 默认路由/未知目标 从 wlan0 访问.$ curl ip.haschek.at62.100.223.114# 如果想使用网卡上网, 解决办法如下$ route del -net 0.0.0.0 wlan0$ route add -net 0.0.0.0 ppp0# 什么意思呢, 修改默认路由, 使用 ppp0 访问未知目标.# 测试本地局域网是否正常# ping 192.168.44.49# 日志就不写了, 结果是可以访问的. 并且 ssh 完全没问题.

华为的E353 上网卡不建议使用. 封装的太好了, 完全傻瓜式. 并且多个上网卡的 mac 地址一模一样, 插到设备上以后会自动识别为网卡, 多个上网卡的生成网卡名称也一样. 可以修改网卡名, 再修改 mac 地址, 但是ifconfig enxxxx up 之后, mac 地址又变回原先地址.

参考

Run Ubuntu MATE on your Raspberry Pi 2 or 3 today - https://ubuntu-/raspberry-pi/

Raspberry Pi 用 3G 網卡(3G USB dongle)上網 - .tw/771/how-to-setup-a-usb-3g-modem-on-raspberry-pi/

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。