mirror of
https://gitlab.com/game-loader/hugo.git
synced 2025-04-20 05:52:07 +08:00
change pic location
This commit is contained in:
parent
89b083ef7d
commit
d08adfa422
@ -15,21 +15,36 @@ author = "Logic"
|
|||||||
#### 学习iptables的简单使用 {#学习iptables的简单使用}
|
#### 学习iptables的简单使用 {#学习iptables的简单使用}
|
||||||
|
|
||||||
查看iptables的用法 `man iptables`
|
查看iptables的用法 `man iptables`
|
||||||

|
|
||||||
|
{{< figure src="https://testingcf.jsdelivr.net/gh/game-loader/picbase@master/uPic/0412j5rJwu.png" >}}
|
||||||
|
|
||||||
在此处可以发现,iptables默认使用filter表,则 `iptables -t filter -nvL` 可以简写为 `iptables -nvL`
|
在此处可以发现,iptables默认使用filter表,则 `iptables -t filter -nvL` 可以简写为 `iptables -nvL`
|
||||||

|
|
||||||

|
{{< figure src="https://testingcf.jsdelivr.net/gh/game-loader/picbase@master/uPic/0412zfdaub.png" >}}
|
||||||
|
|
||||||
|
{{< figure src="https://testingcf.jsdelivr.net/gh/game-loader/picbase@master/uPic/04127WFdan.png" >}}
|
||||||
|
|
||||||
添加规则,允许所有网络访问本机,-A表示添加规则,INPUT指定添加规则的链,-j表示跳转到ACCEPT 方法。因为未指定任何其他选项,故为放行所有输入的数据包。
|
添加规则,允许所有网络访问本机,-A表示添加规则,INPUT指定添加规则的链,-j表示跳转到ACCEPT 方法。因为未指定任何其他选项,故为放行所有输入的数据包。
|
||||||

|
|
||||||
|
{{< figure src="https://testingcf.jsdelivr.net/gh/game-loader/picbase@master/uPic/0412KLIA5j.png" >}}
|
||||||
|
|
||||||
为FORWARD链添加默认规则,-P表示设置链的默认策略,这里我们将FORWARD链的默认策略设定为DROP,即丢弃转发包。
|
为FORWARD链添加默认规则,-P表示设置链的默认策略,这里我们将FORWARD链的默认策略设定为DROP,即丢弃转发包。
|
||||||

|
|
||||||
|
{{< figure src="https://testingcf.jsdelivr.net/gh/game-loader/picbase@master/uPic/04120uXSfw.png" >}}
|
||||||
|
|
||||||
再将FORWARD链的规则改回ACCEPT
|
再将FORWARD链的规则改回ACCEPT
|
||||||

|
|
||||||
|
{{< figure src="https://testingcf.jsdelivr.net/gh/game-loader/picbase@master/uPic/0412UeHZMa.png" >}}
|
||||||
|
|
||||||
添加一条自定义链test,查看man手册可知可使用-N选项增加自定义链
|
添加一条自定义链test,查看man手册可知可使用-N选项增加自定义链
|
||||||

|
|
||||||

|
{{< figure src="https://testingcf.jsdelivr.net/gh/game-loader/picbase@master/uPic/0412obrFnq.png" >}}
|
||||||
|
|
||||||
|
{{< figure src="https://testingcf.jsdelivr.net/gh/game-loader/picbase@master/uPic/0412pi1fR8.png" >}}
|
||||||
|
|
||||||
删除自定义链test
|
删除自定义链test
|
||||||

|
|
||||||
|
{{< figure src="https://testingcf.jsdelivr.net/gh/game-loader/picbase@master/uPic/0412R9hXeL.png" >}}
|
||||||
|
|
||||||
|
|
||||||
### 任务二 {#任务二}
|
### 任务二 {#任务二}
|
||||||
@ -38,39 +53,66 @@ author = "Logic"
|
|||||||
#### 熟悉iptables的各种参数 {#熟悉iptables的各种参数}
|
#### 熟悉iptables的各种参数 {#熟悉iptables的各种参数}
|
||||||
|
|
||||||
-p可以指定iptables规则匹配的协议,如允许INPUT链的所有tcp协议的数据包通过。
|
-p可以指定iptables规则匹配的协议,如允许INPUT链的所有tcp协议的数据包通过。
|
||||||

|
|
||||||
|
{{< figure src="https://testingcf.jsdelivr.net/gh/game-loader/picbase@master/uPic/0412KpnclT.png" >}}
|
||||||
|
|
||||||
-s可以指定规则匹配的IP源地址,如在INPUT链允许来自192.168.0.1主机的数据包通过。
|
-s可以指定规则匹配的IP源地址,如在INPUT链允许来自192.168.0.1主机的数据包通过。
|
||||||

|
|
||||||
|
{{< figure src="https://testingcf.jsdelivr.net/gh/game-loader/picbase@master/uPic/0412OHp2St.png" >}}
|
||||||
|
|
||||||
-d可以指定规则匹配的IP目的地址,如允许目的地址为192.168.0.1的数据包通过。
|
-d可以指定规则匹配的IP目的地址,如允许目的地址为192.168.0.1的数据包通过。
|
||||||

|
|
||||||
|
{{< figure src="https://testingcf.jsdelivr.net/gh/game-loader/picbase@master/uPic/04121SrSfQ.png" >}}
|
||||||
|
|
||||||
-i可以指定规则匹配的进入本地的网络接口,即网卡,如允许通过eth0网卡进入的数据包通过。
|
-i可以指定规则匹配的进入本地的网络接口,即网卡,如允许通过eth0网卡进入的数据包通过。
|
||||||

