实验准备:
- 客户端、网关、web服务器
- 网关需要配置为双网卡
- 目的:让客户端通过NAT地址转换后访问外网,满足私网用户访问外网的需求;
一、初始化配置
确保客户端与Web服务器都能与NAT服务器连通
1)配置NAT服务器
- 为NAT服务器添加双网卡
- 配置内外网IP信息
#外网网卡
[root@NAT-SERVER ~]# cat /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=none
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
NAME=ens33
UUID=14684afe-660a-4ba0-8aa6-c0a594e3ca2d
DEVICE=ens33
ONBOOT=yes
IPADDR=100.100.1.254
NETMASK=255.255.255.0
#内网网卡
[root@NAT-SERVER ~]# cat /etc/sysconfig/network-scripts/ifcfg-ens160
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=none
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
NAME=ens160
DEVICE=ens160
ONBOOT=yes
IPADDR=192.168.3.254
NETMASK=255.255.255.0
- 开启路由转发功能
echo "net.ipv4.ip_forward = 1" >>/etc/sysctl.conf
sysctl -p
2)配置内网客户端
- 内网客户端需要将网关指向NAT服务器
[root@client ~]# cat /etc/sysconfig/network-scripts/ifcfg-ens160
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=none
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=default
NAME=ens160
UUID=73457178-299a-4c31-ae33-2f809a1efb3d
DEVICE=ens160
ONBOOT=yes
IPADDR=192.168.3.10
PREFIX=24
GATEWAY=192.168.3.254
- 测试与NAT服务器的连通性
3)web服务器配置
- 安装Apache服务后配置一个静态网页便于测试
- 首先挂载iso镜像,配置本地yum源
mount -t iso9660 /dev/cdrom /mnt/cdrom
- 创建一个repo文件,写入以下内容
[baseos]
name=BaseOS
baseurl=file:///mnt/cdrom/BaseOS #将这里的地址更换为你自己的挂载地址
enabled=1
[appstream]
name=AppStream
baseurl=file:///mnt/cdrom/AppStream #将这里的地址更换为你自己的挂载地址
enabled=1
- 安装Apache服务
#清除yum缓存
yum clean all && yum makecache
#安装Apache服务
yum install httpd -y
- 写入网页测试文件,启动Apache服务
echo "这里是互联网!!!" > /var/www/html/index.html
#启动Apache服务
systemctl start httpd && systemctl enable httpd
#访问测试
curl localhost
- 测试与NAT服务器的连通性
4)配置iptables策略
- 测试未配置前客户端与外网web服务器的通讯情况
- 在NAT服务器上配置源NAT转换
#将源地址为192.168.3.0/24网段的IP转换后从ens33这个网卡发送出去。以此来实现内网用户访问外网。
iptables -t nat -A POSTROUTING -s 192.168.3.0/24 -o ens33 -j SNAT --to-source 100.100.1.254
#如果外网IP是不固定的可以使用MASQUERADE,动态获取外网IP的变化将源地址转换为接口地址
iptables -t nat -A POSTROUTING -s 192.168.3.0/24 -o ens33 -j MASQUERADE
- 再次测试内网访问外网服务器
#在外网web服务器上抓取访问80端口的信息
tcpdump -i ens160 -nnvv tcp port 80
- 可以看到访问的信息中只有转换后的地址信息