文章目录
- SNAT-内网客户访问外网服务
- 原理
- 操作实验
- DNAT-外网客户访问内网服务
- 原理
- 操作实验
- tcpdump
SNAT-内网客户访问外网服务
原理
由内网到外网:从内网发到外网的数据包的源IP由私网IP转换成公网IP
由外网到内网:从外网发到内网的数据包的目的IP由公网IP转换成私网IP
-
SNAT步骤:
- 内网的网关对应的是网关服务器上的相对应的内网网卡IP
- 打开网关服务器路由转发功能 /etc/sysctl.conf 内核配置文件
- 转换内网源IP为网关服务器上的外网网卡IP,设置SNAT
##永久修改
vim/etc/sysctl.conf ##修改内核配置文件
##添加配置
net.ipv4.ip_forward=1
##修改后,读取配置
sysctl -p
##SNAT转换指定固定公网IP
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o ens33 -j SNAT --to 218.29.30.31
##SNAT转换为公网地址池
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o ens33 -j SNAT --to 218.29.30.1-218.29.30.35
##SNAT转换为共享动态IP
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o ens33 -j MASQUERADE
操作实验
##内网客户端
systemctl stop firewalld ##关闭防火墙
setenforce 0
###修改网卡为内网IP和内网网关IP
vim /etc/sysconfig/network-script/ifcfg-ens32
IPADDR=192.168.242.66 ##内网IP
NETMASK=255.255.255.0
GATEWAY=192.168.242.30 ##网关服务器上的内网网卡IP
systemctl restart network ##重启网卡
##外网服务端
systemctl stop firewalld ##关闭防火墙
setenforce 0
###修改网卡为外网IP和网关IP
vim /etc/sysconfig/network-script/ifcfg-ens32
IPADDR=12.0.0.200 ##外网IP
NETMASK=255.255.255.0
GATEWAY=12.0.0.30 ##网关服务器上的外网网卡IP
systemctl restart network ##重启网卡
###安装网络服务
yum -y install httpd
cd /var/www/html ##创建首页显示
echo 'hello world' > test.html
systemctl start httpd ##开启网络服务
##网关服务器
###添加网卡,并修改对应网卡的IP
vim /etc/sysconfig/network-script/ifcfg-ens32 ##修改内网网卡
IPADDR=192.168.242.30 ##内网IP
NETMASK=255.255.255.0
vim /etc/sysconfig/network-script/ifcfg-ens33 ##修改外网网卡
IPADDR=12.0.0.30 ##外网IP
NETMASK=255.255.255.0
systemctl restart network ##重启网卡
##防火墙配置
iptables -F && iptables -t nat -F ##清空防火墙配置
systemctl stop firewalld ##关闭防火墙
setenforce 0
##打开服务器的路由转发功能
vim /etc/sysctl.conf ##修改内核配置文件
net.ipv4.ip_forward=1
sysctl -p ##加载配置
##添加数据转发
iptables -t filter -A FORWARD -s 192.168.242.0/24 -j ACCEPT
##SNAT转换指定固定公网IP
iptables -t nat -A POSTROUTING -s 192.168.242.0/24 -o ens33 -j SNAT --to 12.0.0.30
DNAT-外网客户访问内网服务
原理
由外网到内网:从外网发来的数据包的目标IP由公网IP转换成私网IP,网关服务器在根据私网IP转发到内网服务器
由内网到外网:内网服务器响应数据包的源IP从内网IP转换为外网IP
操作实验
##内网服务器
systemctl stop firewalld
setenforce 0
###修改网卡为内网IP和内网网关IP
vim /etc/sysconfig/network-script/ifcfg-ens32
IPADDR=192.168.242.66 ##内网IP
NETMASK=255.255.255.0
GATEWAY=192.168.242.30 ##网关服务器上的内网网卡IP
systemctl restart network ##重启网卡
###安装网络服务
yum -y install httpd
cd /var/www/html ##创建首页显示
echo 'hello world' > test.html
systemctl start httpd ##开启网络服务
##外网客户端
systemctl stop firewalld
setenforce 0
###修改网卡为外网IP和网关IP
vim /etc/sysconfig/network-script/ifcfg-ens32
IPADDR=12.0.0.200 ##外网IP
NETMASK=255.255.255.0
GATEWAY=12.0.0.30 ##网关服务器上的外网网卡IP
systemctl restart network ##重启网卡
##网关服务器
##添加网卡
vim /etc/sysconfig/network-script/ifcfg-ens32 ##修改内网网卡
IPADDR=192.168.242.30 ##内网IP
NETMASK=255.255.255.0
cp ifg-en32 ifcfg-ens33
vim /etc/sysconfig/network-script/ifcfg-ens33 ##修改外网网卡
IPADDR=12.0.0.30 ##外网IP
NETMASK=255.255.255.0
systemctl restart network ##重启网卡
##防火墙配置
iptables -F && iptables -t nat -F ##清空防火墙配置
systemctl stop firewalld ##关闭防火墙
setenforce 0
##打开服务器的路由转发功能
vim /etc/sysctl.conf ##修改内核配置文件
net.ipv4.ip_forword=1
sysctl -p ##加载配置
iptables -t nat -A PREROUTING -i ens33 -d 12.0.0.30 -p tcp --dport 8080 -j DNAT --to 192.168.242.66:80
iptables -t nat -A POSTROUTING -s 192.168.242.0/24 -o ens33 -j SNAT --to 12.0.0.30
iptables -t filter -A FORWORD -s 192.168.242.0/24 -j ACCEPT
iptables -t filter -A FORWORD -s 12.0.0.0/24 -j ACCEPT
tcpdump
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 eth1 : 只抓经过接口eth1的包
(3)-t : 不显示时间戳
(4)-s 0 : 抓取数据包时默认抓取长度为68字节。加上-S 0 后可以抓到完整的数据包
(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)分析