linux--防火墙 iptables 双网卡 NAT 桥接
- 1 介绍
- 1.1 概述
- 1.2 iptables 的结构
- 2 四表五链
- 2.1 iptables 的四表
- filter 表:过滤规则表,默认表。
- nat 表:地址转换表。
- mangle 表:修改数据包内容。
- raw 表:原始数据包表。
- 2.2 iptables 的五链
- 3 数据包的传输过程
- 4 iptables 基本操作
- 5 iptables 设置规则
- 命令
- 表名
- 命令选项
- 链名
- 条件匹配
- help
- 6 iptables 常见命令
- 7 常用 iptables 规则链
- 允许 ssh 连接,仅开放 22 端口
- 允许 ping
- 防止 DDOS 攻击
- 设置端口转发
- 记录丢弃的包
- 8 iptables 性能优化技巧
- 安全放行所有 ESTABLISHED 状态连接,建议放在第一条,效率更高
- 尽可能将可由一条规则能够描述的多个规则合并为一条规则,如添加多个端口 / IP 访问
- 有特殊目的限制访问功能要在放行规则之前加以拒绝
- 谨慎放行入站的新请求
- 在规则最后添加默认策略
- 9 示例
- 9.1 将内网机器的服务暴露在公网,让客户可以访问
- 查看iptables规则
- 打开 iptables 转发并查看
- 规则保存
- 创建 iptables.service 文件
- NAT的实现分为下面类型:
- 永久有效:
- 9.2 iptables 双网卡 外设之间互联
- 9.3 iptables
- 10 工具
- telnet
- curl
- wireshark
- tcpdump
- 参考
1 介绍
1.1 概述
Linux 防火墙基于内核实现,它使用 Netfilter 包过滤引擎,根据用户通过 iptables 命令定义的规则实现对数据包的过滤或转发.
iptables是一个用户空间实用程序,它允许系统管理员配置Linux 内核防火墙的IP 数据包过滤规则,这些规则以不同的Netfilter模块实现。过滤器组织在一组表中,其中包含如何处理网络流量数据包的规则链。目前,不同的内核模块和程序用于不同的协议;iptables适用于 IPv4,ip6tables适用于 IPv6,arptables适用于ARP,ebtables适用于以太网帧。
1.2 iptables 的结构
iptables --> Tables --> Chains --> Rules
2 四表五链
2.1 iptables 的四表
表 | 提供功能 | 内置规则链 |
---|---|---|
filter | 包过滤 | INPUT, FORWARD, OUTPUT |
nat | 网络地址转换 | PREROUTING, POSTROUTING, OUTPUT |
mangle | 包重构 | PREROUTING, POSTROUTING, INPUT, OUTPUT, FORWARD |
raw | 数据跟踪处理,提供连接跟踪机制 | OUTPUT, PREROUTING |
规则表之间的优先顺序为 raw -> mangle -> nat -> filter.
filter 表:过滤规则表,默认表。
- INPUT链:处理进入本机的数据包;
- FORWARD链:处理转发的数据包;
- OUTPUT链:处理向外发送的数据包;
nat 表:地址转换表。
- PREROUTING链:在路由判断之前对数据包进行处理;
- POSTROUTING链:在路由判断之后对数据包进行处理;
- OUTPUT链:处理向外发送的数据包;
mangle 表:修改数据包内容。
- PREROUTING链:在路由判断之前对数据包进行处理;
- INPUT链:处理进入本机的数据包;
- FORWARD链:处理转发的数据包;
- OUTPUT链:处理向外发送的数据包;
- POSTROUTING链:在路由判断之后对数据包进行处理;
raw 表:原始数据包表。
- PREROUTING链:在路由判断之前对数据包进行处理;
- OUTPUT链:处理向外发送的数据包;
2.2 iptables 的五链
链 | 生效时间 | 功能 |
---|---|---|
PREROUTING | 数据包刚进入网络接口,路由之前 | 对刚进入网络接口数据包进行路由选择,是流入本机还是由本机转发 |
INPUT | 数据包从内核流入用户空间 | 对流入用户空间的包应用规则,是拒绝、丢弃还是接受 |
FORWARD | 数据包在内核空间中,从一个网络接口进入,另一个网络接口出去 | 对由本机转发的数据包应用规则 |
OUTPUT | 数据包从用户空间流出到内核空间 | 对从用户空间流出到内核空间的数据包应用规则 |
POSTROUTING | 数据包离开网络接口前 | 对离开本机前的数据包进行路由选择 |
3 数据包的传输过程
访问本机: 在INPUT链上做过滤
本机访问外部: 在OUTPUT链上做过滤
通过本机访问其他主机: 在FORWARD链上做过滤
(1)当一个数据包流入本机网卡时,它首先进入 PREROUTING 链,内核根据数据包目的 IP 判断是否需要转发出去
(2)如果数据包就是进入本机的,它将会到达 INPUT 链.INPUT 链规则接受该数据包后,相关进程就会收到它,进行处理后发送响应数据包,响应数据包会经过 OUTPUT 链,然后到 POSTROUTING 链后流出本机.
(3)如果数据包是要转发出去的,且内核允许转发 (通过 echo 1 > /proc/sys/net/ipv4/ip_forward 开启). 数据包就会经过 FORWARD 链,到达 POSTROUTING 链后流出本机
4 iptables 基本操作
- 启动iptables: service iptables start
- 关闭iptables: service iptables stop
- 重启iptables: service iptables restart
- 查看iptables状态: service iptables status
- 保存iptables配置: service iptables save
- iptables 服务配置文件: /etc/sysconfig/iptables-config
- iptables 规则保存文件: /etc/sysconfig/iptables
- 打开iptables 转发: echo “1” > /proc/sys/net/ipv4/ip_forward
5 iptables 设置规则
命令
iptables [-t 表名] 命令选项 [链名] [条件匹配] [-j 目标动作或跳转]Usage: iptables -[ACD] chain rule-specification [options]iptables -I chain [rulenum] rule-specification [options]iptables -R chain rulenum rule-specification [options]iptables -D chain rulenum [options]iptables -[LS] [chain [rulenum]] [options]iptables -[FZ] [chain] [options]iptables -[NX] chainiptables -E old-chain-name new-chain-nameiptables -P chain target [options]iptables -h (print this help information)
表名
Filter Nat Mangle Raw
命令选项
选项 | 描述 |
---|---|
-A | 在指定的链末尾追加一条新的规则 |
-D | 删除指定链中的一条规则 |
-I | 在指定的链中插入一条新的规则 |
-R | 修改或替换指定链中的一条规则 |
-L | 列出指定链中的所有规则 |
-F | 清空指定链中的所有规则 |
-N | 新建一条用户自定义的规则链 |
-X | 删除指定表中用户自定义的规则链 |
-P | 设置指定链的默认策略 |
-n | 以数字形式显示输出结果 |
-v | 查看规则列表时显示详细信息 |
-V | 查看iptables版本信息 |
-h | 查看帮助信息 |
–line-number | 查看规则列表时,显示规则在链中的顺序号 |
链名
INPUT链 - 处理来自外部的数据
OUTPUT链 - 处理向外发送的数据
FORWARD链 - 将数据转发到本机的其他网卡设备上
条件匹配
条件匹配分为基本匹配和扩展匹配,扩展匹配又分为隐式扩展和显示扩展
- 基本匹配
匹配参数 | 说明 |
---|---|
-p | 指定规则协议,tcp udp icmp all |
-s | 指定数据包的源地址,ip hostname |
-d | 指定目的地址 |
-i | 输入接口 |
-o | 输出接口 |
- 隐式扩展匹配
隐含扩展条件 | 需包含 | 扩展项 | 说明 |
---|---|---|---|
-m tcp | -p tcp | -sport | 源端口 |
-m tcp | -p tcp | -dport | 目标端口 |
-m tcp | -p tcp | -tcp-flags | SYN ACK RST FIN |
-m tcp | -p tcp | -syn | 第一次握手 |
-m udp | -p udp | -sport | 源端口 |
-m udp | -p udp | -dport | 目标端口 |
-m icmp | -p icmp | -icmp-type | 8:echo-request 0:echo-reply |
- 显示扩展匹配
显示扩展条件 | 扩展项 | 说明 |
---|---|---|
-m state | -state | 检测连接的状态 |
-m multiport | -source-ports | 多个源端口 |
-m multiport | -destination-ports | 多个目的端口 |
-m multiport | -ports | 源和目的端口 |
-m limit | -limit | 速率(包/分钟) |
-m limit | -limit-burst | 峰值速率 |
-m connlimit | -connlimit-above n | 多个条件 |
-m iprange | -src-range ip-ip | 源IP范围 |
-m iprange | -dst-range ip-ip | 目的IP范围 |
-m mac | -mac-source | mac地址限制 |
-m string | -algo[bm|kmp] | 匹配算法 |
-m string | -string"pattern" | 要匹配的字符串 |
-m recent | -name | 设定列表名称 |
-m recent | -rsource | 源地址 |
-m recent | -rdest | 目的地址 |
-m recent | -set | 添加源地址的包到列表中 |
-m recent | -update | 每次建立连接都更新列表 |
-m recent | -rcheck | 检测地址是否在列表 |
-m recent | -seconds | 指定时间内,与rcheck,update共用 |
-m recent | -hitcount | 命中次数,与rcheck,update共用 |
-m recent | -remove | 在列表中删除相应地址 |
- 目标值
数据包控制方式分为四种:
ACCEPT: 允许数据包通过
DROP: 直接丢弃数据包,不给出任何回应信息
REJECT: 拒绝数据包通过,必须时会给数据发送端一个响应信息
LOG: 在日志文件中记录日志信息,然后将数据包传递给下一条规则
QUEUE: 防火墙将数据包移交到用户空间
RETURN: 防火墙停止执行当前链中的后续Rules,并返回到调用链
help
iptables --help# 常用选项
-n, --number: 显示防火墙规则链的序号
-t <TABLE>: 指定表,默认表为 filter
-L, --list: 列出表下的防火墙规则链
-F, --flush: 清空防火墙规则链中所有条目# 命令选项
-P <chain> <target>: 指定默认的
-N <chain>: 创建新规则链
-E <old_chain> <new_chain>: 重命名规则链-A <chain> <rule>: 向规则链中追加规则
-A <chain> <rule_num>: 删除规则链中指定规则
-I <chain> [rule_num] <rule>: 向规则链中插入规则,默认在最开始插入规则
-D <chain> [rule_num]: 删除指定规则,默认删除 num=1 的规则
-R <chain> <rule_num> <rule>: 将规则链中指定规则-L [chain [rule_num]]: 列出指定链的防火墙规则.默认为表中所有
-S [chain [rule_num]]: 列出指定链的防火墙规则.默认为表中所有# 条件匹配
--- 基本匹配 ---
[!] -s, --src, --source: 检查源 IP
[!] -d, --dst, --destination: 检查目标 IP
[!] -p, --protocol {tcp|udp|icmp}: 检查报文协议
-i, --in-interface IFACE: 数据报文的流入接口.仅能用于 PREROUTING,INPUT 及 FORWARD 链上
-o, --out-interface IFACE: 数据报文的流出接口.仅能用于 FORWARD,OUTPUT 及 POSTROUTING 链上--- 隐式扩展匹配 ---
-p {tcp|udp}--dport PORT[-PORT]: 检查目标端口--sport PORT[-PORT]: 检查源端口
-p icmp--icmp-type: icmp 类型,0-8--- 显示扩展匹配,需要显示使用 -m 显示指定 ---
-m multiport: 多端口扩展[!] --source-ports,--sports port[,port|,port:port]...:指明多个源端口[!] --destination-ports,--dports port[,port|,port:port]...:指明多个离散的目标端口[!] --ports port[,port|,port:port]...-m iprange: 指定 ip 地址范围[!] --src-range from[-to]:指明连续的源 IP 地址范围[!] --dst-range from[-to]:指明连续的目标 IP 地址范围-m string: 指定报文内容出现的字符串[!] --string pattern: 指定字符正则表达式-m time扩展: 指定时间范围--datestart--datestop--timestart--timestop--monthdays--weekdays-m connlimit: 指定并发连接数--connlimit-above n:连接的数量大于 n--connlimit-upto n: 连接的数量小于等于 n-m limit: 报文收发速率--limit rate[/second|/minute|/hour|/day]: 限制速率--limit-burst number: 限制并发量-m state: 根据连接追踪机制检查连接的状态--state {NEW,ESTABLISHED,RELATED,INVALIED}: 指定连接状态,一个或多个# 目标或动作
-j TARGET: 跳转至指定的 TARGETACCEPT: 接受DROP: 丢弃,不回应任何信息REJECT: 拒绝,回应拒绝信息RETURN: 返回调用链REDIRECT: 端口重定向LOG: 在 /var/log/messages 文件中记录日志信息,然后将数据包传递给下一条规则MARK: 做防火墙标记DNAT --to: 目标地址转换SNAT: 源地址转换MASQUERADE: 地址伪装...自定义链:由自定义链上的规则进行匹配检查
6 iptables 常见命令
- 删除 iptables 现有规则
iptables -F
- 查看iptables规则
iptables -L (iptables -L -v -n)
- 增加一条规则到最后
iptables -A INPUT -i eth0 -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT
- 添加一条规则到指定位置
iptables -I INPUT 2 -i eth0 -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT
- 删除一条规则
iptables -D INPUT 2
- 修改一条规则
iptables -R INPUT 3 -i eth0 -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT
- 设置默认策略
iptables -P INPUT DROP
- 允许远程主机进行ssh连接
iptables -A INPUT -i eth0 -p tcp --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPTiptables -A OUTPUT -o eth0 -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT
- 允许本地主机进行ssh连接
iptables -A INPUT -i eth0 -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPTiptables -A OUTPUT -o eth0 -p tcp --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT
- 允许HTTP请求
iptables -A INPUT -i eth0 -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPTiptables -A OUTPUT -o eth0 -p tcp --sport 80 -m state --state ESTABLISHED -j ACCEPT
- 限制ping 192.168.146.3主机的数据包数,平均2/s,最多不能超过3个
iptables -A INPUT -i eth0 -d 192.168.146.3 -p icmp --icmp-type 8 -m limit --limit 2/second --limit-burst 3 -j ACCEPT
- 限制ssh连接速率(默认策略是DROP)
iptables -I INPUT 1 -p tcp --dport 22 -d 192.168.146.3 -m state --state ESTABLISHED -j ACCEPTiptables -I INPUT 2 -p tcp --dport 22 -d 192.168.146.3 -m limit --limit 2/minute --limit-burst 2 -m state --state NEW -j ACCEPT
7 常用 iptables 规则链
允许 ssh 连接,仅开放 22 端口
iptables -A INPUT -i eth0 -p tcp --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT# 仅对指定网段开放 22 端口
iptables -A INPUT -i eth0 -p tcp -s 192.168.200.0/24 --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT# 一次性开放多端口 22,80,443
iptables -A INPUT -i eth0 -p tcp -m multiport --dports 22,80,443 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp -m multiport --sports 22,80,443 -m state --state ESTABLISHED -j ACCEPT
允许 ping
# 从外部向内部 ping
iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT
iptables -A OUTPUT -p icmp --icmp-type echo-reply -j ACCEPT# 从内部向外部 ping
iptables -A OUTPUT -p icmp --icmp-type echo-request -j ACCEPT
iptables -A INPUT -p icmp --icmp-type echo-reply -j ACCEPT
防止 DDOS 攻击
iptables -A INPUT -p tcp --dport 80 -m limit --limit 25/minute --limit-burst 100 -j ACCEPT
设置端口转发
iptables -t nat -A PREROUTING -p tcp -d 192.168.102.37 --dport 422 -j DNAT --to 192.168.102.37:22
iptables -A INPUT -i eth0 -p tcp --dport 422 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp --sport 422 -m state --state ESTABLISHED -j ACCEPT
记录丢弃的包
iptables -N LOGGING
iptables -A LOGGING -m limit --limit 2/min -j LOG --log-prefix "IPTables Packet Dropped: " --log-level 7
iptables -A LOGGING -j DROP
iptables -A INPUT -j LOGGING
8 iptables 性能优化技巧
合理的配置 iptables 规则可以保护我们的内部主机。但是当 iptables 规则设置不合理时,可能会造成服务不可访问或服务性能下降。因此在使用 iptables 配置防火墙规则时,应注意如下几点:
安全放行所有 ESTABLISHED 状态连接,建议放在第一条,效率更高
iptables -I INPUT -m state --state ESTABLISHED -j ACCEPT
iptables -I OUTPUT -m state --state ESTABLISHED -j ACCEPT
尽可能将可由一条规则能够描述的多个规则合并为一条规则,如添加多个端口 / IP 访问
iptables -A INPUT -p tcp -m multiport --dports 22,80,443 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -p tcp -m multiport --sports 22,80,443 -m state --state ESTABLISHED -j ACCEPTiptables -A INPUT -m iprange --src-range 192.168.0.10-192.168.0.20 -j ACCEPT
iptables -A OUTPUT -m iprange --src-range 192.168.0.10-192.168.0.20 -j ACCEPT
有特殊目的限制访问功能要在放行规则之前加以拒绝
# 对服务器限制发送带有 *iqiyi.com 的报文
iptables -I OUTPUT 2 -m string --string "*iqiyi.com" --algo kmp -j REJECT
谨慎放行入站的新请求
在规则最后添加默认策略
iptables -A INPUT -P DROP
9 示例
9.1 将内网机器的服务暴露在公网,让客户可以访问
- wifi 连接
// 配置过,可忽略
sysctl -w net.ipv4.ip_forward=1// 离开时进行地址伪装 【如果wifi连接,DHCP分配对外地址,使用该命令】
iptables -t nat -A POSTROUTING -j MASQUERADE// eth0 网口,tcp 12289 端口进来的,目标地址转换成 192.168.10.200
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 12289 -j DNAT --to-destination 192.168.10.200
- pc 连接 eth0,外设 连接 eth1
iptables 双网卡 外设之间互联
外设A和B分别连接 linux 设备 网卡 A 和 网卡 B,设备间通信之间互联 iptables 双网卡
// 配置过,可忽略
sysctl -w net.ipv4.ip_forward=1
// 在 PREROUTING 链中添加一条 DNAT 规则,将进入 eth0 的端口 12289 的数据包目标地址改为 192.168.10.200。
sudo iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 12289 -j DNAT --to-destination 192.168.10.200
// 在 POSTROUTING 链中添加一条 SNAT 规则,这将确保从 192.168.10.200 发出的响应能够正确地通过 eth0 返回给原始发送者// 不行
sudo iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 12289 -j DNAT --to-destination 192.168.100.7
// 不行
sudo iptables -t nat -A POSTROUTING -o eth1 -p tcp --dport 12289 -j SNAT --to-source 192.168.100.7
iptables -t nat -A PREROUTING -d 192.168.100.100 -p tcp --dport 12289 -j DNAT --to-destination 192.168.10.200:12289
iptables -t nat -A POSTROUTING -d 192.168.10.200 -p tcp --dport 12289 -j SNAT --to-source 192.168.100.100
iptables端口转发配置实现
https://blog.csdn.net/C3399/article/details/117820080?spm=1001.2014.3001.5502
rockchip@ubuntu:~$ systemctl status iptables
Unit iptables.service could not be found.
查看iptables规则
sudo iptables -L (iptables -L -v -n)
// 如下查看
sudo iptables -t nat -L -n -v
打开 iptables 转发并查看
- 打开 iptables 转发
echo "1" > /proc/sys/net/ipv4/ip_forward
- 查看
rockchip@ubuntu:~$ cat /proc/sys/net/ipv4/ip_forward
1
rockchip@ubuntu:~$
规则保存
# 保存规则
iptables-save > /etc/iptables.rules# 恢复规则
iptables-restore < /etc/iptables.rules
rockchip@ubuntu:~/sen$ sudo iptables-save > ipables_rules.v4
创建 iptables.service 文件
- 检查 iptables 是否已安装
rockchip@ubuntu:~$ dpkg -l | grep iptables
ii iptables 1.8.4-3ubuntu2.1 arm64 administration tools for packet filtering and NAT
rockchip@ubuntu:~$
- 如果 iptables 已安装但没有 iptables.service 文件,你可以手动创建一个。以下是一个示例 iptables.service 文件的内容:
rockchip@ubuntu:/etc/systemd/system$ sudo touch iptables.service
rockchip@ubuntu:/etc/systemd/system$ sudo vim iptables.service
[Unit]
Description=iptables rules
After=network.target[Service]
Type=root
ExecStart=/usr/sbin/iptables-restore < /opt/bot/ipables_rules.v4
#ExecReload=/sbin/iptables-restore /etc/iptables/rules.v6
ExecStartPost=/bin/echo "config the iptables rules, success!!!"
RemainAfterExit=yes[Install]
WantedBy=multi-user.target
-
内容保存到 /etc/systemd/system/iptables.service
-
重新加载 systemd 配置:
sudo systemctl daemon-reload
- 运行 iptables.service
sudo systemctl start iptables
- 设置服务开机自启【每次开机自启】
sudo systemctl enable iptables
- 检查服务状态
systemctl status iptablesroot@r42:~# systemctl status iptables
● iptables.serviceLoaded: not-found (Reason: No such file or directory)Active: inactive (dead)
root@r42:~#rockchip@ubuntu:/etc/systemd/system$ systemctl status iptables
● iptables.service - iptables rulesLoaded: loaded (/etc/systemd/system/iptables.service; disabled; vendor preset: enabled)Active: active (exited) since Sat 2025-01-11 07:30:18 CST; 18s agoProcess: 6766 ExecStart=/usr/sbin/iptables-restore /opt/bot/ipables_rules.v4 (code=exited, status=0/SUCCESS)Process: 6767 ExecStartPost=/bin/echo config the iptables rules, success!!! (code=exited, status=0/SUCCESS)Main PID: 6766 (code=exited, status=0/SUCCESS)Jan 11 07:30:18 ubuntu.rockchip systemd[1]: Starting iptables rules...
Jan 11 07:30:18 ubuntu.rockchip echo[6767]: config the iptables rules, success!!!
Jan 11 07:30:18 ubuntu.rockchip systemd[1]: Started iptables rules.
NAT的实现分为下面类型:
SNAT:source NAT ,支持POSTROUTING, INPUT,让本地网络中的主机通过某一特定地址访问外部网络,实现地址伪装,请求报文:修改源IP
DNAT:destination NAT 支持PREROUTING , OUTPUT,把本地网络中的主机上的某服务开放给外部网络访问(发布服务和端口映射),但隐藏真实IP,请求报文:修改目标IP
PNAT: port nat,端口和IP都进行修改
永久有效:
一文详解iptables基础知识
9.2 iptables 双网卡 外设之间互联
瑞芯微|如何让拥有双网口的Linux设备实现数据包转发?
// final
sudo iptables -t nat -L -n -vsudo sysctl -w net.ipv4.ip_forward=1
sudo iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 12289 -j DNAT --to-destination 192.168.10.200:12289
sudo iptables -t nat -A POSTROUTING -o eth1 -p tcp --dport 12289 -j SNAT --to-source 192.168.10.8
rockchip@ubuntu:~$ sudo cat /etc/sysctl.conf | grep ipv4
#net.ipv4.conf.default.rp_filter=1
#net.ipv4.conf.all.rp_filter=1
#net.ipv4.tcp_syncookies=1
#net.ipv4.ip_forward=1
#net.ipv4.conf.all.accept_redirects = 0
# net.ipv4.conf.all.secure_redirects = 1
#net.ipv4.conf.all.send_redirects = 0
#net.ipv4.conf.all.accept_source_route = 0
#net.ipv4.conf.all.log_martians = 1net.ipv4.ip_forward=1
系统重启后,防火墙默认不会开机启动,需要再次执行/sbin/iptables-restore < /etc/sysconfig/iptables命令,防火墙规则才能生效
- 如图显示,有数据包被处理
- 数据包一直是零,说明配置没成功
sudo modinfo iptable_nat
- 显示透传升级 LCD 屏幕程序
9.3 iptables
iptables详解
10 工具
telnet
sudo apt install telnet
telnet 192.168.100.7 12289
curl
curl http://192.168.10.200:12289
wireshark
sudo apt install wireshark
tcpdump
sudo apt install tcpdump
Tcpdump 详解(抓包)
// 终端1
tcpdump -i eth0 port 12289// 终端2
tcpdump -i eth1 port 12289
参考
1、wiki–iptables
2、iptables 具体介绍
3、Linux 防火墙及 iptables 详解
4、iptables 入门
5、iptables
6、iptables详解(1):iptables概念
7、iptables 概念、原理及相关操作介绍
8、全网超详细的Linux iptables命令详解以及详解iptables-save和iptables-restore命令
9、一文了解iptables
10、一文详解iptables基础知识
11、通过IPtables的NAT功能实现两个单独网络互通 iptables nat配置
12、linux启用NAT功能,双网卡共享网络,iptables简单实现
13、多网卡Iptables端口转发
14、瑞芯微|如何让拥有双网口的Linux设备实现数据包转发?
15、iptables 与 ip6tables 命令依赖的内核模块
16、使用iptables使多网口开发板可级联上网
17、iptables详解
18、stm32–iptables的SNAT和DNAT实验
19、转发–理解 iptables 原理