iptables

目录

一、概述

二、结构

1.iptables的四表五链结构

1.1四表

1.2五链

1.3包过滤的匹配流程

1.4规则链内部的处理规则

三、基本语法

1.管理选项

2.控制选项(需大写)

3.案例

4.iptables各字段解读

4.1案例

4.2添加规则

4.3丢弃规则

4.4清空filter表中所有规则、计数器

5.防火墙规则匹配

四、SNAT和DNAT

1.SNAT原理与应用

1.1SNAT转换

2.DNAT原理与应用

2.1DNAT转换

五、部署

1.SNAT

2.Dnat


一、概述

Linux的防火墙体系主要工作在网络层,针对TCP/IP数据包实施过滤和限制。属于典型的包过滤防火墙。linux系统的防火墙体系基于内核编码实现,具有非常稳定的性能和极高的效率,因此获得广泛的应用。

netfilter    指的是linux内核中实现包过滤防火墙的内部结构,不以程序或文件的形式存在,属于“内核态”又称内核空间的防火墙功能体系

iptables:指的是用来管理linux防火墙的命令程序,通常位于/sbin/iptables目录下,属于“用户态”又称用户空间的防火墙管理体系

iptables的作用是为包过滤机制的实现提供规则,通过各种不同的规则,告诉netfilter对来自某些源,前往某些目的或具有某些协议特征的数据包应该如何处理,为了更加方便的组织和管理防火墙规则,iptables采用了表和链的分层结构

高并发的时候,iptables影响性能,一般使用硬件防火墙

二、结构

其中,每个规则表相当于内核空间的一个容器,根据规则集的不同用途划分为默认的四个表,在每个表容器内又包括不同的规则链,根据处理数据包的不同时机划分为五种链

1.iptables的四表五链结构

iptables的作用是为包过滤机制的实现提供规则,通过各种不同的规则,告诉netfilter对来自某些源,前往某些目的或具有某些协议特征的数据包应该如何处理,为了更加方便的组织和管理防火墙规则,iptables采用了表和链的分层结构

所以它会对请求的数据包的包头数据进行分析,根据我们预先设定的规则进行匹配来决定是否可以进入主机

其中,每个规则表相当于内核空间的一个容器,根据规则集的不同用途划分为默认的四个表,在每个表容器内又包括不同的规则链,根据处理数据包的不同时机划分为五种链

1.1四表

filter    根据具体的规则要求决定如何处理一个数据包(确定是否放行该数据包),filter 表对应的内核模块为 iptable_filter,表内包含三个链,即 INPUT、FORWARD、 OUTPUT。

nat    用来修改数据包的ip地址(源、目标),端口号等信息

mangle    用来修改数据包的服务类型、生命周期,或者设置mark标记实现流量整形等高级应用

raw    主要用来决定是否对数据包进行状态跟踪

1.2五链

INPUT    当收到访问防火墙本机地址的数据包时,应用此链中的规则

OUTPUT    当防火墙本机向外发送数据包时,应用此链中的规则

FORWARD    当接收到需要通过防火墙中转发送给其他地址的数据包时,应用此链中的规则

PREROUTING    在对数据包做路由选择之前,应用此链中的规则

POSTROUTING    在对数据包做路由选择之后,应用此链中的规则

1.3包过滤的匹配流程

规则表应用顺序:raw→mangle→nat→filter

规则链的应用顺序取决于数据的流向

入站数据流向:PREROUTING→路由选择→INPUT→应用程序

转发数据流向:PREROUTING→路由选择→FORWARD→POSTROUTING

出站数据流向:OUTPUT→路由选择→POSTROUTING

1.4规则链内部的处理规则

按第一条规则……第二条规则的顺序进行匹配处理,遵循“匹配即停止”的原则,

一旦找到一条匹配规则将不再检查后续的其他规则,如果一直找不到匹配的规则,就按默认规则处理。

