linux--防火墙 iptables 双网卡 NAT 桥接

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-flagsSYN ACK RST FIN
-m tcp-p tcp-syn第一次握手
-m udp-p udp-sport源端口
-m udp-p udp-dport目标端口
-m icmp-p icmp-icmp-type8: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-sourcemac地址限制
-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 原理

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/892509.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

oracle闪回表

文章目录 闪回表案例1&#xff1a;&#xff08;未清理回收站时的闪回表--成功&#xff09;案例2&#xff08;清理回收站时的闪回表--失败&#xff09;案例3&#xff1a;彻底删除表&#xff08;不经过回收站--失败&#xff09;案例4&#xff1a;闪回表之后重新命名新表总结1、删…

202506读书笔记|《飞花令·江》——余霞散成绮,澄江静如练,江梅一夜落红雪,便有夭桃无数开

202506读书笔记|《飞花令江》——余霞散成绮&#xff0c;澄江静如练&#xff0c;江梅一夜落红雪&#xff0c;便有夭桃无数开 摘录 《飞花令江》素心落雪编著&#xff0c;飞花令得名于唐代诗人韩翃《寒食》中的名句“春城无处不飞花”&#xff0c;类似于行酒令&#xff0c;是文人…

《系统爆破:MD5易破,后台登录可爆破?》

声明&#xff1a;笔记的只是方便各位师傅学习知识&#xff0c;以下代码、网站只涉及学习内容&#xff0c;其他的都与本人无关&#xff0c;切莫逾越法律红线&#xff0c;否则后果自负。 爆破Sales系统 一、爆破MD5 场景&#xff1a;已知MD5的加密字符串&#xff0c;如何得知明…

Copula算法原理和R语言股市收益率相依性可视化分析

阅读全文&#xff1a;http://tecdat.cn/?p6193 copula是将多变量分布函数与其边缘分布函数耦合的函数&#xff0c;通常称为边缘。在本视频中&#xff0c;我们通过可视化的方式直观地介绍了Copula函数&#xff0c;并通过R软件应用于金融时间序列数据来理解它&#xff08;点击文…

DSP+Simulink——点亮LED灯(TMSDSP28379D)超详细

实现功能&#xff1a;DSP28379D-LED灯闪烁 :matlab为2019a :环境建立见之前文章 Matlab2019a安装C2000 Processors超详细过程 matlab官网链接&#xff1a; Getting Started with Embedded Coder Support Package for Texas Instruments C2000 Processors Overview of Creat…

APP上架之Android 证书 MD5 指纹

Android 证书 MD5 指纹 1. 什么是 Android 证书 MD5 指纹&#xff1f; Android 证书 MD5 指纹是对证书数据进行 MD5 哈希运算后得到的 128 位字符串。在 Android 开发中&#xff0c;每个证书在理论上都有一个唯一的 MD5 指纹&#xff0c;用于识别和验证证书的有效性。证书指纹…

【Rust自学】11.6. 控制测试运行:并行和串行(连续执行)测试

喜欢的话别忘了点赞、收藏加关注哦&#xff0c;对接下来的教程有兴趣的可以关注专栏。谢谢喵&#xff01;(&#xff65;ω&#xff65;) 11.6.1. 控制测试的运行方式 cargo test和cargo run一样&#xff0c;cargo test也会编译代码并生成一个二进制文件用于测试&#xff0c;…

计算机网络学习笔记

第1课 绪论、传输介质 【知识点回顾】 两种导线可以减小电磁干扰&#xff1a; 双绞线&#xff08;分为非屏蔽双绞线、屏蔽双绞线&#xff09;&#xff08;RJ-45用&#xff09;同轴电缆&#xff08;短距离使用&#xff09;网络通信的基本单位&#xff1a;位&#xff08;bit&…

STM32之CAN通讯(十一)

STM32F407 系列文章 - CAN通讯&#xff08;十一&#xff09; 目录 前言 一、CAN 二、CAN驱动电路 三、CAN软件设计 1.CAN状态初始化 2.头文件相关定义 3.接收中断服务函数 4.用户层使用 1.用户层相关定义 2.发送数据 3.接收数据 1.查询方式处理 2.中断方式处理 3…

Java聊天小程序