|
|
||||||
|
{{< figure src="https://testingcf.jsdelivr.net/gh/game-loader/picbase@master/uPic/0412DnSZWC.png" >}}
|
||||||
|
|
||||||
-o可以指定规则匹配离开本地使用的网络接口,如允许从eth0网卡离开的数据包通过。
|
-o可以指定规则匹配离开本地使用的网络接口,如允许从eth0网卡离开的数据包通过。
|
||||||

|
|
||||||
|
{{< figure src="https://testingcf.jsdelivr.net/gh/game-loader/picbase@master/uPic/0412XEuPrp.png" >}}
|
||||||
|
|
||||||
这里要注意该匹配操作只能用于OUTPUT,FORWARD和POSTROUTING这三个链,因为INPUT和PREROUTING是没有离开网络的包的。
|
这里要注意该匹配操作只能用于OUTPUT,FORWARD和POSTROUTING这三个链,因为INPUT和PREROUTING是没有离开网络的包的。
|
||||||
--sport用于指定规则匹配的通信源端口。如匹配从端口1111发起的tcp连接的数据包。
|
--sport用于指定规则匹配的通信源端口。如匹配从端口1111发起的tcp连接的数据包。
|
||||||

|
|
||||||
|
{{< figure src="https://testingcf.jsdelivr.net/gh/game-loader/picbase@master/uPic/0412l98cwB.png" >}}
|
||||||
|
|
||||||
--dport用于匹配通信目的端口,如匹配目的端口为80的tcp连接的数据包。
|
--dport用于匹配通信目的端口,如匹配目的端口为80的tcp连接的数据包。
|
||||||

|
|
||||||
|
{{< figure src="https://testingcf.jsdelivr.net/gh/game-loader/picbase@master/uPic/0412ew4AXy.png" >}}
|
||||||
|
|
||||||
可以对数据包的状态进行状态检测,一般有四种状态,分别是
|
可以对数据包的状态进行状态检测,一般有四种状态,分别是
|
||||||
|
|
||||||
> (1)NEW:该包想要建立一个新的连接(重新连接或连接重定向)。(2)RELATED:该包是属于某个已经建立的连接所建立的新连接。(3)ESTABLISHED:该包属于某个已经建立的连接。(4)INVALID:该包不匹配于任何连接,通常这些包被DROP。
|
> (1)NEW:该包想要建立一个新的连接(重新连接或连接重定向)。(2)RELATED:该包是属于某个已经建立的连接所建立的新连接。(3)ESTABLISHED:该包属于某个已经建立的连接。(4)INVALID:该包不匹配于任何连接,通常这些包被DROP。
|
||||||
|
|
||||||
如允许目的端口为22的tcp连接且状态为NEW或ESTABLISHED的数据包通过
|
如允许目的端口为22的tcp连接且状态为NEW或ESTABLISHED的数据包通过
|
||||||

|
|
||||||
|
{{< figure src="https://testingcf.jsdelivr.net/gh/game-loader/picbase@master/uPic/04126pRxTm.png" >}}
|
||||||
|
|
||||||
还可以指定一些特殊参数
|
还可以指定一些特殊参数
|
||||||
--icmp-type指定ICMP连接的类型编号,如匹配icmp协议且icmp类型编号为8的数据包
|
--icmp-type指定ICMP连接的类型编号,如匹配icmp协议且icmp类型编号为8的数据包
|
||||||

|
|
||||||
|
{{< figure src="https://testingcf.jsdelivr.net/gh/game-loader/picbase@master/uPic/0412mw3ilW.png" >}}
|
||||||
|
|
||||||
-m multiport指定多端口号,如匹配类型为tcp连接且目的端口号为22,53,80,110的数据包。
|
-m multiport指定多端口号,如匹配类型为tcp连接且目的端口号为22,53,80,110的数据包。
|
||||||

|
|
||||||
|
{{< figure src="https://testingcf.jsdelivr.net/gh/game-loader/picbase@master/uPic/0412B4ylRC.png" >}}
|
||||||
|
|
||||||
-m iprange指定ip段,可以指定源地址或者目的地址的IP段,如禁止源地址在192.168.1.2-192.168.1.7之间的数据包通过。
|
-m iprange指定ip段,可以指定源地址或者目的地址的IP段,如禁止源地址在192.168.1.2-192.168.1.7之间的数据包通过。
|
||||||

|
|
||||||
|
{{< figure src="https://testingcf.jsdelivr.net/gh/game-loader/picbase@master/uPic/0412G45IZY.png" >}}
|
||||||
|
|
||||||
-m connlimit --comlimit-above限定每个客户端产生的连接个数,如限制每个客户端最多同时与本地网络有100个tcp连接,超过的连接数据包拒绝。
|
-m connlimit --comlimit-above限定每个客户端产生的连接个数,如限制每个客户端最多同时与本地网络有100个tcp连接,超过的连接数据包拒绝。
|
||||||

|
|
||||||
|
{{< figure src="https://testingcf.jsdelivr.net/gh/game-loader/picbase@master/uPic/0412iAkfjf.png" >}}
|
||||||
|
|
||||||
-m limit限定连接速率,即限定匹配数据包的个数。如限制连接的最大数据包为6(一个客户端)
|
-m limit限定连接速率,即限定匹配数据包的个数。如限制连接的最大数据包为6(一个客户端)
|
||||||

