SNAT / DNAT 自定义链

目录

linux 系统本身是没有转发功能,只有路由发送数据

NAT

NAT的实现分为两类

SNAT

SNAT 应用环境

SNAT 原理

SNAT 转换前提条件

例图参考

开启 SNAT 命令

临时开启

永久开启

修改 iptables 网卡

DNAT

DNAT 应用环境

DNAT 原理

DNAT 转换前提条件

例图参考

DNAT 转换1: 发布内网的 Web服务

DNAT 转换2: 发布时修改目标端口

在内网上配置

在网关服务器添加 iptables 规则

测试外网是否能访问内网


linux 系统本身是没有转发功能,只有路由发送数据

NAT

—— PREROUTING

路由判断前

—— INPUT

进入本机的流量

—— OUTPUT

出本机的流量

—— POSTROUTING

路由判断后

NAT的实现分为两类

—— SNAT:source NAT ,支持 POSTROUTING , INPUT,让本地网络中的主机通过某一特定地址访问外部网络,实现地址伪装,请求报文:修改 源IP ;让内网可以访问外网

—— DNAT:destination NAT ,支持 PREROUTING , OUTPUT,把本地网络中的主机上的某服务开放给外部网络访问(发布服务和端口映射),但隐藏真实IP,请求报文:修改 目标IP ;让外网可以访问到内网的机器

SNAT

SNAT 应用环境