默认规则用iptables -L查看,规则链后面出现(policy ACCEPT)即是默认放行

默认策略不参与链内规则的顺序编排

-F清空链时,默认策略不受影响

[root@localhost ~]# which iptables

/usr/sbin/iptables

注意:需要先关闭firewalld防火墙否则会跟iptables起冲突

需要先安装iptables-services软件(yum安装,默认系统自带iptables命令)

安装完需设定开机自启

三、基本语法

iptables 【-t 表名】 【管理选项】【链名】【匹配条件】 【-j 控制类型】

【-t 表名】如果不指定表名,默认是filter表

iptables后面必须先指定表名然后才是链名

1.管理选项

管理选项                         用法示例

-A    在指定链末尾追加一条    iptables -A INPUT

-I    在指定链中插入一条新的,未指定序号默认作为第一条    iptables -I INPUT

-P    指定默认规则    iptables -P  OUTPUT ACCEPT

-D    删除    iptables -t nat -D INPUT

-R    修改、替换某一条规则    iptables -t nat -R INPUT

-L    查看    iptables -t nat -L

-n    所有字段以数字形式显示(比如任意ip地址是0.0.0.0而不是anywhere,比如显示协议端口号而不是服务名)    iptables -L -n,iptables -nL,iptables -vnL

-v  查看时显示更详细信息,常跟-L一起使用

--line-number    规则带编号    iptables -t nat -L -n --line-number /iptables -t nat -L --line-number

-F    清除链中所有规则    iptables -F

-X  清空自定义链的规则,不影响其他链      iptables -X

-Z  清空链的计数器(匹配到的数据包的大小和总和)iptables -Z

-S  查看链的所有规则或者某个链的规则/某个具体规则后面跟编号       iptables -t nat -S、iptables -t nat -S POSTROUTING 1

2.控制选项(需大写)

ACCEPT    允许数据包通过

REJECT    拒绝数据包通过,必要时会给数据包发送端一个响应信息

DROP    直接丢弃数据包,不给任何回应

LOG        在/var/log/messages文件中记录日志信息,然后将数据包给下一条规则,它本身不处理数据包

3.案例

查看filter表中的所有规则

iptables -L

查看链中的条目以数字形式

iptables -L -n --line-number

查看filter表中所有规则并显示详情

[root@localhost ~]# iptables -vnL

Chain INPUT (policy ACCEPT 16471 packets, 3082K bytes)

 pkts bytes target     prot opt in     out     source               destination   

4.iptables各字段解读

pkts:对应规则匹配到的报文的个数。

bytes:对应匹配到的报文包的大小总和。

target:规则对应的target,往往表示规则对应的"动作",即规则匹配成功后需要采取的措施。

prot:表示规则对应的协议,是否只针对某些协议应用此规则。

opt:表示规则对应的选项。

in:表示数据包由哪个接口(网卡)流入,我们可以设置通过哪块网卡流入的报文需要匹配当前规则。

out:表示数据包由哪个接口(网卡)流出,我们可以设置通过哪块网卡流出的报文需要匹配当前规则。

source:表示规则对应的源头地址,可以是一个IP,也可以是一个网段。

destination:表示规则对应的目标地址。可以是一个IP,也可以是一个网段。

packages:匹配到的包数量

bytes:匹配到的总字节数

4.1案例

[root@localhost ~]# iptables -t nat -S    //查看nat表中所有链的所有规则

-P PREROUTING ACCEPT

-P INPUT ACCEPT

-P OUTPUT ACCEPT

-P POSTROUTING ACCEPT

-A POSTROUTING -s 192.168.122.0/24 -d 224.0.0.0/24 -j RETURN

-A POSTROUTING -s 192.168.122.0/24 -d 255.255.255.255/32 -j RETURN

-A POSTROUTING -s 192.168.122.0/24 ! -d 192.168.122.0/24 -p tcp -j MASQUERADE --to-ports 1024-65535