|
|
||||||
|
{{< figure src="https://testingcf.jsdelivr.net/gh/game-loader/picbase@master/uPic/0412WldV0j.png" >}}
|
||||||
|
|
||||||
-m string限定字符串,使用--string来指定具体的字符串,使用--algo来指定算法为bm或者kmp。如丢弃从本地离开的匹配字符串tudou.com且使用bm算法的数据包。
|
-m string限定字符串,使用--string来指定具体的字符串,使用--algo来指定算法为bm或者kmp。如丢弃从本地离开的匹配字符串tudou.com且使用bm算法的数据包。
|
||||||

|
|
||||||
|
{{< figure src="https://testingcf.jsdelivr.net/gh/game-loader/picbase@master/uPic/0412v4Gpo7.png" >}}
|
||||||
|
|
||||||
|
|
||||||
#### iptables日志记录 {#iptables日志记录}
|
#### iptables日志记录 {#iptables日志记录}
|
||||||
@ -82,13 +124,20 @@ echo "kernel.warning /var/log/iptables.log" >> /etc/rsyslog.conf
|
|||||||
systemctl restart rsyslog
|
systemctl restart rsyslog
|
||||||
```
|
```
|
||||||
|
|
||||||

|
{{< figure src="https://testingcf.jsdelivr.net/gh/game-loader/picbase@master/uPic/04125sS6uf.png" >}}
|
||||||
|
|
||||||
配置iptables规则为将来自127.0.0.1的icmp数据包打印到日志且日志信息的前缀为 `iptables icmp-localhost`
|
配置iptables规则为将来自127.0.0.1的icmp数据包打印到日志且日志信息的前缀为 `iptables icmp-localhost`
|
||||||

|
|
||||||
|
{{< figure src="https://testingcf.jsdelivr.net/gh/game-loader/picbase@master/uPic/0412E8MINW.png" >}}
|
||||||
|
|
||||||
验证规则
|
验证规则
|
||||||

|
|
||||||
|
{{< figure src="https://testingcf.jsdelivr.net/gh/game-loader/picbase@master/uPic/0412p8dV1N.png" >}}
|
||||||
|
|
||||||
可见有匹配的数据包,查看日志信息
|
可见有匹配的数据包,查看日志信息
|
||||||

|
|
||||||
|
{{< figure src="https://testingcf.jsdelivr.net/gh/game-loader/picbase@master/uPic/0412YEnSCk.png" >}}
|
||||||
|
|
||||||
可以看到两个数据包的相关日志信息再次定义一些日志策略。如获取所有TCP日志且给出相应前缀为
|
可以看到两个数据包的相关日志信息再次定义一些日志策略。如获取所有TCP日志且给出相应前缀为
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
@ -116,7 +165,8 @@ iptables -A INPUT -p tcp --dport 22 -j LOG --log-prefix "iptables SSH "
|
|||||||
iptables -A INPUT -p icmp -j icmp
|
iptables -A INPUT -p icmp -j icmp
|
||||||
```
|
```
|
||||||
|
|
||||||

|
{{< figure src="https://testingcf.jsdelivr.net/gh/game-loader/picbase@master/uPic/0412vN7SKr.png" >}}
|
||||||
|
|
||||||
在这里使用了REJECT来拒绝数据包,使用DROP丢弃数据包也能达到同样的效果,在实际应用场景中一般推荐使用DROP,因为DROP不会向客户端返回任何信息,可以避免在遭到攻击时让攻击者确定服务的存在。放行状态为已连接的数据包
|
在这里使用了REJECT来拒绝数据包,使用DROP丢弃数据包也能达到同样的效果,在实际应用场景中一般推荐使用DROP,因为DROP不会向客户端返回任何信息,可以避免在遭到攻击时让攻击者确定服务的存在。放行状态为已连接的数据包
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
@ -129,7 +179,8 @@ iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
|
|||||||
iptables -A INPUT -p tcp --src 127.0.0.1 --dport 80 -j ACCEPT
|
iptables -A INPUT -p tcp --src 127.0.0.1 --dport 80 -j ACCEPT
|
||||||
```
|
```
|
||||||
|
|
||||||

|
{{< figure src="https://testingcf.jsdelivr.net/gh/game-loader/picbase@master/uPic/0412PSnPjw.png" >}}
|
||||||
|
|
||||||
利用扩展模块limit限制每个客户端每分中最多发送25个数据包,总共最多发送100个数据包。
|
利用扩展模块limit限制每个客户端每分中最多发送25个数据包,总共最多发送100个数据包。
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
@ -149,7 +200,9 @@ systemctl status openvswitch
|
|||||||
```
|
```
|
||||||
|
|
||||||
启动后查看状态如下
|
启动后查看状态如下
|
||||||

|
|
||||||
|
{{< figure src="https://testingcf.jsdelivr.net/gh/game-loader/picbase@master/uPic/0413hoRi6h.png" >}}
|
||||||
|
|
||||||
安装抓包工具tcpdump,网络配置工具bridge-utils
|
安装抓包工具tcpdump,网络配置工具bridge-utils
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
@ -162,56 +215,96 @@ yum -y install tcpdump bridge-utils
|
|||||||
#### ip link使用 {#ip-link使用}
|
#### ip link使用 {#ip-link使用}
|
||||||
|
|
||||||
查看使用帮助
|
查看使用帮助
|
||||||

