配置 4G 模块为WAN口上网

配置 4G 模块为WAN口上网

将Linux板卡配置为交换机或路由器,提供类似路由器的上网功能。这里以4G网卡作为WAN进行上网。

一、使用网桥上网

1. 配置4G模块为默认网关

先配置好4G模块为默认路由网关。

这里需要先将4G模块配置为路由模式。4G模块路由模式和网卡模式的区别在于,拨号成功后,路由模式下usb0网卡分配到的IP地址是局域网IP(192.168.x.x),而网卡模式分配的IP是公网IP地址(10.21.26.197)。

断开板卡的有线和无限网络连接,使用ping baidu.com测试,如果能上网说明4G模块网络配置已经正常。否则,需要使用ip route配置4G模块为默认网关,并保证4G模块已经拨号能正常上网。

2. 创建网桥

参考: https://blog.csdn.net/duapple/article/details/127001192?spm=1001.2014.3001.5501

将4G模块的usb0 网卡和其它网口桥接。我这里板卡上有两个以太网口,实验只是用一个网口,因此只桥接一个,用于连接电脑进行测试。

brctl addbr br0
brctl addif br0 usb0
brctl addif br0 eth0
ifconfig eth0 0.0.0.0
ifconfig usb0 0.0.0.0
ifconfig br0 up

然后需要将br0的IP配置成和4G模块在一个网段。第一步骤中usb0上网会有一个局域网IP:192.168.43.100。这里可以将br0的IP配置为这个:

ifconfig br0 192.168.43.100/24

再将br0网卡设置为默认路由:

ip route add default via 192.168.43.1 dev br0

然后应该能ping通4G模块网关192.168.43.1,再ping baidu.com应该也是能通的。

3. PC配置

这里通过以太网将电脑和Linux板卡连接,将PC以太网适配的地址配置为和br0一个网段,网关地址配置为4G模块的网关地址192.168.43.1。DNS地址配置114.114.114.114 。注意禁掉其它能上网的网络适配器,比如无线网卡,防止影响测试。

image-20221204215541670

这个时候可能还无法上网。先在windows上ping Linux板卡的br0网卡地址192.168.43.100,通了以后再ping网关地址192.168.43.1。通了以后再ping baidu.com。通了以后整个网络就通了。开始网络不通的原因可能是地址学习才开始进行导致网络不稳定,开始反复ping baidu.com网络都是时好时坏,甚至丢包。后面稳定了就好了。

image-20221204220057058 image-20221204220142794 在Windows上进行网速测试,和Linux板卡上测试结果差不多,4G还是太慢了。

4. 总结

这个时候,只要使用网线连接Linux板卡,在手动配置一下IP,就可以使用Linux板卡上的4G模块进行上网了。

二、使用NAT上网

参考:https://codeantenna.com/a/4ZBrXkM9Zy

需要使用iptables来配置NAT,完成转发。

1. 配置iptables/netfilter

NAT由内核模块netfilter来完成,iptables是用户空间的工具,两者需要搭配使用。

1.1 netfilter

先在内核中配置netfilter

image-20221206215159617 image-20221206215159617 image-20221206215159617 image-20221206215159617

注意需要开启:<*> IPv4 connection tracking support (required for NAT)才能看到-*- IPv4 NAT<*> iptables NAT support

配置完成后重新编译烧录内核。

1.2 iptables

这个文件系统一般自带有。如果没有,使用交叉编译工具链自己编译,再放到开发板。为避免其它库libmnl 的引入,交叉编译配置加参数--disable-nftables

配置地址转发,先开启转发:

echo "1" > /proc/sys/net/ipv4/ip_forward

然后配置:

iptables -F
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -t nat -A POSTROUTING -o usb0 -j MASQUERADE

不报错即可。

2. 配置4G模块

依然需要保证4G模块能正常上网。

这里将4G模块配置为网卡模式。以quectel的4G模块为例,AT指令为AT+QCFG="NAT",1,配置完成后需要重启才能生效。重启,完成拨号后,4G模块会分配到类似公网IP的IP地址(10段开头的地址)。

然后将4G模块的usb0网卡配置为默认路由。一般在上面的拨号完成后,系统会自动配置路由表。

root@ATK-IMX6U:~# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         10.40.163.52    0.0.0.0         UG    0      0        0 usb0
10.0.0.0        0.0.0.0         255.0.0.0       U     0      0        0 usb0
10.40.163.52    0.0.0.0         255.255.255.255 UH    0      0        0 usb0
183.230.126.224 10.40.163.52    255.255.255.255 UGH   0      0        0 usb0
183.230.126.225 10.40.163.52    255.255.255.255 UGH   0      0        0 usb0
192.168.10.0    0.0.0.0         255.255.255.0   U     0      0        0 eth0

我的系统就被自动配置了多条规则。

然后ping baidu.com没有问题,那么就算是成功了。

root@ATK-IMX6U:~# ping baidu.com
PING baidu.com (110.242.68.66) 56(84) bytes of data.
64 bytes from 110.242.68.66: icmp_seq=1 ttl=48 time=59.1 ms
64 bytes from 110.242.68.66: icmp_seq=2 ttl=48 time=57.4 ms
64 bytes from 110.242.68.66: icmp_seq=3 ttl=48 time=55.5 ms
64 bytes from 110.242.68.66: icmp_seq=4 ttl=48 time=67.4 ms
^C
--- baidu.com ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3004ms
rtt min/avg/max/mdev = 55.571/59.903/67.421/4.522 ms

如果ping不同baidu,那么修改/etc/resolv.conf,添加如下内容:

nameserver 114.114.114.114
nameserver 127.0.0.1

再ping就应该没有问题了。

3. 网络配置

除了4G模块的网络配置,还需要配置客户机和客户机相连的网口。

3.1 Linux网口配置

需要将Linux板卡和客户机相连的网口(eth0)配置网关地址,如192.168.10.1。否则,客户机无法上网。

3.2 客户机网络配置

这里客户机使用PC Windows。客户机需要和Linux板卡相连的IP设置在同一个网段,如192.168.10.200,网关地址设置为192.168.10.1。此时已经可以上网,qq能网络是通的。

image-20221206215159617

但是ping baidu不成功,浏览器访问baidu也不成功,这里把DNS地址设置一下,设置成114.114.114.114。然后再ping baidu,发现已经可以通了,浏览器访问也没有问题了。

C:\Users\28328>ping baidu.com

正在 Ping baidu.com [110.242.68.66] 具有 32 字节的数据:
来自 110.242.68.66 的回复: 字节=32 时间=58ms TTL=47
来自 110.242.68.66 的回复: 字节=32 时间=79ms TTL=47
来自 110.242.68.66 的回复: 字节=32 时间=73ms TTL=47
来自 110.242.68.66 的回复: 字节=32 时间=55ms TTL=47

110.242.68.66 的 Ping 统计信息:
    数据包: 已发送 = 4,已接收 = 4,丢失 = 0 (0% 丢失),
往返行程的估计时间(以毫秒为单位):
    最短 = 55ms,最长 = 79ms,平均 = 66ms

注意:一样的,测试时需要禁用掉其他能上外网的网卡,防止影响测试。

  • 1
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值