局域网主机共享单个公网IP地址接入Internet(SNAT)

发布时间 2023-04-01 10:52:12作者: 法螺話

SNAT策略的原理
    源地址转换,Source Network Address Translation
    修改数据包的源IP地址

1.准备一台局域网里的主机做客户机,配置好ip、子网掩码,网关,dns服务器地址
 局域网各主机正确设置IP地址/子网掩码
 局域网各主机正确设置默认网关地址/dns服务器地址
 内网的虚拟机网卡模式可以是hostonly或者nat或者桥接
 linux网关路由器的LAN口使用和内网的虚拟机网卡模式一样
 本次实验,内网的虚拟机网卡使用桥接模式

 

 1.1在Linux客户机上配置ip地址

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

刷新网络服务

配置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