|
|
||||||
|
{{< figure src="https://testingcf.jsdelivr.net/gh/game-loader/picbase@master/uPic/0413ooym2j.png" >}}
|
||||||
|
|
||||||
新建网络接口eth0类型为vlan设置vlan id为10,添加一个新的虚拟网卡veth1,设定tunnel对端的网卡为veth2。查看网络设备信息
|
新建网络接口eth0类型为vlan设置vlan id为10,添加一个新的虚拟网卡veth1,设定tunnel对端的网卡为veth2。查看网络设备信息
|
||||||

|
|
||||||
|
{{< figure src="https://testingcf.jsdelivr.net/gh/game-loader/picbase@master/uPic/04136tbTKl.png" >}}
|
||||||
|
|
||||||
分别查看虚拟网卡的信息和vlan的信息
|
分别查看虚拟网卡的信息和vlan的信息
|
||||||

|
|
||||||
|
{{< figure src="https://testingcf.jsdelivr.net/gh/game-loader/picbase@master/uPic/0413UCvOJk.png" >}}
|
||||||
|
|
||||||
ip -d link show可以查看更详细的信息
|
ip -d link show可以查看更详细的信息
|
||||||

|
|
||||||
|
{{< figure src="https://testingcf.jsdelivr.net/gh/game-loader/picbase@master/uPic/0413ugIICY.png" >}}
|
||||||
|
|
||||||
ethtool命令用于查询和控制网络设备驱动程序和硬件设置,通过这个命令我们可以查看设置的虚拟网卡的信息,-S用于查看某一虚拟网卡的统计信息
|
ethtool命令用于查询和控制网络设备驱动程序和硬件设置,通过这个命令我们可以查看设置的虚拟网卡的信息,-S用于查看某一虚拟网卡的统计信息
|
||||||

|
|
||||||
|
{{< figure src="https://testingcf.jsdelivr.net/gh/game-loader/picbase@master/uPic/0413uRYlvw.png" >}}
|
||||||
|
|
||||||
启动刚刚设置的各个接口
|
启动刚刚设置的各个接口
|
||||||

|
|
||||||
|
{{< figure src="https://testingcf.jsdelivr.net/gh/game-loader/picbase@master/uPic/04138euQxN.png" >}}
|
||||||
|
|
||||||
删除增加的接口
|
删除增加的接口
|
||||||

|
|
||||||
|
{{< figure src="https://testingcf.jsdelivr.net/gh/game-loader/picbase@master/uPic/04135qtj5M.png" >}}
|
||||||
|
|
||||||
可见接口已经被删除
|
可见接口已经被删除
|
||||||
|
|
||||||
|
|
||||||
#### ip netns使用 {#ip-netns使用}
|
#### ip netns使用 {#ip-netns使用}
|
||||||
|
|
||||||
查看使用帮助
|
查看使用帮助
|
||||||

|
|
||||||
|
{{< figure src="https://testingcf.jsdelivr.net/gh/game-loader/picbase@master/uPic/04137JGB0q.png" >}}
|
||||||
|
|
||||||
创建一个名为test的namespace并查看所有namespace,可以直接ip netns效果和ip netns list等同
|
创建一个名为test的namespace并查看所有namespace,可以直接ip netns效果和ip netns list等同
|
||||||

|
|
||||||
|
{{< figure src="https://testingcf.jsdelivr.net/gh/game-loader/picbase@master/uPic/0413TexD0q.png" >}}
|
||||||
|
|
||||||
在名为test的namespace中执行命令ip addr show
|
在名为test的namespace中执行命令ip addr show
|
||||||

|
|
||||||
|
{{< figure src="https://testingcf.jsdelivr.net/gh/game-loader/picbase@master/uPic/0413RZtcp5.png" >}}
|
||||||
|
|
||||||
在test的namespace中启动bash,并执行命令,查看路由和防火墙,查看完成后退出bash。
|
在test的namespace中启动bash,并执行命令,查看路由和防火墙,查看完成后退出bash。
|
||||||

|
|
||||||
|
{{< figure src="https://testingcf.jsdelivr.net/gh/game-loader/picbase@master/uPic/04132SYCTC.png" >}}
|
||||||
|
|
||||||
给test添加接口tap1并启用
|
给test添加接口tap1并启用
|
||||||

|
|
||||||
|
{{< figure src="https://testingcf.jsdelivr.net/gh/game-loader/picbase@master/uPic/0413CGXBNN.png" >}}
|
||||||
|
|
||||||
给tap1虚拟接口配置ip
|
给tap1虚拟接口配置ip
|
||||||

|
|
||||||
|
{{< figure src="https://testingcf.jsdelivr.net/gh/game-loader/picbase@master/uPic/0413XVp5mB.png" >}}
|
||||||
|
|
||||||
删除test namespace
|
删除test namespace
|
||||||

|
|
||||||
|
{{< figure src="https://testingcf.jsdelivr.net/gh/game-loader/picbase@master/uPic/04139eMJFx.png" >}}
|
||||||
|
|
||||||
|
|
||||||
#### openvswitch使用 {#openvswitch使用}
|
#### openvswitch使用 {#openvswitch使用}
|
||||||
|
|
||||||
查看openvswitch安装的命令行工具
|
查看openvswitch安装的命令行工具
|
||||||

|
|
||||||
|
{{< figure src="https://testingcf.jsdelivr.net/gh/game-loader/picbase@master/uPic/0413rMDrTf.png" >}}
|
||||||
|
|
||||||
ovs-ovsctl命令是对交换机上网桥和端口等信息进行配置的命令。我们用它添加一个网桥br0并查看openvswitch中的所有网桥
|
ovs-ovsctl命令是对交换机上网桥和端口等信息进行配置的命令。我们用它添加一个网桥br0并查看openvswitch中的所有网桥
|
||||||

