imx6ull开发板的iptables(防火墙)问题(基于Debian系统)

imx6ull开发板的iptables(防火墙)问题(基于Debian系统)

存在问题:

i.MX6ULL运行Debian双网卡配置默认路由问题
IPC(网络摄像头)通过网线连接到开发板的eth1端口,希望通过4G模块将IPC采集到的图像数据转发到外网萤石云平台上,即通过配置将内网数据转发到外网。

imx6ull开发板的iptables(防火墙)问题(基于Debian系统)_第1张图片
摄像头设置为固定IP 192.168.137.192,将iMX6ULL底板的eth1设置为固定IP 192.168.137.1,
控制台下设置iptables和forward命令如下,设置网络转发。

#iptables -F		//注意:此命令不能随意使用,默认网关改变很有可能是使用了此命令
#iptables -P INPUT ACCEPT
#iptables -P FORWARD ACCEPT
#iptables -t nat -A POSTROUTING -j MASQUERADE
#echo 1 > /proc/sys/net/ipv4/ip_forward

通过网线接好IPC并通电,等待约十几秒后,用route指令列出路由表如下。

root@npi:~# route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         0.0.0.0         0.0.0.0         U     0      0        0 eth1
link-local      0.0.0.0         255.255.0.0     U     0      0        0 eth1
192.168.137.0   0.0.0.0         255.255.255.0   U     0      0        0 eth1

然后插入4G模块,并通过ppp上网(野火提供的脚本),运行脚本过程显示如下。

root@npi:~# ./ppp-on.sh
ATEt@npi:~# ATE
OK
ATH
OK
ATP
OK
AT+CGDCONT=1,"IP","CMNET"
OK
ATD*98*1#
CONNECT
Script /usr/sbin/chat -v -f ec20_ppp_dialer finished (pid 2421), status = 0x0
Serial connection established.
using channel 1
Using interface ppp0
Connect: ppp0 <--> /dev/ttyUSB2
sent [LCP ConfReq id=0x1 <asyncmap 0x0> <magic 0x9867c48> <pcomp> <accomp>]
rcvd [LCP ConfReq id=0x0 <asyncmap 0x0> <auth chap MD5> <magic 0xb91ba038> <pcomp> <accomp>]
sent [LCP ConfAck id=0x0 <asyncmap 0x0> <auth chap MD5> <magic 0xb91ba038> <pcomp> <accomp>]
rcvd [LCP ConfAck id=0x1 <asyncmap 0x0> <magic 0x9867c48> <pcomp> <accomp>]
sent [LCP EchoReq id=0x0 magic=0x9867c48]
rcvd [LCP DiscReq id=0x1 magic=0xb91ba038]
rcvd [CHAP Challenge id=0x1 <b0809fc9488b29ba043b6b92a811293c>, name = "UMTS_CHAP_SRVR"]
sent [CHAP Response id=0x1 <c7a1b29f9051d761067801b154cd2aef>, name = "Anyname"]
rcvd [LCP EchoRep id=0x0 magic=0xb91ba038 09 86 7c 48]
rcvd [CHAP Success id=0x1 ""]
CHAP authentication succeeded
CHAP authentication succeeded
sent [IPCP ConfReq id=0x1 <addr 0.0.0.0> <ms-dns1 0.0.0.0> <ms-dns2 0.0.0.0>]
rcvd [IPCP ConfReq id=0x0]
sent [IPCP ConfNak id=0x0 <addr 0.0.0.0>]
rcvd [IPCP ConfNak id=0x1 <addr 10.163.92.109> <ms-dns1 211.136.17.107> <ms-dns2 211.136.20.203>]
sent [IPCP ConfReq id=0x2 <addr 10.163.92.109> <ms-dns1 211.136.17.107> <ms-dns2 211.136.20.203>]
rcvd [IPCP ConfReq id=0x1]
sent [IPCP ConfAck id=0x1]
rcvd [IPCP ConfAck id=0x2 <addr 10.163.92.109> <ms-dns1 211.136.17.107> <ms-dns2 211.136.20.203>]
Could not determine remote IP address: defaulting to 10.64.64.64
not replacing default route to eth1 [0.0.0.0]
local  IP address 10.163.92.109
remote IP address 10.64.64.64
primary   DNS address 211.136.17.107
secondary DNS address 211.136.20.203
Script /etc/ppp/ip-up started (pid 2427)
Script /etc/ppp/ip-up finished (pid 2427), status = 0x0

root@npi:~#

此时列出路由表如下

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         0.0.0.0         0.0.0.0         U     0      0        0 eth1
10.64.64.64     0.0.0.0         255.255.255.255 UH    0      0        0 ppp0
link-local      0.0.0.0         255.255.0.0     U     0      0        0 eth1
192.168.137.0   0.0.0.0         255.255.255.0   U     0      0        0 eth1