-A POSTROUTING -s 192.168.122.0/24 ! -d 192.168.122.0/24 -p udp -j MASQUERADE --to-ports 1024-65535

-A POSTROUTING -s 192.168.122.0/24 ! -d 192.168.122.0/24 -j MASQUERADE

[root@localhost ~]# iptables -t nat -S INPUT    //查看nat表中INPUT链的所有规则

-P INPUT ACCEPT

[root@localhost ~]# iptables -t nat -S POSTROUTING 1    //查看nat表中POSTROUTING链的第一条规则

-A POSTROUTING -s 192.168.122.0/24 -d 224.0.0.0/24 -j RETURN

iptables -I INPUT -j DROP     //如果给filter表增加一条INPUT链的DROP规则,这时xshell立即就会断掉,因为它立即生效

[root@localhost ~]# iptables -L

Chain INPUT (policy ACCEPT)

target     prot opt source               destination         

DROP       all  --  anywhere             anywhere      

4.2添加规则

iptables -I INPUT -j ACCEPT    //给filter表添加再第一条规则,允许所有数据包访问本机,这时xshell就可以连接了,因为-I选项默认在开头插入规则

[root@localhost ~]# iptables -L --line-number

Chain INPUT (policy ACCEPT)

num  target     prot opt source               destination         

1    ACCEPT     all  --  anywhere             anywhere            

2    DROP       all  --  anywhere             anywhere     

4.3丢弃规则

[root@localhost ~]# iptables -P INPUT DROP   //给filter表INPUT链设置默认规则为丢弃所有,注意INPUT DROP之间不用-j了

[root@localhost ~]# iptables -L

Chain INPUT (policy DROP)    //这里policy就会变成DROP

target     prot opt source               destination         

ACCEPT     all  --  anywhere             anywhere            

DROP       all  --  anywhere             anywhere      

[root@localhost ~]# iptables -D INPUT -j DROP   //删除INPUT链的规则

[root@localhost ~]# 

[root@localhost ~]# iptables -L

Chain INPUT (policy DROP)

target     prot opt source               destination         

ACCEPT     all  --  anywhere             anywhere     

删除规则可以直接写编号比较方便也可直接指定删除的条目比较麻烦,不知道条目用--line-number看一下

[root@localhost ~]# iptables -D INPUT 2

4.4清空filter表中所有规则、计数器

iptables -F

iptables -X

iptables -Z

给filter表添加一条规则,允许来自192.168.245.1的数据包访问本机,-s表示指定源

[root@localhost ~]# iptables -A INPUT -s 192.168.245.1 -j ACCEPT

再追加一条规则,不允许192.168.245.211的数据包访问本机

[root@localhost ~]# iptables -A INPUT -s 192.168.245.211 -j DROP 

[root@localhost ~]# iptables -L

Chain INPUT (policy ACCEPT)

target     prot opt source               destination         

ACCEPT     all  --  192.168.245.1        anywhere            

DROP       all  --  192.168.245.211      anywhere       

[root@server ~]# ping 192.168.245.100   //192.168.245.211主机无法ping通本主机了没有任何回显

PING 192.168.245.100 (192.168.245.100) 56(84) bytes of data.

[root@localhost ~]# iptables -D INPUT 2    //删除DROP这条规则

[root@localhost ~]# iptables -A INPUT -s 192.168.245.211 -j REJECT   //重新写规则指定动作为REJECT

[root@localhost ~]# 

[root@localhost ~]# iptables -L

Chain INPUT (policy ACCEPT)

target     prot opt source               destination         

ACCEPT     all  --  192.168.245.1        anywhere            

REJECT     all  --  192.168.245.211      anywhere             reject-with icmp-port-unreachable

[root@server ~]# ping 192.168.245.100    //再次ping本主机发现有回显了,显示不可达

PING 192.168.245.100 (192.168.245.100) 56(84) bytes of data.

From 192.168.245.100 icmp_seq=1 Destination Port Unreachable

