目录
一、SNAT的介绍和应用
1、SNAT原理和应用
SNAT策略的典型应用环境
局域网主机共享单个公网IP地址接入InternetSNAT
策略的原理
源地址转换,Source Network Address Translation
修改数据包的源地址
转换前提条件
局域网各主机已正确设置IP地址、子网掩码、默认网关地址
Linux网关开启IP路由转发
路由转发开启方式
临时打开:
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 #读取修改后的配置
SNAT转换
iptables -t nat -A POSTROUTING -s 192.168.149.0/24 -o ens33 -j SNAT --to 10.0.0.1
局域网ip 外网口名称 外网口ip
非固定的公网IP地址
iptables -t nat -A POSTROUTING -s 192.168.80.0/24 -o ens33 -j MASQUERADE
二、DNAT的介绍和应用
1、原理和应用
应用环境
在Internet中发布位于局域网内的服务器
DNAT原理
修改数据包的目的地址
DNAT转换前提条件
局域网的服务器能够访问Internet
网关的外网地址有正确的DNS解析记录
Linux网关开启IP路由转发
DNAT转换
#把从ens33进来的要访问web服务的数据包目的地址转换为 192.168.149.83
iptables -t nat -A PREROUTING -i ens33 -d 10.0.0.1 -p tcp --dport 80 -j DNAT --to 192.168.149.83
发布时修改目标端口
#发布局域网内部的OpenSSH服务器,外网主机需使用250端口进行连接
iptables -t nat -A PREROUTING -i ens33 -d 10.0.0.1 -p tcp --dport 250 -j DNAT --to 192.168.149.83
三、防火墙规则备份和还原
导出备份
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
1、介绍
tcpdump命令是一款sniffer工具,是linux上的抓包工具,嗅探器;它可以打印出所有经过网络接口的数据包的头信息。
tcpdump命令工作时先要把网卡的工作模式切换到混杂模式。所以tcpdump命令需要以root身份运行。tcpdump命令是linux下使用最广泛的网络协议分析工具。使用tcpdump命令时,必须精通TCP/IP协议工作原理。
2、格式
tcpdump 参数
-a : 尝试将网络和广播地址转换成名称
-c<数据包数目> : 收到指定的数据包数目后,就停止进行倾倒操作
-d : 把编译过的数据包编码转换成可阅读的格式,并倾倒到标准输出
-dd : 把编译过的数据包编码转换成C语言的格式,并倾倒到标准输出
-ddd : 把编译过的数据包编码转换成十进制数字的格式,并倾倒到标准输出
-e : 在每列倾倒资料上显示连接层级的文件头
-f : 用数字显示网际网络地址
-F<表达文件> : 指定内含表达方式的文件
-i<网络界面> : 使用指定的网络截面送出数据包
-l : 使用标准输出列的缓冲区
-n : 不把主机的网络地址转换成名字
-N : 不列出域名
-O : 不将数据包编码最佳化
-p : 不让网络界面进入混杂模式
-q : 快速输出,仅列出少数的传输协议信息
-r<数据包文件> : 从指定的文件读取数据包数据
-s<数据包大小> : 设置每个数据包的大小
-S : 用绝对而非相对数值列出TCP关联数
-t : 在每列倾倒资料上不显示时间戳记
-tt : 在每列倾倒资料上显示未经格式化的时间戳记
-T<数据包类型> : 强制将表达方式所指定的数据包转译成设置的数据包类型
-v : 详细显示指令执行过程
-vv : 更详细显示指令执行过程
-x : 用十六进制字码列出数据包资料
-w<数据包文件> : 把数据包数据写入指定的文件
3、操作
tcpdump -i ens33 监听指定网卡的数据包
tcpdump host localhost 监听指定主机
tcpdump -i any post 22 -A 抓紧22号端口的数据