|
|
||||||
|
{{< figure src="https://testingcf.jsdelivr.net/gh/game-loader/picbase@master/uPic/0413bh9rrJ.png" >}}
|
||||||
|
|
||||||
判断网桥是否存在,新建一个网卡tap1并将网卡添加到网桥br0,查看网桥信息
|
判断网桥是否存在,新建一个网卡tap1并将网卡添加到网桥br0,查看网桥信息
|
||||||

|
|
||||||
|
{{< figure src="https://testingcf.jsdelivr.net/gh/game-loader/picbase@master/uPic/0413zcTnaK.png" >}}
|
||||||
|
|
||||||
在网桥br0中新建openvswitch网口并列出网桥br0中所有端口,这里将新建网卡和添加网卡到网桥合并为一条命令。
|
在网桥br0中新建openvswitch网口并列出网桥br0中所有端口,这里将新建网卡和添加网卡到网桥合并为一条命令。
|
||||||

|
|
||||||
|
{{< figure src="https://testingcf.jsdelivr.net/gh/game-loader/picbase@master/uPic/0413Ln4f6q.png" >}}
|
||||||
|
|
||||||
删除网桥br0上的网口tap2
|
删除网桥br0上的网口tap2
|
||||||

|
|
||||||
|
{{< figure src="https://testingcf.jsdelivr.net/gh/game-loader/picbase@master/uPic/0413ynC63D.png" >}}
|
||||||
|
|
||||||
设置网口tap1的vlan tag为10,查看tap1的属性
|
设置网口tap1的vlan tag为10,查看tap1的属性
|
||||||

|
|
||||||
|
{{< figure src="https://testingcf.jsdelivr.net/gh/game-loader/picbase@master/uPic/0413daX841.png" >}}
|
||||||
|
|
||||||
从网桥br0删除网口tap1, 并从系统删除虚拟网口tap1,删除网桥br0
|
从网桥br0删除网口tap1, 并从系统删除虚拟网口tap1,删除网桥br0
|
||||||

|
|
||||||
|
{{< figure src="https://testingcf.jsdelivr.net/gh/game-loader/picbase@master/uPic/0413s6O1zC.png" >}}
|
||||||
|
|
||||||
|
|
||||||
### 任务四 {#任务四}
|
### 任务四 {#任务四}
|
||||||
@ -224,7 +317,8 @@ sysctl -p
|
|||||||
sysctl -a | grep ip_forward
|
sysctl -a | grep ip_forward
|
||||||
```
|
```
|
||||||
|
|
||||||

|
{{< figure src="https://testingcf.jsdelivr.net/gh/game-loader/picbase@master/uPic/0413Y9sPVl.png" >}}
|
||||||
|
|
||||||
创建tag为10的内网1。
|
创建tag为10的内网1。
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
@ -251,10 +345,14 @@ ip netns exec ns-tap1 ip addr show
|
|||||||
ip netns exec ns-tap1 ip route show
|
ip netns exec ns-tap1 ip route show
|
||||||
```
|
```
|
||||||
|
|
||||||

|
{{< figure src="https://testingcf.jsdelivr.net/gh/game-loader/picbase@master/uPic/0413yUKLHE.png" >}}
|
||||||

|
|
||||||

|
{{< figure src="https://testingcf.jsdelivr.net/gh/game-loader/picbase@master/uPic/041310YlQh.png" >}}
|
||||||

|
|
||||||
|
{{< figure src="https://testingcf.jsdelivr.net/gh/game-loader/picbase@master/uPic/0413P0gSKK.png" >}}
|
||||||
|
|
||||||
|
{{< figure src="https://testingcf.jsdelivr.net/gh/game-loader/picbase@master/uPic/0413u8yOfK.png" >}}
|
||||||
|
|
||||||
创建tag为11的内网2
|
创建tag为11的内网2
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
@ -277,12 +375,19 @@ ip netns exec ns-tap2 ip route show
|
|||||||
```
|
```
|
||||||
|
|
||||||
最终查看ns-tap2中的ip和路由信息如下
|
最终查看ns-tap2中的ip和路由信息如下
|
||||||

|
|
||||||

|
{{< figure src="https://testingcf.jsdelivr.net/gh/game-loader/picbase@master/uPic/0413MN5tMu.png" >}}
|
||||||
|
|
||||||
|
{{< figure src="https://testingcf.jsdelivr.net/gh/game-loader/picbase@master/uPic/0413QJXcy2.png" >}}
|
||||||
|
|
||||||
查看网桥br0此时的信息
|
查看网桥br0此时的信息
|
||||||

|
|
||||||
|
{{< figure src="https://testingcf.jsdelivr.net/gh/game-loader/picbase@master/uPic/0413f3DHV1.png" >}}
|
||||||
|
|
||||||
测试两个内网的连通性,在ns-tap1中ping ns-tap2
|
测试两个内网的连通性,在ns-tap1中ping ns-tap2
|
||||||

|
|
||||||
|
{{< figure src="https://testingcf.jsdelivr.net/gh/game-loader/picbase@master/uPic/0413MpVbj7.png" >}}
|
||||||
|
|
||||||
可见网络不连通使用netns模拟器由器实现内网1与内网2互通
|
可见网络不连通使用netns模拟器由器实现内网1与内网2互通
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
@ -308,7 +413,9 @@ ip netns exec ns-tap1 ping -c 1 10.0.1.2
|
|||||||
```
|
```
|
||||||
|
|
||||||
测试结果如下
|
测试结果如下
|
||||||

