上篇是iptables的增删改查
自定义链:
systemctl stop firewalld
setenforce 0
iptables -N lmn
iptables -vnL
iptables -t filter -vnL
修改链名:
iptables -E lmn ky01
iptables -t filter -vnL
iptables -t filter -I ky01 -p icmp -j ACCEPT
iptables -t filter -vnL
iptables -t filter -I INPUT -p icmp -j ky01
iptables -t filter -vnL
删除:
iptables -D INPUT 1
iptables -D ky01 1
iptables -X ky01
自定义链使用 自定义链添加:iptables -N custom(链名) 创建链
自定义链改名:iptables -E custom(原来名称) ky29(新名称) 自定义链改名
创建自定义链规则:iptables -t filter -I ky29 -p icmp -j REJECT 创建自定义规则, iptables的链中添加一条对应到自定义链中才能生效
iptabales创建对应链规则然后跳转自定义链web:iptables -t filter -I INPUT -p icmp -j custom
删除自定义规则链:先删除iptables INPUT链中的对应关系,然后删除自定义链中的规则。 iptables -D INPUT 1 iptables -D ky27 1
然后再用 iptables -X ky27 删除这个链
iptables另一个功能
iptables:地址转换
SNAT:源地址转换。内网访问外网时,将内网的ip地址转换成可以和外网通信的ip地址
DNAT:目的地址转换。外网访问内网时,将外网的ip地址转换成可以和内网通信的ip地址
SNAT和DNAT核心:就是地址转换
内到外,要换源
外到内,转目的
DNAT:虽然是目的地址转换,但是还有一个作用就是,将内部地址映射到一个或者是一组公网地址。将内部的私网地址映射成公网地址,公网地址可以直接对外提供访问服务
实验:首先环境准备需要三台服务器
ky01 zb:内网服务器 192.168.86.10
ky01 sk:网关服务器 192.168.86.11
beiyong:外网地址 12.0.0.0
实验开始:
将ky01 sk:添加一个网络适配器
此时有两个网络适配器
ifconfig
ls
cd /etc/sysconfig/network-scripts
vim ifcfg-ens33
对IPADDR操作192.168.86.254
vim ifcfg-ens36(ps:此次经过上图ifconfig查看是36)
对IPADDR操作12.0.0.254
此时在ky01 zb和beiyong上
yum -y install httpd
systemctl restart httpd
然后:在浏览器登录192.168.86.10
192.168.86.12
对ky01 sk操作:systemctl restart network
对此虚拟机页面操作:vim /etc/sysctl.conf
这是一个修改Linux内核参数的文件。可以使这些参数配置立刻生效
文件最后面添加一行:net.ipv4.ip_forward=1
命令:sysctl -p
让文件立刻生效
对ky01 zb操作
对beiyong操作:
对ky01 sk操作:
iptables -t nat -A POSTROUTING -s 192.168.86.0/24 -o ens36 -j SNAT --to 10.0.0.10
对此命令讲解:
iptables :固定格式开头
-t nat:使用地址转换表
-A POSTROUTING:数据包离开本机的规则
-s 192.168.86.0/24:整个网段作为源IP地址
-o ens36:数据包流出本机的设备
-j SNAT:做源地址转换
--to:转换成10.0.0.10
测试一下:
登录ky01 zb和beiyong
ky01 zb打开一个浏览器
beiyong打开日志
然后登录beiyong地址
查看日志此时应该是地址10.0.0.10
然后对ky01 sk 操作:
iptables -t net -A PREROUTING -d 11.0.0.11 -i ens36 -p tcp --dport 80 -j DNAT --to 192.168.86.10:80
-t nat:使用地址转换表
-A PREROUTING:进入本机之后数据包做地址转换
-d指定目的地址11.0.0.11
-i:ens36设备进入本机
-p: 指定协议
--dport :目的端口,80
-j:控制类型,目的地址转换
--to :访问11.0.0.11就等于访问内网192.168.86.10:80的httpd的服务
然后继续:iptables -t nat
测试:
主机1 打开日志:
主机3打开浏览器:
访问
此时可以看到日志源地址没有变
面试题:
如何在Linux系统中对网络抓包?
tcpdump,这是Linux自带的抓包工具
两种方式:
1.静态抓包,指定抓多少个数据包
2.动态抓包,想抓多少抓多少,除非手动停止
cd /opt
tcpdump tcp 或者icmp 或者
tcpdump tcp -i ens33 -t -s0 -c 10 and dst port 80 and src net 192.168.86.0/24 -w /opt/lmn.cap
tcpdump 抓包命令
tcp :指定协议
-i ens33:只抓经过ens33的数据包
-t: 不显示时间戳
-s0:抓取完整的数据包,默认只抓64字节的数据包
-c 10 : 只抓10个数据包
dst port 80 :抓取的目标端口是80
src net 192.168.86.0/24:抓取数据包的源地址
-w :指定保存抓包文件的位置
.cap:是一种无线网络数据包捕获文件的扩展名
.cap文件需要保存到win系统打开
sz lmn.cap
动态抓包实验:
tcpdump -i ens33 -s0 -w /opt/lmn1.cap
动态抓包需要Ctrl+C手动停止
PS:在工作中最好使用动态抓包。
firewalld防火墙
查看防火墙的默认区域
查看默认区域的所有规则
block限制区,所有流量都会被拒绝
dmz:隔离区,也叫非军事区,只会运行预定服务,ssh等系统预设服务,其余都会拒绝
drop:丢弃区,丢弃所有传入流量,而且没有任何相应
external:外部区域,允许系统预设的服务,ssh,其他的全部拒绝
home:家庭区域,只允许预设的服务,其他的全部拒绝
internal:内部区域,和家庭区域一样
public:公共区域,也是firewalld的默认区域,也是允许预设服务ssh,其他的全部拒绝
trusted:信任区域,允许所有的传入流量
work:工作区域,只会允许预定义服务的流量传入,其他全部拒绝
curl 192.168.86.10
查看命令访问httpd
修改默认区域
firewalld-cmd --set-default-zone=区域名
指定服务添加到区域内:
firewalld-cmd --
添加多个服务到指定区域内
在指定区域删除服务
以上添加服务方法是临时添加,防火墙重启一下就全没了
此命令是永久添加服务到防火墙的指定区域
删除永久服务配置
添加端口到指定区域
添加多个端口到指定区域
范围添加端口到指定区域