一、实验环境

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.8nmcli con up ens33-static

2)centos7的配置

iptables -t nat -A POSTROUTING -s 101.101.100.0/24 -o ens37 -j MASQUERADEecho "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 目标跳转 指定规则的目标;也就是说,如果包匹配应当做什么

linux 实现SNAT技术相关推荐

  1. linux内核调试技术 kprobe使用与实现

    Linux kprobes调试技术是内核开发者们专门为了便于跟踪内核函数执行状态所设计的一种轻量级内核调试技术.利用kprobes技术,内核开发人员可以在内核的绝大多数指定函数中动态的插入探测点来收集 ...

  2. 嵌入式linux实时化技术,嵌入式Linux实时化技术

    引言 Linux支持PowerPC.MIPS.ARM.DSP等多种嵌入式处理器,逐渐被用于多种关键性场合.其中实时多媒体处理.工业控制.汽车电子等特定应用对Linux提出了强实时性需求.Linux提供 ...

  3. 概述 Linux系统扫描技术及安全防范

    Linux系统扫描技术及安全防范 主机扫描 路由扫描 批量服务扫描 linux防范恶意扫描安全策略 什么是互联网安全? 保障数据在互联网的真实.可靠.完整.可控性传输与存储. 真实: 可靠:不被篡改 ...

  4. 亲爱的,我是一条Linux运维技术学习路径呀。

    根据我的经验,人在年轻时,最头疼的一件事就是决定自己这一生要做什么.在这方面,我倒没有什么具体的建议:干什么都可以,但最好不要写小说,这是和我抢饭碗.总而言之,干什么都是好的:但要干出个样子来,这才是 ...

  5. 嵌入式linux的调试技术

    本章介绍了嵌入式linux的调试技术,例如,设置断点.逐步跟踪代码.输出调试信息等. Printk函数用于打印内核调试信息,运行在内核空间,printf函数运行在用户空间.Printk文件是一个简单的 ...

  6. Android深度探索(卷1)HAL与驱动开发 心得体会 第十章 嵌入式Linux的调用技术

    Android深度探索(卷1)HAL与驱动开发 心得体会 第十章  嵌入式Linux的调用技术 对于复杂的Linux驱动以及HAL等程序库,需要使用各种方法对其进行调试.例如,设置断点,逐步跟踪代码. ...

  7. Linux块层技术全面剖析-v0.1

    Linux块层技术全面剖析-v0.1 perftrace@gmail.com 1     前言 网络上很多文章对块层的描述散乱在各个站点,而一些经典书籍由于更新不及时难免更不上最新的代码,例如关于块层 ...

  8. Linux - 零拷贝技术

    Linux - 零拷贝技术 前言 一. 相关概念 1.1 缓冲区 1.1.1 内核缓冲区 1.1.2 用户缓冲区 1.2 DMA技术 1.3 虚拟内存 二. 零拷贝 2.1 传统文件传输流程 2.2 ...

  9. Linux 容器化技术详解(虚拟化、容器化、Docker)

    虚拟化是过去用来充分利用物理资源的最常用方法.早年间,我们可以用一台服务器运行一个操作系统,处理一个任务,带来的问题是资源利用率极其不足,计算机的潜能并不能完全发挥,而后多道批处理系统.分时系统相继出 ...

最新文章

  1. 研究学者、医师与产业投资者齐聚一堂,将碰撞出何种火花?
  2. cpu的内容——cu的功能。操作命令的分析 || 微程序设计思想
  3. PHP下kafka的实践(已经测试)
  4. Pycharm软件注册方法
  5. 大数据WEB阶段(十二)会话技术、Cookie、Session及两者的区别
  6. 程序员基本功02对象与内存控制
  7. 关于RT-Thread的背景和成长
  8. 为什么iPad-WIFI版无3G模块也可以准确定位?
  9. SpringBoot2.1.5(13)--- SpringBoot 特性下
  10. 微课系列(三):Python列表中存储的是元素的引用
  11. noip模拟赛 入阵曲
  12. 调用阿里API创建阿里云主机
  13. OA审批工作流设计器实现
  14. 手把手教你写让人眼前一亮的软件测试简历,收不到面试邀请算我输
  15. globalThis is not defined 解决方案
  16. 爬虫 Edge浏览器安装Xpaht Helper插件平替Chrome浏览器Xpaht Helper插件定位元素
  17. Kafka——创建无消费者组的消费者消费订阅主题
  18. SSH登陆,用XShell
  19. k宝无法连接计算机,农行二代K宝插电脑上显示无法识别怎么办? 驱动已正确安装了,电脑的USB接口插其他U盘什么的都正常的...
  20. 0001-Flink安装---Flink安装(Standlone模式)

热门文章

  1. 类似分析牛爱站SEO工具包的同类软件
  2. 搭建webrtc视频服务rtcmulticonnection-server完整教程
  3. P1169 [ZJOI2007]棋盘制作(悬线法)
  4. Mellanox CX4 offload 卸载功能介绍
  5. @GetMapping
  6. C语言2048源代码
  7. 2023 PS零基础入门教程
  8. multiset的介绍及使用
  9. elasticsearch自定义企业词典
  10. Java WKT API