OpenWRT NAT配置
OpenWRT防火墙工具fw3之NAT篇
NAT的原理
网卡收到数据包,首先进行的是DNAT检查,检查数据包的包头是否符合DNAT的规则,如果符合,将数据包的包头目的地址(包括端口,后文不在赘述)按规则替换。
替换完目的地址后,根据新的包头匹配路由表进行路由,确定数据包从哪个端口出去。
路由完成后再检查是否符合源地址替换规则(SNAT),如果符合源地址替换规则,则按照规则将数据包做SNAT,然后将新的数据包按照路由送出网卡。注意:上述描述的是数据包的目的地址不是本机,而是需要本机转发的报文。
OpenWRT下的netfilter管理工具
Linux下的防火墙和NAT功能是通过netfilter内核模块实现的,iptables是一个用来与内核层的netfilter交互的用户层工具,但是iptables是一个命令行工具,为了方便从配置文件中获取过滤信息,OpenWRT开发了一套与iptables同地位的netfilter管理工具fw3,这个工具侧重于从uci格式的配置文件中获取过滤信息下发到内核的netfilter中去。
1. fw3配置文件
阅读本小节需要具备uci配置文件格式知识。
fw3的配置文件默认为/etc/config/firewall。
2. 数据包的目的地址转换(DNAT)
DNAT就是对数据包的目的地址进行转换,目的地址包含目的IP地址、目的端口。即从一个五元组变化为另一个五元组,生成一个新的数据包。五元组里面的5个数据任意组合可以作为过滤条件,即从所以数据包中筛选生效数据包的过滤条件。
(目的IP | 源IP | 目的端口 | 源端口 | 协议类型) --> (新目的IP | 源IP | 新目的端口 | 源端口 | 协议类型)
举个例子 1:
config redirectoption target DNAToption src wanoption dest lanoption proto tcpoption src_dport 2222option src_dip 192.168.8.20option src_ip 192.168.9.20option src_port 3333option dest_ip 192.168.10.20option dest_port 22option enabled 1
上述配置翻译成iptables命令如下:
iptables -t nat -A zone_wan_prerouting -p tcp -s 192.168.9.20/255.255.255.255 -d 192.168.8.20/255.255.255.255 -m tcp --sport 3333 --dport 2222 -m comment --comment "@redirect[0]" -j DNAT --to-destination 192.168.10.20:22
翻译成白话就是告诉内核:
如果遇到“源地址192.168.8.20,目的地址192.168.8.20,源端口3333,目的端口2222”的数据包,修改成“源地址192.168.168.8.20,目的地址192.168.10.20,源端口3333,目的端口22”的数据包。
option name | 含义 |
---|---|
target | 本条规则的动作[DNAT|SNAT] |
src | 数据包的来源接口,对应zone节点的定义 |
dest | 数据包的目的接口,对应zone节点的定义 |
proto | 要过滤的数据包的协议, [tcp|udp|tcpudp] |
src_dport | 在做地址替换之前的数据包目的端口 |
src_ip | 在做地址替换之前的数据包源IP地址 |
src_dip | 在做地址替换之前的数据包目的IP地址 |
src_port | 在做地址替换之前的数据包的源端口 |
dest_ip | 地址替换之后的数据包目的IP地址 |
dest_port | 地址替换之后的数据包目的端口地址 |
举个例子 2:
config redirectoption target DNAToption src wanoption dest lanoption proto tcpoption src_dport 2222option src_dip 192.168.8.20option dest_port 22option enabled 1
上述配置翻译成iptables命令如下:
iptables -t nat -A zone_wan_prerouting -p tcp -d 192.168.8.20/255.255.255.255 -m tcp --dport 2222 -m comment --comment "@redirect[0]" -j REDIRECT --to-ports 22
翻译成白话就是告诉内核:
如果遇到“目的地址192.168.8.20,目的端口2222,协议为tcp”的数据包,修改成“源地址保持,目的地址192.168.10.20,源端口保持,目的端口22,协议为tcp”的数据包。
对比例子1和例子2的区别: 例子2的对数据包的过滤范围要宽,只关心目的地址和目的端口。我们可以任意的放宽检测条件来对数据包进行过滤
注意:DNAT只做目的地址、目的端口的转换。
3. 数据包的源地址转换(SNAT)
举个例子 1
config redirectoption target SNAToption src wanoption dest lanoption proto tcpoption src_dport 2222option src_dip 192.168.8.20option src_ip 192.168.9.20option src_port 3333option dest_ip 192.168.10.20option dest_port 22option enabled 1
翻译成iptables命令:
iptables -t nat -A zone_lan_postrouting -p tcp -s 192.168.9.20/255.255.255.255 -d 192.168.10.20/255.255.255.255 -m tcp --sport 3333 --dport 22 -m comment --comment "@redirect[0]" -j SNAT --to-source 192.168.8.20:2222
翻译成白话:
当遇到“源地址192.168.9.20,目的地址192.168.10.20,源端口3333,目的端口22,协议为TCP”的数据包时,将其源地址和源端口修改为(192.168.8.20,2222)
(,192.168.9.20,22,3333,tcp) --> (,192.168.8.20,22,2222,tcp)
注意:在源地址转换里,option参数的意义与在目的地址转换里有些不同,区别如下:
option选项 | 在DNAT中的含义 | 在SNAT中的含义 |
---|---|---|
src_dport | 原数据包的目的端口 | 做源端口替换后的端口号 |
src_dip | 原数据包的目的地址 | 做源地址替换后的目的地址 |
dest_ip | 做目的地址替换后的目的地址 | 原数据包的目的地址 |
dest_port | 做目的地址替换后的目的端口 | 原数据包的目的端口 |
OpenWRT NAT配置相关推荐
- ASA LAB-ASA NAT配置大全
ASA LAB-ASA NAT配置大全 两种NAT配置方式 : 1- Auto(object)NAT 2- Twice NAT NAT分类 : Static nat Dynamic nat Stati ...
- LVS/NAT 配置
LVS/NAT 配置 实验环境 三台主机:Linux Centos 6.4 32位 调度器Director:192.168.1.160(内网IP).192.168.2.20(公网IP) HTTP真实服 ...
- ROS教程(3)---静态NAT配置及应用 (
ROS教程(3)---静态NAT配置及应用 ( 转载于:https://blog.51cto.com/80812345/983093
- 思科路由器动态NAT配置
相关学习推荐: 优秀的网工都会NAThttps://blog.csdn.net/XMWS_IT/article/details/121508603?spm=1001.2014.3001.5502 微思 ...
- Cisco 双出口NAT配置
Cisco 双出口NAT配置 目的:模拟拥有双出口链路情况下基于原地址策略路由功能,实现不同原内部地址从不同出口对外部网络的访问,由于多数实际情况下路由器在外部端口使用NAT对内网地址进行翻译,所以本 ...
- Openwrt上配置Aria2迅雷离线下载步骤
Openwrt上配置Aria2迅雷离线下载步骤 1.首先,保证root目录下的空间充足,然后使用命令将所需的文件及依赖库放进去:(方法是:配置主机静态IP,如:192.168.1.66.然后打开tft ...
- 思科路由器NAT配置详解(转)
思科路由器NAT配置详解(转) 网络技术 2010-07-11 17:48:14 阅读104 评论0 字号:大中小 订阅 思科路由器NAT配置详解 一.NAT简介: NAT(Network Add ...
- cisco路由器NAT配置
要想对Cisco路由器的NAT进行配置,别的不说,最起码的,你要知道什么是NAT吧.其实NAT就是网络地址转换,是用于将一个地址域(如:专用Intranet)映射到另一个地址域的标准方法.它有作用及原 ...
- asterisk的NAT配置
[转]asterisk的NAT配置 http://www.asteriskguru.com/tutorials/sip_nat_oneway_or_no_audio_asterisk.html 这篇文 ...
最新文章
- CVPR 2021 | 视觉目标检测大模型GAIA:面向行业的视觉物体检测一站式解决方案
- android clipChildren的使用
- GraphQL支持层级结构的query
- Linux 命令之 rpm -- RPM 软件包的管理工具
- docker volume源码分析
- c语言 统计数量用count_C语言编程中统计输入的行数以及单词个数的方法
- 数据库系统概论-绪论
- CAD二次开发 C# .net dwg批量转dxf
- 安卓4.X的桌面启动器-尖端启动器APEX
- Qt调节电脑屏幕亮度
- 计算机英语中bar是什么意思啊,bar是什么意思
- 基于openstack的云桌面开源框架
- Teams登录报错最全的解决方法ERROR CAA20002 caa70004
- 基于视频分析的rPPG心率检测
- 我的爱好作文玩计算机800,我的爱好作文800字
- 如何动态创建水晶报表
- Double S 曲线轨迹规划——不同速度加速度条件下综合
- 使用Spring Boot构建微服务(文末福利)
- java常用代码架构示例
- 消防管件做的机器人图片_消防管道配件制成机器人