|
|
||||||
|
{{< figure src="https://testingcf.jsdelivr.net/gh/game-loader/picbase@master/uPic/0413gvUXDm.png" >}}
|
||||||
|
|
||||||
可见内网此时已经互通
|
可见内网此时已经互通
|
||||||
|
|
||||||
|
|
||||||
@ -321,7 +428,9 @@ ip netns exec router iptables -t nat -A POSTROUTING -o r2 -j MASQUERADE
|
|||||||
```
|
```
|
||||||
|
|
||||||
在ns-tap1网络中ping ns-tap2网络,查看router中的防火墙匹配到的数据包
|
在ns-tap1网络中ping ns-tap2网络,查看router中的防火墙匹配到的数据包
|
||||||

|
|
||||||
|
{{< figure src="https://testingcf.jsdelivr.net/gh/game-loader/picbase@master/uPic/0413SvWI4L.png" >}}
|
||||||
|
|
||||||
打开两个终端利用tcpdump进行抓包分析。用简单的话来定义tcpdump,就是:dump the traffic on a network,根据使用者的定义对网络上的数据包进行截获的包分析工具。 tcpdump可以将网络中传送的数据包的“头”完全截获下来提供分析。它支持针对网络层、协议、主机、网络或端口的过滤。实验过程中我们使用-nei参数表示显示数据包的主机ip地址,将链路层信息显示出来,并指定监听的接口。
|
打开两个终端利用tcpdump进行抓包分析。用简单的话来定义tcpdump,就是:dump the traffic on a network,根据使用者的定义对网络上的数据包进行截获的包分析工具。 tcpdump可以将网络中传送的数据包的“头”完全截获下来提供分析。它支持针对网络层、协议、主机、网络或端口的过滤。实验过程中我们使用-nei参数表示显示数据包的主机ip地址,将链路层信息显示出来,并指定监听的接口。
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
@ -332,7 +441,9 @@ ip netns exec ns-tap2 tcpdump -nei tap2
|
|||||||
```
|
```
|
||||||
|
|
||||||
监视到的结果为
|
监视到的结果为
|
||||||

|
|
||||||
|
{{< figure src="https://testingcf.jsdelivr.net/gh/game-loader/picbase@master/uPic/0413bYr5Ha.png" >}}
|
||||||
|
|
||||||
可见数据包的确从r2经过继续配置SNAT,SNAT为源地址转换,能改变数据包的源地址。
|
可见数据包的确从r2经过继续配置SNAT,SNAT为源地址转换,能改变数据包的源地址。
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
@ -343,7 +454,9 @@ ip netns exec router iptables -t nat -A POSTROUTING -s 10.0.0.0/24 -o r2 -j SNAT
|
|||||||
```
|
```
|
||||||
|
|
||||||
同样,在两个网络间进行ping测试,并查看router iptables匹配情况
|
同样,在两个网络间进行ping测试,并查看router iptables匹配情况
|
||||||

|
|
||||||
|
{{< figure src="https://testingcf.jsdelivr.net/gh/game-loader/picbase@master/uPic/04135hxJg9.png" >}}
|
||||||
|
|
||||||
可见成功匹配到数据包配置DNAT,DNAT为目的地址转换,改变数据包的目的地址。
|
可见成功匹配到数据包配置DNAT,DNAT为目的地址转换,改变数据包的目的地址。
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
@ -354,7 +467,9 @@ ip netns exec router iptables -t nat -I PREROUTING -i r1 -p tcp --dport 80 -j DN
|
|||||||
```
|
```
|
||||||
|
|
||||||
进行连接测试并查看iptables的匹配情况
|
进行连接测试并查看iptables的匹配情况
|
||||||

|
|
||||||
|
{{< figure src="https://testingcf.jsdelivr.net/gh/game-loader/picbase@master/uPic/0413sUp1q7.png" >}}
|
||||||
|
|
||||||
可见成功匹配到数据包配置重定向
|
可见成功匹配到数据包配置重定向
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
@ -365,7 +480,9 @@ ip netns exec router iptables -t nat -I PREROUTING -p tcp --dport 80 -j REDIRECT
|
|||||||
```
|
```
|
||||||
|
|
||||||
进行连接测试并查看iptables的匹配情况
|
进行连接测试并查看iptables的匹配情况
|
||||||

|
|
||||||
|
{{< figure src="https://testingcf.jsdelivr.net/gh/game-loader/picbase@master/uPic/0413YQLBkh.png" >}}
|
||||||
|
|
||||||
可见重定向成功配置网络防火墙,允许内网1访问内网2
|
可见重定向成功配置网络防火墙,允许内网1访问内网2
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
@ -378,9 +495,13 @@ ip netns exec router iptables -A FORWARD -s 10.0.0/24 -d 10.0.1.0/24 -j ACCEPT
|
|||||||
```
|
```
|
||||||
|
|
||||||
内网1 ping 内网2并查看iptables匹配情况
|
内网1 ping 内网2并查看iptables匹配情况
|
||||||

|
|
||||||
|
{{< figure src="https://testingcf.jsdelivr.net/gh/game-loader/picbase@master/uPic/0413fZCAbk.png" >}}
|
||||||
|
|
||||||
拒绝内网1访问内网2,只需要将刚才的规则ACCEPT修改为DROP或REJECT即可,配置完成后查看匹配情况
|
拒绝内网1访问内网2,只需要将刚才的规则ACCEPT修改为DROP或REJECT即可,配置完成后查看匹配情况
|
||||||

