一个设备和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 的参数都是可以用的,也就是谁做源地址都行。
如有不对可以讨论一下。

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

  1. 【linux】ARM开发板上设置RTC时间,断电重启后,设置失效的原因分析

    问题描述 linux中使用date设置时间后用hwclock -w同步到RTC,断电重启后,有时会失效 原因分析 保存时间戳 1.使用命令关机(halt)会调用rc0.d中的脚本: 2.使用命令重启( ...

  2. 如何在ARM开发板上从源码编译安装OpenCV和OpenCV contrib

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 本文主要介绍如何在ARM开发板上从源码编译安装OpenCV和OpenCV contrib. OpenC ...

  3. ARM开发板上iconv_open(utf-8, gb2312) 调用失败的解决方法(转)

    ARM开发板上iconv_open("utf-8", "gb2312") 调用失败的解决方法 应用程序代码如下: static int code_convert ...

  4. 将linux内核烧进arm板,ARM开发板上uClinux内核移植

    <ARM开发板上uClinux内核移植>由会员分享,可在线阅读,更多相关<ARM开发板上uClinux内核移植(19页珍藏版)>请在人人文库网上搜索. 1.纷傲掌秀悸篷益哑檀扬 ...

  5. 摄像头在liunx上的QT显示和OK6410 ARM开发板上的使用

    摄像头在liunx上的QT显示和OK6410 ARM开发板上的使用 发布者:旺旺雪饼   时间:2013-01-05 16:56:09 环境: Ubuntu10.04 arm linux OS: 3. ...

  6. 4G上网模块ME3760移植到arm开发板上(6410)

    花了一天时间终于让6410开发板ping通www.baidu.com了,下面分享给大家.希望大家少走弯路~     我不知道是不是因为ME3760 V2这个4G模块太偏了,网上没有一个成熟详细的移植教 ...

  7. python交叉编译_交叉编译Python3.6.2,使用海思arm-hisiv200-linux-gcc,移植到arm开发板上...

    最近在学习Python,感觉使用Python可以快速的写出程序,比之前使用的C语言快多了,能省出很多时间.多学一点知识有更多的选择.本职工作是嵌入式开发,学习了Python后想移植到开发板上,尝试嵌入 ...

  8. linux usb视频开发板,ARM开发板上USB 摄像头图像采集实现

    开发板上的arm是AT91RM9200,摄像头选用的是网眼的pc350,主控芯片是ov511+.系统内核是2.4,宿主机是fedora core 6,交叉编译器是2.95.3.就是这些家底了,:-). ...

  9. 在ARM开发板上实现LCD+USB键盘

    一.LCD驱动 这个地方先留着 二.USB键盘驱动 在linux内核里边提供了usbkbd.c可以直接借助这个模块,编译生成驱动模块加载进内核,其实对于驱动程序,这里还不是重点,最后想要实现的是直接在 ...

最新文章

  1. tushare 金融数据获取(R语言版)
  2. 二维矩阵与二维矩阵之间的卷积
  3. 显示非模式窗口和模式窗口
  4. bzoj1854 [Scoi2010]游戏——匈牙利算法
  5. jQuery获取时间,一位数则补零
  6. PKUWC 2018 滚粗记
  7. 鸿蒙渊之后是什么任务,都说这次主线好,那我来唱唱反调吧
  8. parameterType 属性、typeAliases 别名
  9. MyBatis association的两种形式——MyBatis学习笔记之四
  10. “我将 20 年前开发的操作系统迁移到 .NET 6,居然成功了”
  11. 击破区块链应用落地之痛,爆款公链太硬核!
  12. [swift] LeetCode 96. Unique Binary Search Trees
  13. 程序执行的过程分析--【sky原创】
  14. UI设计素材干货,字体设计灵感酷站
  15. 不想更新计算机怎么办,联想笔记本电脑不想更新系统更新怎么办啊
  16. 【Pic】图片怎么去除马赛克?
  17. 安装SSMS报错:0x80070643
  18. 谷歌浏览器崩溃,无法搜索
  19. x264参数设置详解(x264 settings)
  20. BGP距离矢量动态路由协议

热门文章

  1. Ctrl 一直被按着
  2. fastjson将对象转为json时属性名首字母会默认小写,如何自定义
  3. 【自然语言处理】条件随机场【Ⅲ】条件随机场估计问题
  4. 超级烂片《盗梦空间》
  5. 四面蚂蚁金服成功拿下offer,分享一下我是怎么从年前的外包到现在的蚂蚁金服架构师的!
  6. c 函数 strcpy
  7. 单边带幅度调制matlab
  8. 安装linux7 没有图形化界面,CentOs7 安装后无图形界面,安装图形界面(yum groupinstall GNOME Desktop Graphical Administration ...
  9. 十五、Kali Linux 2 拒绝服务攻击
  10. C# SolidWorks二次开发---工程图简单版标注长宽