拟设计一个基于 Java 技术的局域网在线聊天系统,实现客户端与服务器之间的实时通信。系统分为客户端和服务器端两类,客户端用于发送和接收消息,服务器端负责接收客户端请求并处理消息。客户端通过图形界面提供用户友好的操作界面,服务器端监听多个客户端的连接并管理消息通…

C#Halcon找线封装

利用CreateMetrologyModel封装找线工具时&#xff0c;在后期实际应用调试时容易把检测极性搞混乱&#xff0c;造成检测偏差&#xff0c;基于此&#xff0c;此Demo增加画线后检测极性的指引&#xff0c;首先看一下效果 加载测试图片 画线 确定后指引效果 找线效果 修改显示 UI代…

【linux系统之redis6】redis的基础命令使用及springboot连接redis

redis的基础命令很多&#xff0c;大部分我们都可以在官网上找到&#xff0c;真的用的时候可以去官网找&#xff0c;不用全部记住这些命令 redis通用的基础命令的使用 代码测试 string类型常见的命令 key值的结构&#xff0c;可以区分不同的需求不同的业务名字 hash类型 创建…

ISP各模块功能介绍

--------声明&#xff0c;本文为转载整理------- ISP各个模块功能介绍&#xff1a; 各模块前后效果对比&#xff1a; 黑电平补偿&#xff08;BLC&#xff09; 在理想情况下&#xff0c;没有光照射的像素点其响应值应为0。但是&#xff0c;由于杂质、受热等其它原因的影响&…

前缀和练习

【模版】前缀和 【模板】前缀和_牛客题霸_牛客网 思路 要想快速找出某一连续区间的和&#xff0c;我们就要使用前缀和算法。 其实本质是再创建一个dp数组&#xff0c;每进一次循环加上原数组的值&#xff08;dp代表arr的前n项和&#xff09;&#xff1a; vector<int>…

3. 【Vue实战--孢子记账--Web 版开发】--登录大模块

从这篇文章开始我们就进入到了孢子记账的前端开发&#xff0c;在本专栏中我默认大家的电脑上都已经配置好了开发环境。下面我们一起开始编写孢子记账的Web版吧。 一、功能 登录大模块功能包括注册、登录和找回密码功能&#xff0c;在本篇文章中我只会展示注册界面的实现&…

【2024年华为OD机试】 (A卷,100分)- 端口合并(Java JS PythonC/C++)

一、问题描述 题目描述 有 M 个端口组 (1 < M < 10)&#xff0c; 每个端口组是长度为 N 的整数数组 (1 < N < 100)&#xff0c; 如果端口组间存在 2 个及以上不同端口相同&#xff0c;则认为这 2 个端口组互相关联&#xff0c;可以合并。 输入描述 第一行输入端…

73.矩阵置零 python

矩阵置零 题目题目描述示例 1&#xff1a;示例 2&#xff1a;提示&#xff1a; 题解思路分析Python 实现代码代码解释提交结果 题目 题目描述 给定一个 m x n 的矩阵&#xff0c;如果一个元素为 0 &#xff0c;则将其所在行和列的所有元素都设为 0 。请使用 原地 算法。 示例…

基于华为ENSP的OSPF状态机、工作过程、配置保姆级别详解(2)

本篇技术博文摘要 &#x1f31f; 基于华为enspOSPF状态机、OSPF工作过程、.OSPF基本配置等保姆级别具体详解步骤&#xff1b;精典图示举例说明、注意点及常见报错问题所对应的解决方法 引言 &#x1f4d8; 在这个快速发展的技术时代&#xff0c;与时俱进是每个IT人的必修课。我…

SOLID原则学习,接口隔离原则

文章目录 1. 定义2. 为什么要遵循接口隔离原则&#xff1f;3. 违反接口隔离原则的例子4. 遵循接口隔离原则的改进5. 总结 1. 定义 接口隔离原则&#xff08;Interface Segregation Principle, ISP&#xff09; 接口隔离原则是面向对象设计中的五大原则&#xff08;SOLID&#…

Jenkins-持续集成、交付、构建、部署、测试

Jenkins-持续集成、交付、构建、部署、测试 一: Jenkins 介绍1> Jenkins 概念2> Jenkins 目的3> Jenkins 特性4> Jenkins 作用 二&#xff1a;Jenkins 版本三&#xff1a;DevOps流程简述1> 持续集成&#xff08;Continuous Integration&#xff0c;CI&#xff0…