自定义链
添加自定义链-N
如:在filter表中创建一个自定义链,链名custom

修改自定义链名-E
如:修改自定义链名custom成zw110

自定义链中加入规则-I
这时候192.168.254.12主机依然可以ping我们主机,说明规则还未生效,说明系统不识别。


插入到系统默认的五链-I
如:我们插入到INPUT链中后,发现规则开始生效了。


删除自定义链-X
删除自定义链,需要先删除五链中的规则,再删除自定义链的规则,最后才能删除自定义链

NAT-地址转换
SNAT和DNAT
SNAT:源地址转换
DNAT:目的地址转换
内网——外网:内网的ip不能直接和公网ip通信,需要要把内网地址转换成可以和公网ip通信的地址。
外网——内网:外网的ip不能直接和内网ip通信,需要要把外网地址转换成可以和内网ip通信的地址。

NAT实操
如我们使用三台虚拟机模拟NAT,zw1是内网,zw3是外网,zw2作为网关服务器,具体配置如下
zw1(内网):192.168.254.11
zw2(网关服务器):ens33(192.168.254.254) ens36(12.0.0.254)
zw3(外网):12.0.0.10
第一步对zw2的操作:配置zw2的网卡,ens33作为内网网关,ens36作为外网网关,具体操作如下:

配置/etc/sysctl.conf文件:linux的内核的接口文件,修改配置内核的参数使之永久生效。

开启Linux服务器内核转发功能,并使之生效。

sysctl -p #立即生效
第二步对zw1的操作:配置zw1(内网)的网卡

对zw3的操作:配置zw3(外网)的网卡

配置完三台网卡之后,再统一重启网卡和nginx服务,切记每做一步都需要进行检查是否成功。
第三步:
iptables -t nat -A POSTROUTING -s 192.168.254.0/24 -o ens37 -j SNAT --to 10.0.0.10

#从ens37设备出去的数据包且网段属于192.168.254.0,把这个网段地址统一转换成10.0.0.10
这时候,我们在内网主机zw1上访问12.0.0.10,这时候我们在公网主机zw3上查看nginx访问日志,可以看出我们映射的10.0.0.10的访问记录。

iptables -t nat -A PREROUTING -d 11.0.0.11 -i ens37 -p tcp --dport 80 -j DNAT --to 192.168.254.11:80
![]()
#所有从ens37进入本机的数据包,统一转换成11.0.0.11,访问端口是80,统一映射为访问192.168.254.11:80
这时候我们使用外网zw3访问11.0.0.11,就是访问内网zw1的nginx。

抓包-tcpdump
静态抓包
tcpdump tcp -i ens33 -t -s0 -c 10 and dst port 80 and src net 192.168.254.0/24 -w /opt/target.cap
- tcp:协议
- -i ens33:指定设备名称,从哪个设备经过的数据包
- -t:不显示时间戳
- -s0:默认抓包的长度是68字节,s0就是抓取完整的数据包
- -c 10:抓取10个数据包
- and dst port 80:目标端口80和80端口相关的数据包
- and src net:源ip是192.168.233.0/24这个网段的ip地址
- -w:抓包的结果保存到指定目标文件z中
- .cap:tcpdump只是抓取数据包的内容,不能在linux中查看,需要用wireshark查看
如我们在192.168.254.11主机上抓包,并访问12.0.0.10主机的nginx,这时候会产生一个target.cap文件,我们把它下载到桌面,用wireshark打开查看。

通过抓包可以看出,我们源ip和端口对目的ip和端口的建立连接情况。

动态抓包
tcpdump -i ens33 -s0 -w /opt/ens33.cap
使用动态抓包具体操作和静态一样。
firewalld
firewalld是根据区域来进行配置不同的规则,和硬件防火墙很相似。
区域:
- trusted:信任区,所有的流量都可以进入
- public:公共区域,默认区,只允许系统默认的规则(ssh和icmp协议),其他流量传入全部拒绝。
- external:外部区域,只允许系统默认的规则(ssh和icmp协议),其他流量传入全部拒绝。经过此区域的流量可以将ipv4的地址进行伪装。
- home:家庭区域,只允许系统默认的规则(ssh和icmp协议,dhcpv6),其他流量传入全部拒绝。
- inertal:内部区域,只允许系统默认的规则(ssh和icmp协议,dhcpv6),其他流量传入全部拒绝。
- work:工作区域,只允许系统默认的规则(ssh和icmp协议,dhcpv6),其他流量传入全部拒绝。
- block:限制区,拒绝所有流量的传入
- drop:丢弃区域,拒绝所有流量的传入,没有回显信息
- DMZ:非军事区域,只允许系统默认的规则(ssh),其他流量传入全部拒绝。
首先要下载软件,装了epel-release,才能装nginx。
yum -y install epel-release
yum -y install nginx
查看系统的默认区域
firewall-cmd --get-default-zone
firewall-cmd --list-all


修改默认区域
如修改默认区域,改成block区域
firewall-cmd --set-default-zone=block

添加http协议到公共区域

这样我们在不关闭防火墙情况下,也能访问http协议和ftp协议
从公共区域移除http协议

永久生效


添加端口到公共区域
表示添加tcp80端口到公共区域


表示添加tcp80至3306端口到公共区域

从公共区域移除端口协议

