局域网主机共享单个公网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服务

posted @ 2023-04-01 10:48  法螺話  阅读(51)  评论(0编辑  收藏  举报