文章目录

  • 简介
  • 内核增加`netfilter`组件
  • 移植iptables
  • 制定转发规则
  • 最后

简介

一台嵌入式的设备,有两个网卡,一个是eth0,可以连接外网,另一个eth1,连接内部网络设备,比如网络摄像机。想通过eth0直接访问到网络摄像机,比如访问摄像机的主页,或者rtsp网络推视频流。

如下图所示

嵌入式设备

eth0:192.168.0.172
eth1:172.16.0.55
外部电脑:192.168.0.12/24
摄像机:172.16.0.60

查阅了资料,知道是用netfilter这个实现的。基本上要做以下的事情:

  • 内核需要添加netfilter组件
  • 需要移植iptables工具
  • 需要制定转发规则

之所以写这篇文章,是因为虽然试验成功了,但是不清楚原理,很容易就会遗忘,因此先记录下来,看以后是不是有机会能理解原理。

内核增加netfilter组件

Networking support -> Networking options -> Network packet filtering framework (Netfilter)

这里不熟悉,不了解哪些选项可以不选,因此把下图中标红的全部选上 了。

Core Netfilter ConfigurationIP: Netfilter Configuration下一级菜单还有很多组件,我不熟悉,因此全部选上。

编译后得到新的内核文件烧到嵌入式设备中。

移植iptables

下载最新的iptables源码,是iptables-1.8.3.tar.bz2

解压后,.configure配置,makemake 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中的iptablesiptables-restoreiptables-savextables-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就能访问到摄像机的rtsprtsp://172.16.0.60/1rtsp用的端口是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双网卡设置转发相关推荐

  1. linux双网卡网桥转发,Linux网桥实现

    前几天实验室要求用一个LINUX主机实现网桥的功能,在网上看了几天的帖子,先后看了iptables,route,brctl三个指令,其中brctl指令就是用来打开LINUX的网桥模式的.走了很多弯路, ...

  2. 如何开启Linux双网卡的转发功能

    /******************************************************* 原文地址: http://blog.csdn.net/lllzd/article/de ...

  3. 设置双网卡mic linux,linux双网卡绑定为逻辑网卡

    网卡bond是通过多张网卡绑定为一个逻辑网卡,实现本地网卡的冗余,带宽扩容和负载均衡,在生产场景中是一种常用的技术. 生产环境服务器为:DELL 网卡为:光纤 bond需要修改涉及的网卡配置文件 /e ...

  4. suse linux双网卡绑定,suse linux双网卡绑定设置详解

    <suse linux双网卡绑定设置详解>由会员分享,可在线阅读,更多相关<suse linux双网卡绑定设置详解(2页珍藏版)>请在人人文库网上搜索. 1.suse linu ...

  5. Linux双网卡NAT共享上网

    Linux双网卡NAT共享上网 阅读目录(Content) 服务器设置: 1.激活IP转发 2.NAT配置 客户端设置 1.NAT方法: 2.网桥方法: linux双网卡NAT共享上网 术语字汇 私有 ...

  6. linux nat和网桥多网卡,linux 双网卡 NAT共享上网

    linux 双网卡共享上网 一.网络拓补结构: 服务器:两网卡的设置: eth0:202.96.168.100 掩码:255.255.255.0 网关:202.96.168.68 #与 Inte.Ne ...

  7. Linux双网卡路由器配置

    Linux双网卡路由器配置 一.测试工作室的网络要求: 测试工作室在会议室内,作为独立测试环境,希望于公司现有网络分开:因为希望能够访问公司内网的资源,也希望不用去会议室就可以远程桌面访问测试服务器, ...

  8. Linux 双网卡绑定测试

    Linux 双网卡绑定测试 先介绍一下情况,服务器A和服务器B都是CentOS 4.6的系统,现在要做HA Cluster,为了避免裂脑的发生,要提高心跳链路的可靠性,下图是现时的连接情况,服务器A的 ...

  9. linux更换网卡不识别_详解Linux双网卡绑定脚本的方法示例

    概述 linux运维及配置工作中,常常会用到双网卡绑定,少数几台服务器的配置还好,如果是需要配置几十甚至上百台,难免会枯燥乏味,易于出错,我编写了这个双网卡绑定的辅助脚本,可傻瓜式地完成linux双网 ...

最新文章

  1. redux的compose源码,中文注释
  2. Linux命令学习手册-grep命令
  3. Github 1.3万星,迅猛发展的JAX对比TensorFlow、PyTorch
  4. android 文件读取错误,Android源文件从SD卡读取错误问题,怎么处理
  5. JSP、ASP、PHP Web应用程序怎么这么多P!
  6. 经典排序算法-MFC实现之2:问题
  7. 从平台架构到大屏可视化,一文读懂金融服务行业的数据分析
  8. 计算机学校综合管理系统论文,学校综合管理系统的设计与实现毕业设计论文.doc...
  9. 2022年自然语言处理行业研究报告
  10. html页面实现pdf打印预览,利用pdfjs在线预览、打印pdf
  11. 腾讯视频qlv格式转换成mp4格式的的简单方法!
  12. Windows批处理学习(一)——MS-DOS命令
  13. 如何改善毛孔粗大,学养颜心经改善毛孔粗大
  14. [转]程序员生涯之我见 找到自己的兴趣所在
  15. adb shell 查看手机根目录
  16. 2022年最受欢迎的十大狗狗品种排行榜:拉布拉多猎犬第一 | 美通社头条
  17. linux系统能看抖音吗,用电脑如何刷抖音?电脑刷抖音方法你知多少
  18. 国内外云ERP市场厂商大盘点
  19. word文档怎么调成黑底白字
  20. 基于Neo4j的关联数据评估风险投资人业绩

热门文章

  1. 81年出生的十大尴尬
  2. Cakephp分组查询
  3. 7-9 Jack cheng的烦恼2
  4. matlab中taufft,非线性光纤光学中分步傅里叶算法(SSFFT)的matlab代码实现
  5. ADO 驱动 Microsoft Data Access Components (MDAC) 2.8 SP1
  6. dell主板40针开机针脚_实测戴尔OptiPlex 790主板34针前置面板接口针脚接口定义
  7. Linux(Ubuntu/Deepin/UOS)安装显卡驱动(附卸载)
  8. Arduino ESP32 基于Web服务端SD文件管理系统完善
  9. The href attribute requires a valid value to be accessible
  10. 互联网公司让行政给员工发中秋节福利,看到预算后:还是别发了