From 192.168.245.100 icmp_seq=2 Destination Port Unreachable

From 192.168.245.100 icmp_seq=3 Destination Port Unreachable

[root@localhost ~]# iptables -R INPUT 2 -s 192.168.245.211 -j ACCEPT   //修改规则为允许,此时192.168.245.211可以ping通本主机了,修改规则时需要指定链和编号

[root@localhost ~]# iptables -F INPUT   //清空INPUT链所有规则

5.防火墙规则匹配

通用匹配(协议匹配、地址匹配、网络接口匹配)

协议匹配:iptables编写协议匹配的规则时用-p指定协议名,如tcp、udp、icmp和all

[root@localhost ~]# iptables -A INPUT -p icmp -j REJECT     //不允许任何主机ping本主机

[root@localhost ~]# iptables -A OUTPUT -p icmp -j REJECT     //不允许本主机ping任何其他主机

[root@localhost ~]# iptables -A INPUT ! -p icmp -j DROP         //丢弃除icmp之外的其他连接,!表示取反

C:\Users\shengjie>ping 192.168.245.100   //真机ping虚拟机可以通,但xshell断连

正在 Ping 192.168.245.100 具有 32 字节的数据:

来自 192.168.245.100 的回复: 字节=32 时间<1ms TTL=64

来自 192.168.245.100 的回复: 字节=32 时间<1ms TTL=64

来自 192.168.245.100 的回复: 字节=32 时间<1ms TTL=64

来自 192.168.245.100 的回复: 字节=32 时间<1ms TTL=64

[root@localhost ~]# iptables -I INPUT -p tcp  -j ACCEPT    //在开头添加一条规则指定放通tcp协议,这时xshell可以连了

地址匹配:iptables编写地址匹配的规则时用 -s:表示源地址,-d:表示目标地址

iptables -I INPUT -s 192.168.100.200 -p icmp -j REJECT   不允许192.168.100.200这个主机ping本主机

iptables -I INPUT -s 192.168.100.0/24 -j DROP    禁止192.168.100.0网段的所有主机的所有连接

[root@localhost ~]# iptables -A OUTPUT -d 192.168.245.211 -p icmp -j DROP    //丢弃ping 192.168.245.211的数据包

[root@localhost ~]# ping 192.168.245.211

PING 192.168.245.211 (192.168.245.211) 56(84) bytes of data.

ping: sendmsg: 不允许的操作

[root@localhost ~]# ping 192.168.245.2   //其他地址可以ping通

PING 192.168.245.2 (192.168.245.2) 56(84) bytes of data.

64 bytes from 192.168.245.2: icmp_seq=1 ttl=128 time=0.089 ms

网络接口匹配:iptables编写地址匹配的规则时用 -i 进站接口名和 -o 出站接口名的形式

iptables -A INPUT -i ens33 -s 192.168.100.0/24 -j DROP  丢弃来自192.168.100.0网段并且从ens33接口进入的数据包

有可能不是主机型防火墙,网络型防火墙有两个网卡,既连公网又连私网的情况需要指定出入接口

[root@localhost ~]# iptables -A INPUT -i ens33 -j DROP   //所有从ens33网卡进来的数据包都被丢弃,所以xshell会断连

隐含匹配(端口匹配、icmp类型匹配)

端口匹配:编写端口匹配规则时使用“--sport 源端口”或“--dport 目标端口”的形式,针对的协议为tcp或udp,单个端口号或者以冒号分隔的端口范围都是可以的,但是不连续的端口不可以用冒号表示

[root@localhost ~]# iptables -A INPUT -p tcp --dport 22 -s 192.168.245.211 -j DROP   //不允许211主机ssh到本机,指定端口之前一定要指定协议

[root@localhost ~]# iptables -L

Chain INPUT (policy ACCEPT)

target     prot opt source               destination         

DROP       tcp  --  192.168.245.211      anywhere             tcp dpt:ssh

