配置 4G 模块为WAN口上网

article/2025/9/20 3:39:25

配置 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=47110.242.68.66 的 Ping 统计信息:数据包: 已发送 = 4,已接收 = 4,丢失 = 0 (0% 丢失),
往返行程的估计时间(以毫秒为单位):最短 = 55ms,最长 = 79ms,平均 = 66ms

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


http://chatgpt.dhexx.cn/article/P4r2q84I.shtml

相关文章

safeAreaLayoutGuide

https://www.jianshu.com/p/9d68a220983b Safe Area Layout Guide对应的SafeArea特性使用(DeploymentTarget9.0及后) 解决方案&#xff1a; 1. DeploymentTarget 9.0及后 2. DeploymentTarget 8.0

Safety-0

写在前面 好记性不如烂笔头&#xff0c;很多知识久了不用会渐渐生疏&#xff0c;故此以文章的形式进行记录。但干干的知识点又不符合本人的风格&#xff0c;故此产生了Safety&#xff0c;一个主要用于记录学习Mybatis和SpringBoot的项目。 Safety 是基于Mybatis实现的加解密插…

NetworkSecurity

一、CSRF 参考链接 1.定义 &#xff08;Cross Site Request Forgery, 跨站域请求伪造&#xff09;是一种网络的攻击方式&#xff0c;它在 2007 年曾被列为互联网 20 大安全隐患之一,也被称为“One Click Attack”或者Session Riding&#xff0c;通常缩写为CSRF或者XSRF&#…

Web端安全测试--IBM Security AppScan Standard 工具使用手册

1、工具的使用原理 1.1工作原理 &#xff08;1&#xff09;通过探索了解整个web页面结果&#xff08;2&#xff09;通过分析&#xff0c;使用扫描规则库对修改的HTTP Request进行攻击尝试&#xff08;3&#xff09;分析 Response 来验证是否存在安全漏洞 1.2 AppScan的工作过…

【Safety】简介

XSS 涉及面试题&#xff1a;什么是 XSS 攻击&#xff1f;如何防范 XSS 攻击&#xff1f;什么是 CSP&#xff1f; XSS是什么 XSS 简单点来说&#xff0c;就是攻击者想尽一切办法将可执行的代码注入到网页中 XSS分类边界 XSS 可以分为多种类型&#xff0c;但是总体上认为分为两…

Electron Security Warning (Insecure Content-Security-Policy) 告警解决

Electron Security Warning (Insecure Content-Security-Policy) 告警解决 Electron的Console控制台出现如下告警时&#xff1a; 是安全策略的设置告警&#xff0c;意思是内容安全策略没有设置&#xff0c;或者使用了unsafe-eval的安全设置。如果想要不出现上述告警&#xff…

AppScan,web安全测试

操作手册 登录到站点 扫描过程中有提示登录的&#xff0c;就手动登录 待自动扫描结束后&#xff0c;再手动探索&#xff0c;在被测web页面上手动探索结束后点击确定记录你手动提交的请求&#xff0c;然后【继续仅测试】&#xff0c;等待测试结束 结果分析、生成报告 问题默认是…

SafetyNet使用机器学习策略的真实世界自动驾驶车辆的安全规划(一)

本文主要是SafetyNet的框架概述。 1. 前言 文中提到了传统的决策规划的方法&#xff0c;主要有基于规则的方法和基于学习的方法。该论文提出了一种新的方法&#xff08;文章自己说是新的&#xff0c;最主要的原因是该方法在洛杉矶进行了道路测试。&#xff09; 但是这里的Fal…

【译】Using the SafetyNet API (使用SafetyNet API)

该SafetyNet Attestation API是谷歌播放服务的API&#xff0c;任何开发人员都能以获得一定程度的保证&#xff0c;使用他们的应用程序正在运行的设备是“CTS兼容。” CTS代表兼容性测试套件&#xff0c;这是测试套件设备必须在发布前通过&#xff0c;才能包含Google Play服务。…

GooglePlay提审警告(com.google.android.gms:play-services-safetynet:17.0.0)