|
|
||||||
|
{{< figure src="https://testingcf.jsdelivr.net/gh/game-loader/picbase@master/uPic/0413ggJv0f.png" >}}
|
||||||
|
|
||||||
可见此时内网1确实无法访问内网2且匹配到了对应的数据包拒绝内网1访问内网2的80服务
|
可见此时内网1确实无法访问内网2且匹配到了对应的数据包拒绝内网1访问内网2的80服务
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
@ -390,16 +511,22 @@ ip netns exec router iptables -A FORWARD -s 10.0.0/24 -d 10.0.1.0/24 -p tcp --dp
|
|||||||
```
|
```
|
||||||
|
|
||||||
内网1访问内网2的80服务并查看匹配情况
|
内网1访问内网2的80服务并查看匹配情况
|
||||||

|
|
||||||
|
{{< figure src="https://testingcf.jsdelivr.net/gh/game-loader/picbase@master/uPic/0413aHaJu8.png" >}}
|
||||||
|
|
||||||
可见数据包匹配成功,且内网1无法访问内网2的80服务
|
可见数据包匹配成功,且内网1无法访问内网2的80服务
|
||||||
|
|
||||||
|
|
||||||
### 实验六 {#实验六}
|
### 实验六 {#实验六}
|
||||||
|
|
||||||
查看上一次实验的实验环境
|
查看上一次实验的实验环境
|
||||||

|
|
||||||
|
{{< figure src="https://testingcf.jsdelivr.net/gh/game-loader/picbase@master/uPic/0413IO7L81.png" >}}
|
||||||
|
|
||||||
清空上一次的实验配置
|
清空上一次的实验配置
|
||||||

|
|
||||||
|
{{< figure src="https://testingcf.jsdelivr.net/gh/game-loader/picbase@master/uPic/041376CBlr.png" >}}
|
||||||
|
|
||||||
搭建新的实验环境,配置内网1
|
搭建新的实验环境,配置内网1
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
@ -436,13 +563,21 @@ ip netns exec ns-tap1 ip addr add dev tap1 10.0.0.2/24
|
|||||||
```
|
```
|
||||||
|
|
||||||
配置完成后查看网桥信息和内网1中的ip信息
|
配置完成后查看网桥信息和内网1中的ip信息
|
||||||

|
|
||||||
|
{{< figure src="https://testingcf.jsdelivr.net/gh/game-loader/picbase@master/uPic/0413oGLNal.png" >}}
|
||||||
|
|
||||||
内网2的配置方法类似,不再赘述,配置完成后查看网桥信息和内网2中的ip信息
|
内网2的配置方法类似,不再赘述,配置完成后查看网桥信息和内网2中的ip信息
|
||||||

|
|
||||||
|
{{< figure src="https://testingcf.jsdelivr.net/gh/game-loader/picbase@master/uPic/0413gvIbBc.png" >}}
|
||||||
|
|
||||||
在内网1中测试测试二层同网段通信
|
在内网1中测试测试二层同网段通信
|
||||||

|
|
||||||
|
{{< figure src="https://testingcf.jsdelivr.net/gh/game-loader/picbase@master/uPic/04130Tptpp.png" >}}
|
||||||
|
|
||||||
可见同网段中的网络可以通信配置桥接模式防火墙即br_netfilter。加载br_netfilter内核模块并查看加载情况
|
可见同网段中的网络可以通信配置桥接模式防火墙即br_netfilter。加载br_netfilter内核模块并查看加载情况
|
||||||

|
|
||||||
|
{{< figure src="https://testingcf.jsdelivr.net/gh/game-loader/picbase@master/uPic/0413XvYMJs.png" >}}
|
||||||
|
|
||||||
修改配置以便桥接模式防火墙可以监控网桥中的arp ipv4 ipv6数据包
|
修改配置以便桥接模式防火墙可以监控网桥中的arp ipv4 ipv6数据包
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
@ -452,7 +587,9 @@ echo "net.bridge.bridge-nf-call-iptables = 1" >> /etc/sysctl.conf
|
|||||||
```
|
```
|
||||||
|
|
||||||
使配置生效,查看生效的配置信息
|
使配置生效,查看生效的配置信息
|
||||||

|
|
||||||
|
{{< figure src="https://testingcf.jsdelivr.net/gh/game-loader/picbase@master/uPic/0414eJWW3z.png" >}}
|
||||||
|
|
||||||
将FORWARD链所有流量导入自定义链
|
将FORWARD链所有流量导入自定义链
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
@ -463,7 +600,8 @@ iptables -A FORWARD -j openvswitch-forward
|
|||||||
```
|
```
|
||||||
|
|
||||||
导入后查看iptables如下
|
导入后查看iptables如下
|
||||||

|
|
||||||
|
{{< figure src="https://testingcf.jsdelivr.net/gh/game-loader/picbase@master/uPic/04140sYgls.png" >}}
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
# 添加in方向链表
|
# 添加in方向链表
|
||||||
@ -476,7 +614,9 @@ iptables -A openvswitch-forward -m physdev --physdev-in tap11 --physdev-is-bridg
|
|||||||
```
|
```
|
||||||
|
|
||||||
导入后查看iptables如下
|
导入后查看iptables如下
|
||||||

|
|
||||||
|
{{< figure src="https://testingcf.jsdelivr.net/gh/game-loader/picbase@master/uPic/0414F61zEc.png" >}}
|
||||||
|
|
||||||
给内网1添加规则
|
给内网1添加规则
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
@ -490,7 +630,8 @@ iptables -A openvswitch-i-tap1 -m set --match-set ipv4-tap1 src -j RETURN
|
|||||||
iptables -A openvswitch-i-tap1 -j openvswitch-fallback
|
iptables -A openvswitch-i-tap1 -j openvswitch-fallback
|
||||||
```
|
```
|
||||||
|
|
||||||