[root@localhost ~]# iptables -A INPUT -p tcp --dport 20:21 -s 192.168.245.211 -j DROP

[root@localhost ~]# iptables -A INPUT -p udp --dport 67:68 -s 192.168.245.211 -j DROP

[root@localhost ~]# 

[root@localhost ~]# iptables -L

Chain INPUT (policy ACCEPT)

target     prot opt source               destination         

DROP       tcp  --  192.168.245.211      anywhere             tcp dpt:ssh

DROP       tcp  --  192.168.245.211      anywhere             tcp dpts:ftp-data:ftp

DROP       udp  --  192.168.245.211      anywhere             udp dpts:bootps:bootpc

[root@localhost ~]# iptables -vnL

Chain INPUT (policy ACCEPT 35 packets, 2252 bytes)

 pkts bytes target     prot opt in     out     source               destination         

    7   420 DROP       tcp  --  *      *       192.168.245.211      0.0.0.0/0            tcp dpt:22

    0     0 DROP       tcp  --  *      *       192.168.245.211      0.0.0.0/0            tcp dpts:20:21

    0     0 DROP       udp  --  *      *       192.168.245.211      0.0.0.0/0            udp dpts:67:68

icmp类型匹配:编写icmp类型匹配规则时使用“--icmp-type ICMP类型”的形式,针对的协议是icmp

icmp类型:

Echo-Request:代码为8

Echo-Reply:代码为0

例:允许本机ping别的主机但是不允许别的主机ping本机

iptables -A INPUT -p icmp --icmp-type 8 -j DROP   //也可以直接写echo-request  

显示匹配:这种匹配方式要求有额外的内核模块提供支持,必须手动以“-m 模块名称”的形式调用相应的模块

多端口匹配、ip范围匹配、mac地址匹配、状态匹配

多端口匹配:编写多端口匹配时使用“-m multiport --dports 端口列表” “-m multiport --sports 端口列表” 的形式

iptables -A INPUT -p tcp -m multiport --dport 25,80,110,143 -j ACCEPT   允许开放25,80,110,143端口,以便访问邮件和网站服务

iptables -I INPUT -p tcp --dport 20:21 -j ACCEPT    开放ftp访问,冒号表示端口的范围从20-21端口

iptables -A INPUT -p tcp -m multiport --dport 20,21 -j ACCEPT   开放ftp访问的另一种方法,写成多端口模式,端口之间用逗号分隔

*这里--dport和--dports都可以

[root@localhost ~]# iptables -A INPUT -p tcp -m multiport --dport 80,22 -s 192.168.245.0/24 -j ACCEPT

ip范围匹配:编写ip地址范围匹配时使用“-m iprange --src-range IP范围” “-m iprange --dst-range IP范围” 的形式

iptables -A FORWARD -p tcp -m iprange --src-range 192.168.100.110-192.168.100.150 -j REJECT   不允许192.168.100.110-192.168.100.150范围的主机经过防火墙转发数据包

[root@localhost ~]# iptables -A INPUT -p icmp -m iprange --src-range 192.168.245.1-192.168.245.211 -j ACCEPT

mac地址匹配:编写mac地址匹配规则时使用“-m mac --mac-source MAC地址”

iptables -A INPUT -m mac --mac-source 00:0c:29:52:c0:ae -j DROP   不允许mac地址为00:0c:29:52:c0:ae的任何访问

iptables -R INPUT 1 -m mac --mac-source 00:0c:29:52:c0:ae -j REJECT   虽然拒绝访问但是会给一个主机无法到达的回应

状态匹配:编写iptables规则时使用“-m state --state 连接状态”的形式

常用的连接状态:

NEW:想要新建立联机的封包状态

ESTABLISHED:已经联机成功的联机状态

RELATED:表示这个封包是与我们主机发送出去的封包有关, 可能是响应封包或者是联机成功之后的传送封包!这个状态很常被设定,因为设定了他之后,只要未来由本机发送出去的封包,即使我们没有设定封包的 INPUT 规则,该有关的封包还是可以进入我们主机, 可以简化相当多的设定规则,比如FTP

