arm开发板上4G网络转为以太网口供其他设备使用

一个设备和ARM开发板的以太网口连接使用4G模块实现上网
最后做完发现只要思路对,没什么特别难的东西要做,开始我一直以为是路由表、arp的问题,其实都不是,只是IP地址转换的问题,其他都不需要动。之前的工也不是白做学会了arp、traceroute的使用,对route命令更熟悉了,这几个命令对网络的检测是很有用的。
整个过程可以分为2部分:
1.安装DHCP服务
2.添加iptables功能
因为刚开始思路不对,弄了几天没进展,后来网上到处查找资料才找到关于iptables的信息。
首先在开发板上安装DHCP服务,能够实现分配IP。
在内核中配置DHCP
Networking support —>
Networking options —>
<> Packet socket
<
> Packet: sockets monitoring interface
<> Unix domain sockets
<
> UNIX: socket monitoring interface
[] TCP/IP networking
[
] IP: multicasting
[] IP: advanced router
[
] IP: kernel level autoconfiguration
[*] IP: DHCP support
这是内核的配置,开机后执行udhcpd命令出现如下提示
udhcpd: applet not found
说明udhcpd不可用,需要重新编译busybox来获取该命令,或者去哪找一个也行。
udhcpd.conf文件,主要要配置的东西不多

# The start and end of the IP lease block
start           192.168.0.20
end             192.168.0.254
# The interface that udhcpd will use
interface       eth0
# The remainder of options are DHCP options and can be specified with the
# keyword 'opt' or 'option'. If an option can take multiple items, such
# as the dns option, they can be listed on the same line, or multiple
# lines.
# Examples:
opt     dns     8.8.8.8
option  subnet  255.255.255.0
opt     router  192.168.0.1
bove DNS servers for a total of 3
option  domain  local
option  lease   864000          # default: 10 days

执行udhcpd 配置文件路径,udhcpd默认在后台运行,出错也不会打印信息,所以开始可以加参数 -f放到前台看打印信息有没出错。
DHCP服务这样就可以了。
接下来就是移植iptables,这个需要内核的配合,需要再配置内核
Networking support —>
Networking options —>
[] Network packet filtering framework (Netfilter) —>
[
] Advanced netfilter configuration
IP: Netfilter Configuration —> (全选)
下载iptablesftp://ftp.netfilter.org/pub/iptables/
开始下了个最新版本(1.8.3版本)编译时有个头文件报错找不到,不知道如何解决,在网上搜到一个1.4版本的安装方法就这样了(原文https://www.cnblogs.com/pokerface/p/7040775.html)
下载下来,解压,进入目录先执行
./configure -host=arm-linux CC=arm-linux-gcc -prefix=安装目录

我的配置就这三个,然后就是熟悉的make和make install了,执行完后在安装目录下有这几个文件夹
bin 、include 、lib 、libexec 、sbin 、share
iptables在sbin目录下,然后复制lib下的所有库文件到rootfs下的lib下 ,cp时使用-d保持连接复制,到这基本完成了,在板子上使用命令时还会使用到一些库,比如-j MASQUERADE,如果没有libipt_MASQUERADE.so库会提示什么什么标准文件找不到
大概就这意思,我在使用中复制了libipt_MASQUERADE.so和libipt_LOG.so,自己使用到其他的库就到libexec下复制过去就行了。
在使用iptables之前还有一个很重要的设置
创建文件/etc/sysctl.conf写入内容文件net.ipv4.ip_forward = 1,再执行sysctl –p
没有这一步操作是不能实现地址转换的,我的理解是在内核中使能地址转换功能。
也有看见别人这么写的,他的linux版本是inux-2.6.32,自己没试过

echo ‘1’ > /pr0c/sys/net/ipv4/ip- forward

iptables参数很多,还没理解透,只知道可实现两个网卡间IP地址的转换
arm板上实现地址转换,把4G模块IP转为以太网IP,10.64.67.78/32是4G网络的IP地址,192.168.0.1是以太网eth0的地址。
iptables -t nat -A POSTROUTING -s 10.64.67.78/32 -j SNAT --to 192.168.0.1

因为4G网络的IP地址是会变的,所以这么写会有问题,很爽的是iptables提供了自动获取网卡IP的功能,-o ppp0 -j MASQUERADE,把DHCP服务网卡的IP写到前面,就可以这么写了。
iptables -t nat -A POSTROUTING -s 192.168.0.1/24 -o ppp0 -j MASQUERADE
从执行结果看4G网络IP 和以太网IP谁当-s 的参数都是可以用的,也就是谁做源地址都行。
如有不对可以讨论一下。

  • 4
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值