ARM Linux双网卡设置转发
文章目录
- 简介
- 内核增加`netfilter`组件
- 移植iptables
- 制定转发规则
- 最后
简介
一台嵌入式的设备,有两个网卡,一个是eth0,可以连接外网,另一个eth1,连接内部网络设备,比如网络摄像机。想通过eth0直接访问到网络摄像机,比如访问摄像机的主页,或者rtsp
网络推视频流。
如下图所示
查阅了资料,知道是用netfilter
这个实现的。基本上要做以下的事情:
- 内核需要添加
netfilter
组件 - 需要移植iptables工具
- 需要制定转发规则
之所以写这篇文章,是因为虽然试验成功了,但是不清楚原理,很容易就会遗忘,因此先记录下来,看以后是不是有机会能理解原理。
内核增加netfilter
组件
Networking support
-> Networking options
-> Network packet filtering framework (Netfilter)
这里不熟悉,不了解哪些选项可以不选,因此把下图中标红的全部选上 了。
Core Netfilter Configuration
和IP: Netfilter Configuration
下一级菜单还有很多组件,我不熟悉,因此全部选上。
编译后得到新的内核文件烧到嵌入式设备中。
移植iptables
下载最新的iptables
源码,是iptables-1.8.3.tar.bz2
。
解压后,.configure
配置,make
和make install
得到最后的执行文件。
./configure --host=arm-hisiv600-linux --enable-static --disable-shared --prefix=your_install_dir --disable-ipv6 --disable-largefile
# your_install_dir根据自己安装到哪写,我一般用`pwd`/install,即安装到源目录的install中
make
make install
最后在your_install_dir
中得到结果,如图
我们要的只是your_install_dir/sbin
中的iptables
,iptables-restore
,iptables-save
,xtables-legacy-multi
这四个文件。复制到嵌入式设备的/usr/sbin
中。
制定转发规则
规则到现在我都没搞清楚,参考了很多别人的文章,没有完全照着做能行的。之后一边参考别人的做法,一遍尝试自己修改,虽然成功了,但是规则目前我没完全明白为什么这样可以,如果有清楚的请留言给我解释一下。规则如下:
首先开启转发
echo 1 > /proc/sys/net/ipv4/ip_forward
然后执行规则让外网电脑访问eth0的端口6123的能访问到摄像机的主页,即通过http://192.168.0.172:6123就能访问到http://172.16.0.60:80,规则如下
iptables -t nat -I PREROUTING -d 192.168.0.172 -p tcp --dport 6123 -j DNAT --to-destination 172.16.0.60:80
iptables -t nat -I POSTROUTING -d 172.16.0.60 -p tcp --dport 80 -j SNAT --to 172.16.0.55
再增加一个规则,让外网电脑通过视频播放网络流rtsp://192.168.0.172:6124/1
就能访问到摄像机的rtsp
流rtsp://172.16.0.60/1
。rtsp
用的端口是554。规则如下:
iptables -t nat -I PREROUTING -d 192.168.0.172 -p tcp --dport 6124 -j DNAT --to-destination 172.16.0.60:554
iptables -t nat -I POSTROUTING -d 172.16.0.60 -p tcp --dport 554 -j SNAT --to 172.16.0.55
那主页访问这个来说,第一条规则,我的理解是进入嵌入式设备eth0
的规则是PREROUTING
这个,如果匹配这个条件:目标IP是192.168.0.172,而且协议是TCP,端口是6123。那么就执行DNAT动作,即把目标替换成172.16.0.60:80。
第二条规则,里面的--to
我搜索了,搜索不到什么意思,只查到有--to-destination
和--to-source
,谁知道第二条规则的意义请告知。这里我暂时理解成:从嵌入式机器出去的规则是POSTROUTING
这个,如果匹配这个条件:目标IP是172.16.0.60,而且协议是TCP,端口是80,就把源地址替换成172.16.0.55。
最后
有两个问题没搞清楚,谁知道麻烦留言告知。
- 内核组件,全选那两个组件占用内核空间还是挺大的,谁知道最小配置可以怎么配置?
- 上面转发规则的准确含义倒是是什么?为什么能实现转发?
最后,推荐一个博客,写的很好。虽然我学习完后还是不理解这里的转发规则意义,以及为什么能实现转发,不过文章写得很清晰详细,值得学习。
朱双印个人日志里面的IPtables文章
ARM Linux双网卡设置转发相关推荐
- linux双网卡网桥转发,Linux网桥实现
前几天实验室要求用一个LINUX主机实现网桥的功能,在网上看了几天的帖子,先后看了iptables,route,brctl三个指令,其中brctl指令就是用来打开LINUX的网桥模式的.走了很多弯路, ...
- 如何开启Linux双网卡的转发功能
/******************************************************* 原文地址: http://blog.csdn.net/lllzd/article/de ...
- 设置双网卡mic linux,linux双网卡绑定为逻辑网卡
网卡bond是通过多张网卡绑定为一个逻辑网卡,实现本地网卡的冗余,带宽扩容和负载均衡,在生产场景中是一种常用的技术. 生产环境服务器为:DELL 网卡为:光纤 bond需要修改涉及的网卡配置文件 /e ...
- suse linux双网卡绑定,suse linux双网卡绑定设置详解
<suse linux双网卡绑定设置详解>由会员分享,可在线阅读,更多相关<suse linux双网卡绑定设置详解(2页珍藏版)>请在人人文库网上搜索. 1.suse linu ...
- Linux双网卡NAT共享上网
Linux双网卡NAT共享上网 阅读目录(Content) 服务器设置: 1.激活IP转发 2.NAT配置 客户端设置 1.NAT方法: 2.网桥方法: linux双网卡NAT共享上网 术语字汇 私有 ...
- linux nat和网桥多网卡,linux 双网卡 NAT共享上网
linux 双网卡共享上网 一.网络拓补结构: 服务器:两网卡的设置: eth0:202.96.168.100 掩码:255.255.255.0 网关:202.96.168.68 #与 Inte.Ne ...
- Linux双网卡路由器配置
Linux双网卡路由器配置 一.测试工作室的网络要求: 测试工作室在会议室内,作为独立测试环境,希望于公司现有网络分开:因为希望能够访问公司内网的资源,也希望不用去会议室就可以远程桌面访问测试服务器, ...
- Linux 双网卡绑定测试
Linux 双网卡绑定测试 先介绍一下情况,服务器A和服务器B都是CentOS 4.6的系统,现在要做HA Cluster,为了避免裂脑的发生,要提高心跳链路的可靠性,下图是现时的连接情况,服务器A的 ...
- linux更换网卡不识别_详解Linux双网卡绑定脚本的方法示例
概述 linux运维及配置工作中,常常会用到双网卡绑定,少数几台服务器的配置还好,如果是需要配置几十甚至上百台,难免会枯燥乏味,易于出错,我编写了这个双网卡绑定的辅助脚本,可傻瓜式地完成linux双网 ...
最新文章
- redux的compose源码,中文注释
- Linux命令学习手册-grep命令
- Github 1.3万星,迅猛发展的JAX对比TensorFlow、PyTorch
- android 文件读取错误,Android源文件从SD卡读取错误问题,怎么处理
- JSP、ASP、PHP Web应用程序怎么这么多P!
- 经典排序算法-MFC实现之2:问题
- 从平台架构到大屏可视化,一文读懂金融服务行业的数据分析
- 计算机学校综合管理系统论文,学校综合管理系统的设计与实现毕业设计论文.doc...
- 2022年自然语言处理行业研究报告
- html页面实现pdf打印预览,利用pdfjs在线预览、打印pdf
- 腾讯视频qlv格式转换成mp4格式的的简单方法!
- Windows批处理学习(一)——MS-DOS命令
- 如何改善毛孔粗大,学养颜心经改善毛孔粗大
- [转]程序员生涯之我见 找到自己的兴趣所在
- adb shell 查看手机根目录
- 2022年最受欢迎的十大狗狗品种排行榜:拉布拉多猎犬第一 | 美通社头条
- linux系统能看抖音吗,用电脑如何刷抖音?电脑刷抖音方法你知多少
- 国内外云ERP市场厂商大盘点
- word文档怎么调成黑底白字
- 基于Neo4j的关联数据评估风险投资人业绩
热门文章
- 81年出生的十大尴尬
- Cakephp分组查询
- 7-9 Jack cheng的烦恼2
- matlab中taufft,非线性光纤光学中分步傅里叶算法(SSFFT)的matlab代码实现
- ADO 驱动 Microsoft Data Access Components (MDAC) 2.8 SP1
- dell主板40针开机针脚_实测戴尔OptiPlex 790主板34针前置面板接口针脚接口定义
- Linux(Ubuntu/Deepin/UOS)安装显卡驱动(附卸载)
- Arduino ESP32 基于Web服务端SD文件管理系统完善
- The href attribute requires a valid value to be accessible
- 互联网公司让行政给员工发中秋节福利,看到预算后:还是别发了