linux 实现SNAT技术

 一、实验环境

1.说明:SNAT是针对源ip地址做的地址转换

2.软件:VMware 15 ,slave1与slave2系统都为centos 7

3.网络:Vmnet8 为nat类型网络 可想象为现实中的公网地址 可正常访问外网

VMnet1 与 vmnet7 都为仅主机类型的主机 ,可想象为现实中的内网地址,无法访问外网

4.拓扑图如下(sw为交换机)

 

二、前提配置

1. centos 克隆的配置

nmcli con add con-name ens33-static ifname ens33 type ethernet ipv4.addresses 101.101.100.30 ipv4.method manual  
nmcli con up ens33-static

2.centos 7 的配置

nmcli con add con-name ens33-static ifname ens33 type ethernet ipv4.addresses 101.101.100.7 ipv4.method manual
nmcli con up ens33-static
nmcli con add con-name ens37-static ifname ens37 type ethernet ipv4.addresses 101.101.101.7/24 ipv4.gateway 101.101.101.37  ipv4.dns 223.5.5.5 ipv4.method manual
nmcli con up ens37-static

3.slave1的配置

nmcli con modify hadoop ipv4.method manual ipv4.addresses 192.168.18.131/24 ipv4.gateway  192.168.18.2 ipv4.dns  192.168.18.2 connection.autoconnect yes
nmcli con up hadoop
nmcli con add con-name ens37-static ifname ens37 type ethernet ipv4.addresses 101.101.101.37/24 ipv4.method manual
nmcli con up ens37-static

三、需求

1.需求一 在slave1 上使用iptables snat技术 允许 centos7访问intetnet

配置如下

1)slave1 的配置

iptables -t nat -A POSTROUTING -s 101.101.101.0/24 -o ens33 -j SNAT --to-source 192.168.18.131

2)slave1的配置开启路由转发功能

echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf
sysctl -w net.ipv4.ip_forward=1

 此时centos7已经可以正常访问外网,但是重启后则不同

注意:在实际的生活中固定的公网地址非常的昂贵,所以1)的配置方法并不完美,而且重启后规则就会失效

3)对需求1的完善(一)

MASQUERADE,地址伪装,算是snat中的一种特例,可以实现自动化的snat。

iptables -t nat -A POSTROUTING -s 101.101.101.0/24 -o ens33 -j MASQUERADE

4)让规则持久化(永久生效)保证重启后规则仍旧存在

yum -y install iptables-services
iptables-save > /etc/sysconfig/iptables
systemctl enable iptables --now

 2.需求二

centos 使用iptables将centos克隆的流量实现snat转换成101.101.101.7 访问internet

1)centos克隆的配置

nmcli con modify ens33-static ipv4.gateway 101.101.100.7 ipv4.dns 8.8.8.8

nmcli con up ens33-static

2)centos7的配置

iptables -t nat -A POSTROUTING -s 101.101.100.0/24 -o ens37 -j MASQUERADE
 echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf 
sysctl -w net.ipv4.ip_forward=1 
yum -y install iptables-services 
iptables-save > /etc/sysconfig/iptables 
systemctl enable iptables --now

 3. 需求三

slave1上使用firewalld实现SNAT允许CentOS7访问Internet

假设在网关,基本ip都已经配置完成的情况下

在 slave1配值即可

firewall-cmd --add-masquerade --permanent
firewall-cmd --reload

说明:

本实验没有采用真实的私网与公网地址

网络知识点

1.私有地址

  • 10.0.0.0~10.255.255.255
  • 172.16.0.0~172.31.255.255
  • 192.168.0.0~192.168.255.255

2.iptables中的“四表五链”及“堵通策略”

A.“四表”是指,iptables的功能——filter, nat, mangle, raw. 

B.“五链”是指内核中控制网络的NetFilter定义的五个规则链,分别为

  • PREROUTING, 路由前
  • INPUT, 数据包流入口
  • FORWARD, 转发管卡
  • OUTPUT, 数据包出口
  • POSTROUTING, 路由后

C.堵通策略是指对数据包所做的操作,一般有两种操作——“通(ACCEPT)”、“堵(DROP)”,

2..iptables命令

  • -t :是指操作的表
  • -A:在所选择的链末添加一条或更多规则。当源(地址)或者/与 目的(地址)转换为多个地址时,这条规则会加到所有可能的地址(组合)后面。 
  • -s:检查报文的源IP地址是否符合此处指定的范围,或是否等于此处给定的地址;
  • -d:检查报文的目标IP地址是否符合此处指定的范围,或是否等于此处给定的地址;
  • -p:匹配报文中的协议,可用值tcp, udp, udplite, icmp, icmpv6,esp, ah, sctp, mh 或者 "all", 亦可以数字格式指明协议;
  • -i:限定报文仅能够从指定的接口流入;
  • -o:限定报文仅能够从指定的接口流出;
  • -j 目标跳转 指定规则的目标;也就是说,如果包匹配应当做什么

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值