局域网主机共享单个公网IP地址接入Internet(SNAT)和在Internet中发布位于局域网内的nginx服务器(DNAT)
SNAT策略的原理
源地址转换,Source Network Address Translation
修改数据包的源IP地址
1.准备一台局域网里的主机做客户机,配置好ip、子网掩码,网关,dns服务器地址
局域网各主机正确设置IP地址/子网掩码
局域网各主机正确设置默认网关地址/dns服务器地址
内网的虚拟机网卡模式可以是hostonly或者nat或者桥接
linux网关路由器的LAN口使用和内网的虚拟机网卡模式一样
本次实验,内网的虚拟机网卡使用桥接模式
1.1在Linux客户机上配置ip地址
cd /etc/sysconfig/netwrok-scripts
vim ifcfg-ens33
BOOTPROTO="none"
NAME="ens33"
DEVICE="ens33"
ONBOOT="yes"
IPADDR1=192.168.40.22
PREFIX=24
DNS1=114.114.114.114
GATEWAY1=192.168.40.2
刷新网络服务
service network restart
在客户机上测试能否和网关通信
ping 192.168.40.2
1.2linux网关服务器的配置
配置LAN口的ip地址和子网掩码,不配置网关和dns服务器地址
BOOTPROTO="none"
NAME="ens33"
DEVICE="ens33"
ONBOOT="yes"
IPADDR=192.168.40.2
PREFIX=24
刷新网络服务
service network restart
配置WAN口的ip地址、子网掩码、网关和dns服务器地址
因为新添加的网卡,默认在系统里没有配置文件,我们需要根据ens33的网卡配置文件,创建一个文件,注意名字要和网卡的名字对应
cp ifcfg-ens33 ifcfg-ens34
BOOTPROTO="none"
NAME="ens36"
DEVICE="ens36"
ONBOOT="yes"
IPADDR=192.168.1.123
PREFIX=24
GATEWAY=192.168.1.1
DNS1=114.114.114.114
刷新网络服务
测试linux网关服务器能否上网
ping www.baidu.com
1.3 在linux网关服务器上
1)开启网关主机的路由转发功能
临时开启 :echo 1 >/proc/sys/net/ipv4/ip_forward
永久开启:修改内核参数文件/etc/sysctl.conf
vim /etc/sysctl.conf
net.ipv4.ip_forward = 1
sysctl -p 让linux系统的内核读取新的配置,开启路由功能
2)添加使用SNAT策略的防火墙规则
编写snat策略的脚本 vim snat.sh
#!/bin/bash
#清除filter和nat表里的防火墙规则
iptables -t filter -F
iptables -t nat -F
#开启路由功能
echo 1 >/proc/sys/net/ipv4/ip_forward
#添加SNAT策略
iptables -t nat -A POSTROUTING -s 192.168.40.0/24 -o ens34 -j SNAT --to-source 192.168.1.123
bash snat.sh 执行脚本
iptables -t nat -L -n 查看nat表里的规则
3)在客户机上验证是否可以访问百度
测试与网关通信
测试与linux网关路由器的wan口通信
测试与无线路由器是否可以通信
ping www.baidu.com 测试能否上网
4)在linux网关服务器上使用tcpdump抓包,查看snat效果,修改ip包里的源ip地址
tcpdump -i ens36 icmp -nn
DNAT策略的原理
目标地址转换,Destination Network Address Translation
修改数据包的目标IP地址
在web服务器上进行的配置
局域网的Web服务器正确设置了IP地址/子网掩码
局域网的Web服务器正确设置了默认网关地址
在linux网关服务器上进行的配置
实现步骤
1. 确认已开启网关的路由转发功能
2. 添加使用DNAT策略的防火墙规则
(注:windows真实机器和linux防火墙的WAN口在同一个网段,所有网卡均为桥接模式)
DNAT 在PREROUTING(城市入口)进行修改ip包里的目的ip地址
linux网关服务器的DNAT功能开启 vim snat_dnat.sh
#!/bin/bash
#清除filter和nat表里的防火墙规则
iptables -t filter -F
iptables -t nat -F
#开启路由功能
echo 1 >/proc/sys/net/ipv4/ip_forward
#添加SNAT策略
iptables -t nat -A POSTROUTING -s 192.168.40.0/24 -o ens36 -j SNAT --to-source 192.168.1.123
#添加DNAT策略
iptables -t nat -A PREROUTING -d 192.168.1.123 -i ens36 -j DNAT --to-destination 192.168.40.22
bash snat_dnat.sh
在web服务器上操作,安装nginx并检查nginx服务是否运行,是否有防火墙开启
ps aux|grep nginx
netstat -anplut|grep nginx
iptables -L
DNAT在转发数据的时候,也是可以修改传输层的源端口和目的端口
如果在iptables规则里没有指定,就不进行修改
在windows浏览器访问防火墙wan口ip地址来访问局域网里的nginx服务