INVALID:无效的封包,例如数据破损的封包状态    

iptables -I INPUT -p tcp -m state --state ESTABLISHED -j ACCEPT    允许响应请求的连接放行

iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

防火墙规则的保存

iptables-save  //查看当前规则

默认存放路径:/etc/sysconfig/iptables

iptables-save > /etc/sysconfig/iptables   //保存到默认配置文件下次重启不会丢失

[root@localhost ~]# systemctl stop iptables.service  //停止iptables服务会清空所有规则

四、SNAT和DNAT

1.SNAT原理与应用

SNAT 应用环境:局域网主机共享单个公网IP地址接入Internet (私有IP不能在Internet中正常路由)

SNAT原理:源地址转换,根据指定条件修改数据包的源IP地址,通常被叫做源映谢

SNAT转换前提条件:

1.局域网各主机已正确设置IP地址、子网掩码、默认网关地址

2.Linux网关开启IP路由转发 

linxu想系统本身是没有转发功能 只有路由发送数据 

临时打开:

echo 1 > /proc/sys/net/ipv4/ip_forward

sysctl -w net.ipv4.ip_forward=1

永久打开:

vim /etc/sysctl.conf

net.ipv4.ip_forward = 1    #将此行写入配置文件  

sysctl -p  #将取修改后的配置

注:还有一种方式静态路由,这个就比较麻烦

1.1SNAT转换

SNAT转换1:固定的公网IP地址:

#配置SNAT策略,实现snat功能,将所有192.168.100.0这个网段的ip的源ip改为10.0.0.1

iptables -t nat -A POSTROUTING -s 192.168.100.0/24 -o ens33 -j SNAT --to 10.0.0.1

                                    可换成单独IP  出站 外网网卡            外网IP

iptables -t nat -A POSTROUTING -s 192.168.100.0/24 -o ens33 -j SNAT --to-source 10.0.0.1-10.0.0.10

                                     内网IP   出站     外网网卡                    外网IP或地址池

SNAT转换2:非固定的公网IP地址(共享动态IP地址):

iptables -t nat -A POSTROUTING -s 192.168.100.0/24 -o ens33 -j MASQUERADE

小知识扩展:

一个IP地址做SNAT转换,一般可以让内网100到200 台主机实现上网。

2.DNAT原理与应用

DNAT应用环境:在Internet中发布位于局域网内的服务器

DNAT原理:目的地址转换,根据指定条件修改数据包的目的IP地址,保证了内网服务器的安全,通常被叫做目的映射。

DNAT转换前提条件

1.局域网的服务器能够访问Internet

2.网关的外网地址有正确的DNS解析记录

3. Linux网关开启IP路由转发

vim /etc/sysctl.conf

net.ipv4.ip_forward = 1

sysctl -p

2.1DNAT转换

DNAT转换1:发布内网的Web服务

#把从ens37进来的要访问web服务的数据包目的地址转换为192.168.100.16

iptables -t nat -A PREROUTING -i ens37 -d 10.0.0.1 -p tcp --dport 80 -j DNAT --to 192.168.100.16

或                                入站     公网IP                                  内网服务器IP

iptables -t nat -A PREROUTING -i ens37 -d 10.0.0.1 -p tcp --dport 80 -j DNAT --to-destination 192.168.100.13

                              入站          公网IP             端口                           内网服务器IP

                                                                                              注:默认时80

回包

iptables -t nat -A POSTROUTING  -s 192.168.100.16 -o ens37 -j SNAT --to 10.0.0.1

                                        内网IP    出站外网网卡            外网地址

可以现场做个域名解析

入站外网网卡外网IP

内网服务器IP

iptables -t nat -A PREROUTING -i ens37 -p tcp --dport 80 -j DNAT --to 192.168.100.13-192.168.100.20