局域网主机共享单个公网IP地址接入Internet (私有IP不能在Internet中正常路由

SNAT 原理

源地址转换

修改数据包的源地址

SNAT 转换前提条件

局域网各主机已正确设置IP地址、子网掩码、默认网关地址

Linux网关开启IP路由转发

例图参考

开启 SNAT 命令
临时开启
echo 1 > /proc/sys/net/ipv4/ip_forward
或
sysctl -W net.ipv4.ip_forward=1

永久开启
[root@localhost network-scripts]# sysctl -a|grep "ip_forward"
sysctl: reading key "net.ipv6.conf.all.stable_secret"
sysctl: reading key "net.ipv6.conf.default.stable_secret"
sysctl: reading key "net.ipv6.conf.ens32.stable_secret"
sysctl: reading key "net.ipv6.conf.ens33.stable_secret"
sysctl: reading key "net.ipv6.conf.lo.stable_secret"
sysctl: reading key "net.ipv6.conf.virbr0.stable_secret"
sysctl: reading key "net.ipv6.conf.virbr0-nic.stable_secret"
net.ipv4.ip_forward = 0
net.ipv4.ip_forward_use_pmtu = 0
​
vim /etc/ sysctl. conf 
#打开配置文件
net. ipv4.ip_ forward = 1               
#将此行写入配置文件任意空行之中
​
sysctl -P
#读取修改后的配置

修改 iptables 网卡
SNAT 转换1:固定的公网ip地址
​
iptables -t nat -A POSTROUTING  -s  12.0.0.0/24  -o ens33 -j SNAT --to 192.168.91.101
#交给网关
​
iptables -t nat -A POSTROUTING -s  12.0.0.0/24 -o ens37 -j SNAT --to 192.168.91.101~192.168.91.103
#内网地址     出站网卡       外网ip或地址池
​
​
SNAT 转换2:非固定的公网ip地址
​
iptables -t nat -A POSTROUTING -s 12.0.0.0/24 -d 192.168.100.0/24 -j MASQUERADE
​
iptables -t nat -A POSTROUTING -s  192.168.100.0/24 -o ens37 -j MASQUERADE
​
​

DNAT

DNAT 应用环境

在Internet中发布位于局域网内的服务器

DNAT 原理

修改数据包的目的地址

DNAT 转换前提条件
  1. 局域网的服务器能够访问Internet

  2. 网关的外网地址有正确的DNS解析记录

  3. Linux网关开启IP路由转发

vim /etc/ sysctl. conf 
#打开配置文件
net. ipv4.ip_ forward = 1               
#将此行写入配置文件任意空行之中
​
sysctl -P
#读取修改后的配置

例图参考

DNAT 转换1: 发布内网的 Web服务
#把从ens33进来的要访问web服务的数据包目的地址转换为 192.168.100.102
iptables -t nat -A PREROUTING -i ens33 -d 12.0.0.1 -p tcp--dport 80 -j DNAT --to 192.168.100.102
​
​
#或
iptables -t nat -A PREROUTING -i ens33 -d 12.0.0.1 -p tcp--dport 80-j DNAT --to-destination 192.168.100.102#入站|外网网卡 | 外网ip                            内网服务器ip

DNAT 转换2: 发布时修改目标端口
#发布局域网内部的OpenSSH服务器, 外网主机需使用250端口进行连接
iptables-t nat -A PREROUTING -i ens33 -d 12.0.0.1 -p tcp--dport 250-jDNAT --to 192.168.100.102:22

在内网上配置
#在内网上安装 httpd并开启服务
[root@localhost yum.repos.d]# yum install -y httpd
[root@localhost yum.repos.d]# systemctl start httpd#关闭防火墙和安全终端
[root@localhost yum.repos.d]# systemctl stop firewalld.service 
[root@localhost yum.repos.d]# setenforce 0

在网关服务器添加 iptables 规则
#先清空规则
[root@localhost yum.repos.d]#iptables -F -t nat
​
#添加规则
[root@localhost yum.repos.d]#iptables -t nat -A PREROUTING -i ens38 -d 12.0.0.1 -p tcp --dport 80 -j DNAT --to 192.168.100.102#查看规则
[root@localhost yum.repos.d]#iptables -nL -t nat
Chain PREROUTING (policy ACCEPT)
target     prot opt source               destination         
DNAT       tcp  --  0.0.0.0/0            12.0.0.1             tcp dpt:80 to:192.168.100.102Chain INPUT (policy ACCEPT)
target     prot opt source               destination         Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         Chain POSTROUTING (policy ACCEPT)
target     prot opt source               destination    
​

测试外网是否能访问内网
#在外网服务器上
[root@localhost ~]# curl 12.0.0.1
​
#在内网服务器上
[root@localhost yum.repos.d]# tail /etc/httpd/logs/access_log 
127.0.0.1 - - [02/Nov/2021:18:05:31 +0800] "GET / HTTP/1.1" 403 4897 "-" "curl/7.29.0"
​

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/234727.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

算法通关村第五关—Hash基础知识(青铜)

Hash基础 一、Hash的概念和基本特征 哈希(Hash)也称为散列,就是把任意长度的输入,通过散列算法,变换成固定长度的输出,这个输出值就是散列值。很多人可能想不明白,这里的映射到底是啥意思,为啥访问的时间…

防孤岛装置在光伏发电、燃气发电等新能源并网供电系统的应用

• AM5SE-IS防孤岛保护装置主要适用于35kV、10kV及低压380V光伏发电、燃气发电等新能源并网供电系统。 • 当发生孤岛现象时,可以快速切除并网点,使本站与电网侧快速脱离,保证整个电站和相关维护人员的生命安全**。 保护功能** ● 三段式过流…

下载MySQL JDBC驱动的方法

说明 java代码通过JDBC访问MySQL数据库,需要MySQL JDBC驱动。 例如,下面这段代码,因为找不到JDBC驱动,所以执行会报异常: package com.thb;public class JDBCDemo {public static void main(String[] args) throws …

第十八章,Swing窗体

概述 String包的层次结构和继承关系如下 常用的Swing组件如下表 Swing常用窗体 JFrame 窗体 JFrame 类的常用构造方法包括以下两种形式: public JFrame():创建一个初始不可见、没有标题的窗体。 public JFrame(String title)&a…

【数值计算方法(黄明游)】矩阵特征值与特征向量的计算(三):Jacobi 旋转法【理论到程序】

文章目录 一、Jacobi 旋转法1. 基本思想2. 计算过程演示 二、Python实现迭代过程(调试) 矩阵的特征值(eigenvalue)和特征向量(eigenvector)在很多应用中都具有重要的数学和物理意义。Jacobi 旋转法是一种用…

自建CA实战之 《0x02 Nginx 配置 https双向认证》

自建CA实战之 《0x02 Nginx 配置 https双向认证》 上一章节我们已经实现了Nginx上配置https单向认证,主要场景为客户端验证服务端的身份,但是服务端不验证客户端的身份。 本章节我们将实现Nginx上配置https双向认证,主要场景为客户端验证服…

品牌如何用软文与用户产生联结?媒介盒子分享两大要素

做软文推广,重要的一点就是为别人提供有价值或有意思的内容,比如卖车的教汽车养护知识,做金融的分享理财知识,人家觉得在这里能找到想要的东西,自然会成为粉丝,效果比强行推销要好很多。但是许多企业在做软…

【Linux】firewall防火墙配置-解决Zookeeper未授权访问漏洞

背景: zookeeper未授权访问漏洞,进行限制访问,采用防火墙访问策略 配置步骤: ##查看firewall配置清单 firewall-cmd --list-all ##查到为关闭态,启动防火墙 systemctl start firewalld ## 添加端口,这里…

NASM安装和结合nodepad++进行编译的过程

mov ax,0x30 mov bx,0xc0 add ax,bx times 502 db 0 db 0x55 db 0xAA nasm安装地址: https://www.nasm.us/ 下载exe安装 在命令行提示符输入nasm编译命令 nasm exam.asm -f bin -o exam.bin 此时输入回车将会执行编译过程。 1,启动NotePad,在菜单上选…

volatile-之小总结

凭什么我们Java写了一个volatile关键字,系统底层加入内存屏障?两者的关系如何勾搭? 内存屏障是什么? 是一种屏障指令,它使得CPU或编译器对屏障指令的前和后所发出的内存操作执行一个排序的约 束。也称为内存栅栏或栅…

对话汪源:数智时代为企业构建新的竞争力,和网易数帆的“为与不为”

CodeWave在内的诸多“主演”正在重新演绎网易数帆,在网易数帆的新故事里,做专业、底层、核心的工具,是其成长至今最核心的底色。 作者|斗斗 编辑|皮爷 出品|产业家 “我希望在中间层能构建一个好的生态。”网易汪源的这句话,让…

“学习Python能用来做什么?”

文章目录 前言01 Web开发为什么需要Web框架应该使用哪种Python Web框架Django和Flask有什么区别如何选择 02 数据科学机器学习是什么将Python用于机器学习数据分析和数据可视化使用Python进行数据分析/可视化如何用Python学习数据分析/可视化 03 脚本什么是脚本? 04…