1.Goole在今年6月份出的新政策&#xff0c;不在使用safetynet&#xff0c;而使用Play Integrity API。 2.项目本身没有使用过safetynet。 3.使用了firebase。查阅资料&#xff0c;解决方案如下&#xff1a; implementation platform(com.google.firebase:firebase-bom:30.2.…

SafetyNet 漏洞rootutils 利用

1、https://developers.google.com/android/guides/setup 添加SatetyNet 服务 2、https://developers.google.cn/android/reference/com/google/android/gms/safetynet/SafetyNet API 3、https://koz.io/inside-safetynet/ https://blog.csdn.net/gulinxieying/art…

必过SafetyNet!以MIUI开发版系统为例详解Android设备通过SafetyNet校验方法

必过SafetyNet&#xff01;以MIUI开发版系统为例详解Android设备通过SafetyNet校验方法 作者 梓沐啊_&#xff08;KylinDemons&#xff09; 版权声明 Copyright © 2021 KylinDemons. All rights reserved. 本文将在CSDN由作者KylinDemons、在酷安由梓沐啊_、在QQ空间…

初识SafetyNet简要梳理

目录 前序 2 什么是SafetyNet校验&#xff1f; 2 Safetynet工作原理 2 监控及校验内容 2 实现方式 3 参考文献&#xff1a; 4 前序 由于近年来Android支付应用的兴起&#xff0c;一些人在root过的手机上发现该类支付性质的应用无法使用。原来&#xf…

【Android安全】Google Hardware-backed Keystore | SafetyNet | 远程证明Remote Attestation

Google Hardware-backed KeyStore Attestation 原理及流程 SafetyNet Hardware-backed Attestation SafetyNet Hardware-backed Attestation&#xff1a;使用了Hardware-backed Keystore SafetyNet 支持Software Attestation 和 Hardware-backed Attestation&#xff0c;根据…

SafetyNet简要梳理

目录 前序 2 什么是SafetyNet校验&#xff1f; 2 Safetynet工作原理 2 监控及校验内容 2 实现方式 3 参考文献&#xff1a; 4 前序 由于近年来Android支付应用的兴起&#xff0c;一些人在root过的手机上发现该类支付性质的应用无法使用。原来&#xf…

什么是跨域?以及解决方案

现在的web项目&#xff0c;很多都是前后端分离&#xff0c;特别容易出现跨域问题 那么什么是跨域问题呢?本篇文章带你彻底从本质上弄明白什么是跨域问题以及如何解决 一、跨域有什么现象 首先我们看一下现象&#xff0c;如何出现的跨域问题。例&#xff1a; 前段&#xff1a…

跨域问题与解决方案

什么是跨域问题&#xff1f; 跨域问题的产生&#xff0c;源自浏览器的同源策略&#xff1a;SOP&#xff08;Same origin policy&#xff09;。 同源策略是由 Netscape 提出的一个著名的安全策略&#xff0c;它是浏览器最核心也是最基本的安全功能&#xff0c;所有支持 JavaSc…

跨域常见的解决方案

目录 一&#xff1a;什么是跨域 二&#xff1a;为什么会跨域 三&#xff1a;跨域的解决方案 1.代理服务器 1.1.生产环境 1.2.开发环境 2.JSONP 3.CORS 一&#xff1a;什么是跨域 跨域是指浏览器在向一个服务器发送请求时&#xff0c;该请求的地址与当前页面的地址不同…

React跨域解决方案

一、业务场景&#xff1a; 前后端数据交互时会存在跨域的情况&#xff0c;这个时候就比较难受。传统的解决方案有三种&#xff0c;分别是 Jsonp&#xff1a;但是只能处理get请求 后端CORS&#xff1a;配置注解CrossOrigin&#xff08;用的最多&#xff09; 反向代理 &#xff1…

10 种跨域解决方案(附终极方案)

写在前面 嗯。又来了&#xff0c;又说到跨域了&#xff0c;这是一个老生常谈的话题&#xff0c;以前我觉得这种基础文章没有什么好写的&#xff0c;会想着你去了解底层啊&#xff0c;不是很简单吗。但是最近在开发一个 vscode 插件 发现&#xff0c;当你刚入门一样东西的时候&…