地址段

DNAT转换2:发布时修改目标端口

#发布局域网内部的OpenSSH服务器,外网主机需使用250端口进行连接

iptables -t nat -A PREROUTING -i ens37 -d 10.0.0.1 -p tcp --dport 250 -j DNAT --to 192.168.100.13:22

                            入站外网网卡    外网IP           外网远程端口             内网IP和远程端口号

#在外网环境中使用SSH测试

ssh -p 250 root@10.0.0.1  

yum -y install net-tools    #若没有ifconfig 命令可提前使用yum 进行安装

ifconfig ens33

iptables -nvL -t nat  查看

注意:使用DNAT时,同时还有配合SNAT使用,才能实现响应数据包的正确返回

小知识扩展:

主机型防火墙主要使用INPUT、OUTPUT链,设置规则时一般要详细的指定到端口

网络型防火墙主要使用FORWARD链,设置规则时很少去指定到端口,一-般指定到IP地址或者到网段即可

防火墙规则的备份和还原

导出(备份)所有表的规则.

iptables-save > /opt/ipt.txt

导入(还原)规则

iptables-restore < /opt/ipt.txt

将iptables规则文件保存在/etc/sysconfig/iptables中,iptables服务启动时会自动还原规则

iptables-save > /etc/sysconfig/iptables

systemctl stop iptables      #停止iptables服务会清空掉所有表的规则

systemctl start iptables     #启动iptables服务会自动还原/etc/sysconfig/iptables中的规则

tcpdump tcp -i ens33 -t -s 0 -C 100 and dst port ! 22 and src net 192.168.1.0/24 -w ./target.cap

(1)tcp: ip icmp arp rarp 和 tcp、udp、icmp这些选项等都要放到第一个参数的位置,用来过滤数据报的类型

(2)-i ens33 : 只抓经过接口ens33的包

(3)-t : 不显示时间戳

(4)-s 0: 抓取数据包时默认抓取长度为68字节。加上-s0后可以抓到完整的数据包

(5)-c 100 :只抓取100个数据包

(6)dst port ! 22 : 不抓取目标端口是22的数据包

(7)src net 192.168.1.0/24 : 数据包的源网络地址为192.168.1.0/24

(8)-w ./target.cap : 保存成cap文件,方便用ethereal(即wireshark)分析

五、部署

1.SNAT

准备三台机器

Centos7-9 防火墙

Ens33 192.168.100.100  内网pc网关

Ens36 10.0.0.5  外网服务器网关

Centos7-10  外网

Ens33 10.0.0.100

Win10 内网客户机

Ip 192.168.100.37

网关  192.168.100.100

防火墙

内网客户机

Ping通网关

编辑防火墙 /etc/sysctl.conf

net.ipv4.ip_forward = 1

检查

配置防火墙规则

首先清空

iptables -t nat -A POSTROUTING -s 192.168.100.0/24 -o ens36 -j SNAT --to 10.0.0.5

ping通内网客户机

内网客户机

访问外网

2.Dnat

准备三台机器

外网pc 10.0.0.100

网关 10.0.0.5

防火墙

Centos 7-10

Ens36 外网网关 10.0.0.5

Ens33 内网网关 192.168.100.100

Centos7-9

Ens33 内网服务器  192.168.100.16

网关 192.168.100.100

防火墙清空规则

iptables -t nat -A PREROUTING -i ens36 -d 10.0.0.5 -p tcp --dport 80 -j DNAT --to 192.168.100.16

抓包

配置出站

iptables -t nat -A POSTROUTING -s 192.168.100.16 -o ens33 -j SNAT --to 10.0.0.5

DNAT转换2:发布时修改目标端口

发布局域网内部的OpenSSH服务器,外网主机需使用2222端口进行连接

iptables -t nat -A PREROUTING -i ens36 -d 10.0.0.5 -p tcp --dport 2222 -j DNAT --to 192.168.100.16:22

  • 24
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值