|
{{< figure src="https://testingcf.jsdelivr.net/gh/game-loader/picbase@master/uPic/0414aEmH23.png" >}}
|
||||||
|
|
||||||
给内网1添加out方向规则,即给openvswitch-o-tap1添加规则
|
给内网1添加out方向规则,即给openvswitch-o-tap1添加规则
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
@ -501,7 +642,8 @@ iptables -A openvswitch-o-tap1 -j openvswitch-s-tap1
|
|||||||
iptables -A openvswitch-o-tap1 -j RETURN
|
iptables -A openvswitch-o-tap1 -j RETURN
|
||||||
```
|
```
|
||||||
|
|
||||||

|
{{< figure src="https://testingcf.jsdelivr.net/gh/game-loader/picbase@master/uPic/0414U6Wx6b.png" >}}
|
||||||
|
|
||||||
给内网1添加安全规则
|
给内网1添加安全规则
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
@ -516,20 +658,29 @@ iptables -A openvswitch-s-tap1 -j DROP
|
|||||||
```
|
```
|
||||||
|
|
||||||
匹配的过程
|
匹配的过程
|
||||||

|
|
||||||
|
{{< figure src="https://testingcf.jsdelivr.net/gh/game-loader/picbase@master/uPic/0414V8T7v5.png" >}}
|
||||||
|
|
||||||
配置好后iptables的情况
|
配置好后iptables的情况
|
||||||

|
|
||||||
|
{{< figure src="https://testingcf.jsdelivr.net/gh/game-loader/picbase@master/uPic/0414d6EqlL.png" >}}
|
||||||
|
|
||||||
拒绝没有匹配的流量
|
拒绝没有匹配的流量
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
iptables -A openvswitch-fallback -m comment --comment "Default drop rule for unmatched traffic." -j DROP
|
iptables -A openvswitch-fallback -m comment --comment "Default drop rule for unmatched traffic." -j DROP
|
||||||
```
|
```
|
||||||
|
|
||||||

|
{{< figure src="https://testingcf.jsdelivr.net/gh/game-loader/picbase@master/uPic/04143rg1o7.png" >}}
|
||||||
|
|
||||||
测试内网1和内网2的连通性
|
测试内网1和内网2的连通性
|
||||||

|
|
||||||
|
{{< figure src="https://testingcf.jsdelivr.net/gh/game-loader/picbase@master/uPic/041407QOTZ.png" >}}
|
||||||
|
|
||||||
ping 不通,可见二层防火墙策略已经生效在刚刚定义的ipset ipv4-tap1中添加内网2的ip地址,再次ping验证连通性,ipset就是用来设置一个ip集合,可以用来帮助配置iptables规则生效的地址集。
|
ping 不通,可见二层防火墙策略已经生效在刚刚定义的ipset ipv4-tap1中添加内网2的ip地址,再次ping验证连通性,ipset就是用来设置一个ip集合,可以用来帮助配置iptables规则生效的地址集。
|
||||||

|
|
||||||
|
{{< figure src="https://testingcf.jsdelivr.net/gh/game-loader/picbase@master/uPic/0414U5Ipxx.png" >}}
|
||||||
|
|
||||||
可见可以ping通且匹配到了对应的数据包验证内网1能否修改ip mac地址
|
可见可以ping通且匹配到了对应的数据包验证内网1能否修改ip mac地址
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
@ -539,8 +690,10 @@ ip netns exec ns-tap1 ip addr del dev tap1 10.0.0.2/24
|
|||||||
ip netns exec ns-tap1 ip addr add dev tap1 10.0.0.4/24
|
ip netns exec ns-tap1 ip addr add dev tap1 10.0.0.4/24
|
||||||
```
|
```
|
||||||
|
|
||||||

|
{{< figure src="https://testingcf.jsdelivr.net/gh/game-loader/picbase@master/uPic/0414wqAuHf.png" >}}
|
||||||

|
|
||||||
|
{{< figure src="https://testingcf.jsdelivr.net/gh/game-loader/picbase@master/uPic/0414Ddpkz8.png" >}}
|
||||||
|
|
||||||
可见已经不能ping通且iptables匹配到了应该丢弃的数据包
|
可见已经不能ping通且iptables匹配到了应该丢弃的数据包
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
@ -550,5 +703,6 @@ ip netns exec ns-tap1 ip addr add dev tap1 10.0.0.2/24
|
|||||||
ip netns exec ns-tap1 ip link set dev tap1 address 16:f7:55:f5:d7:ac
|
ip netns exec ns-tap1 ip link set dev tap1 address 16:f7:55:f5:d7:ac
|
||||||
```
|
```
|
||||||
|
|
||||||

|
{{< figure src="https://testingcf.jsdelivr.net/gh/game-loader/picbase@master/uPic/0414Ldukmm.png" >}}
|
||||||
|
|
||||||
可见不能ping通且iptables匹配到了应该丢弃的数据包。以上两次修改说明只有iptables中指定的ip和MAC传递过来的数据包才能通过防火墙。
|
可见不能ping通且iptables匹配到了应该丢弃的数据包。以上两次修改说明只有iptables中指定的ip和MAC传递过来的数据包才能通过防火墙。
|
||||||
|
Loading…
Reference in New Issue
Block a user