因为默认路由为eth1,无法连接外网,所以手动添加一条默认网关

root@npi:~#route add default gw 10.64.64.64

路由表变成如下情况,此时IPC可通过4G网络正常传输视频数据到萤石云平台

root@npi:~# route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         10.64.64.64     0.0.0.0         UG    0      0        0 ppp0
default         0.0.0.0         0.0.0.0         U     0      0        0 eth1
10.64.64.64     0.0.0.0         255.255.255.255 UH    0      0        0 ppp0
link-local      0.0.0.0         255.255.0.0     U     0      0        0 eth1
192.168.137.0   0.0.0.0         255.255.255.0   U     0      0        0 eth1

中途将IPC与eth1之间的网线拔掉,再重新插回,过十几秒后,默认路由又变成了eth1,导致无法上外网。

root@npi:~# route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         0.0.0.0         0.0.0.0         U     0      0        0 eth1
default         10.64.64.64     0.0.0.0         UG    0      0        0 ppp0
10.64.64.64     0.0.0.0         255.255.255.255 UH    0      0        0 ppp0
link-local      0.0.0.0         255.255.0.0     U     0      0        0 eth1
192.168.137.0   0.0.0.0         255.255.255.0   U     0      0        0 eth1

需要再次手工将默认路由改为ppp0才可以连到外网上。因此,现在需要解决插拔网线后eth1自动变为默认路由的问题,是否有办法让ppp0一直为默认路由。

按照网上说的方法,在/etc/network/interfaces文件中将eth1配置成静态IP,不设网关,但实际并没有起到作用。

auto eth1
iface eth1 inet static
    address 192.168.137.1
    netmask 255.255.255.0

情况与该网址所述情况类似,https://www.cnblogs.com/zzyyxxjc/p/5973721.html,手工修改路由表可以解决上外网的问题,或者在4G模块拨号脚本里添加将ppp0为默认路由,这样可以在不插拔网线情况下保持IPC与外网通信,但用户插拔网线是随机事件,插回网线后默认的路由表无法上外网。

如何让内核支持iptables?

现有的内核,对iptables支持不好,会报nft: Protocol not supported
内核里把这两项下面的子项都勾选了,全都打*编译进内核,iptables就能正常用了,具体是哪项起作用,我也没细研究呢!

imx6ull开发板的iptables(防火墙)问题(基于Debian系统)_第2张图片

如何让内核支持USB接口的移远EC20-4g模块?

配置内核(打*编译进内核):
imx6ull开发板的iptables(防火墙)问题(基于Debian系统)_第3张图片

参考博客:
https://blog.csdn.net/wwt18811707971/article/details/54291747?utm_medium=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase

存在问题:

原来的内核里没有勾选这些项,iptables就用不了,勾选之后才可以用。现在也实现了NAT的数据转发,有线网络上连接的摄像头数据,可以通过4G模块传输到萤石云上。问题是,一旦插拔摄像头的网线,默认的路由会变成连接摄像头的有线网口,数据就出不去了,要手工改成4G才行,每插拔一次就要改一次,在现场如果有人拔过网线,不可能让现场的人去手工改路由表的,所以问问能不能避免默认路由自己变掉的情况,就让4G当默认的路由。

正常情况:输入route

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         10.64.64.64     0.0.0.0         UG    0      0        0 ppp0
default         0.0.0.0         0.0.0.0         U     0      0        0 eth1
10.64.64.64     0.0.0.0         255.255.255.255 UH    0      0        0 ppp0
link-local      0.0.0.0         255.255.0.0     U     0      0        0 eth1
192.168.137.0   0.0.0.0         255.255.255.0   U     0      0        0 eth1

接着拔掉IPC网线:

Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         10.64.64.64     0.0.0.0         UG    0      0        0 ppp0
10.64.64.64     0.0.0.0         255.255.255.255 UH    0      0        0 ppp0
192.168.137.0   0.0.0.0         255.255.255.0   U     0      0        0 eth1

重新插上网线,过一段时间:

Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         0.0.0.0         0.0.0.0         U     0      0        0 eth1
default         10.64.64.64     0.0.0.0         UG    0      0        0 ppp0
10.64.64.64     0.0.0.0         255.255.255.255 UH    0      0        0 ppp0
link-local      0.0.0.0         255.255.0.0     U     0      0        0 eth1
192.168.137.0   0.0.0.0         255.255.255.0   U     0      0        0 eth1

关于iptables中的iptables -F命令不能随意使用

你可能感兴趣的:(imx6ull,linux,内核)