打印
[嵌入式Linux]

在IMX6ULL上实现NAT过程

[复制链接]
617|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 wandersky 于 2020-4-9 15:35 编辑

目的: imx6ull通过USB驱动4G模块,用来上公网, 同时imx6ull也有本地网卡eth0 eth1,, 要求笔记本连接到imx6ull它的本地网口可以共享imx6ull的4G模块来上网。

过程是坎坷的,

结果是满意的。

遇到了几个问题,

1,nfs挂载失败,这个也成了一个小绊脚石,有点意外的。我实现了N个NFS服务器了。在我的虚拟机上建立了一个NFS服务器,在虚拟机上顺利的自己挂载上了自己。但是从嵌入式MX6ULL挂载虚拟机的NFS目录时,却不成功。一直提示

:mount.nfs: an incorrect mount option was specified

解决过程序,

*& 在imx6ull里也添加了nfs-server 服务,网上是这么说的,

*& mount -o nolock,nfsvers=3  -t nfs 192.168.111.104:/home/willow/linux/imx6ull/nfs  /mnt 使用这个命令挂载。

我不知道到底是哪个措施起作用了,因为我之前一直使用下面这个命令。

mount -o nolock  -t nfs 192.168.111.104:/home/willow/linux/imx6ull/nfs  /mnt

2  ME909 4G模块在IMX6ULL上的移植,这个简单,我用的阿尔法的开发板,发现自带的内核就可以驱动ME909,直接就能看到CDC_ETHER驱动起来了,输入ifocnfig,  也可以看到了usb0网卡,那我就不客气了,直接拨号:

echo "AT^NDISDUP=1,1">/dev/ttyUSB0

然后再查看ifconfig, 顺利的就看到了usb0获得到的IP地址。然后也可以ping 通百度了



3  其实这个工作最大的困难是NAT在内核中的配置。

#!/bin/bash                                                         
# 0. 设定你的参数值                                                
EXIF='usb0'           # 这个是对外的网卡接口, 可能是'ppp0'等         
EXNET='192.168.0.1/24'       # 这个是对内的网段                     
# 底下如无需要, 请不要改动了!                                      
# 1. 启动routing等                                               
echo 1 > /proc/sys/net/ipv4/ip_forward                              
/usr/sbin/iptables -F                                                     
/usr/sbin/iptables -X                                                     
/usr/sbin/iptables -Z                                                     
/usr/sbin/iptables -F -t nat                                             
/usr/sbin/iptables -X -t nat                                             
/usr/sbin/iptables -Z -t nat                                             
/usr/sbin/iptables -P INPUT   ACCEPT                                      
/usr/sbin/iptables -P OUTPUT  ACCEPT                                      
/usr/sbin/iptables -P FORWARD ACCEPT                                      
/usr/sbin/iptables -t nat -P PREROUTING   ACCEPT                          
/usr/sbin/iptables -t nat -P POSTROUTING  ACCEPT                          
/usr/sbin/iptables -t nat -P OUTPUT       ACCEPT                          
# 2. 载入模组                                                  
/sbin/modprobe ip_tables 2> /dev/null                                 
/sbin/modprobe ip_nat_ftp 2> /dev/null                                
/sbin/modprobe ip_nat_irc 2> /dev/null                                
/sbin/modprobe ip_conntrack 2> /dev/null                              
/sbin/modprobe ip_conntrack_ftp 2> /dev/null                          
/sbin/modprobe ip_conntrack_irc 2> /dev/null                          
# 3. 启动ip伪装                                                   
/usr/sbin/iptables -t nat -A POSTROUTING -o $EXIF -s $EXNET -j MASQUERADE

执行上面的脚本,一直提示 iptables 没有安装,于是配置内核安装IPTABLES, 安装完iptables之后,执行/usr/sbin/iptables -F -t nat命令,一直提示没有NAT表,

为了添加NAT表,费了我很大的时间,j明知道NAT相关的配置CONFIG_IP_NF_NAT 就在这下面,但是就是打不开,因为内核的配置很多的是相关联的,与之相关联的没有使能,CONFIG_IP_NF_NAT 这项配置根本就看不到,
Networking support -->

         Networking option--->

                    Network packet filtering  framework(netfilter)-->

                                 core netfilter configuration-->

                                 IP: netfilter configuration-->





主要就配置这里,但是如果在core netfilter configuration里面没有把相关联的配置使能的话,IPV4 NAT是出不来的。费了我一下午时间表,还算弄好了,通过笔记本连接imx6ull的有线网口,笔记本网关设置为imx6ull的本地网口的IP地址,就可以在笔记本上ping通知公网IP地址了, 221.6.4.66了, 但是ping不通域名,这个没有解决,应该是NAT没有转发DNS数据包的问题吧。

使用特权

评论回复

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

17

主题

189

帖子

2

粉丝