计算机网络 SNAT/DNAT 部署(三种VMware网卡模式)
计算机网络SNAT 和 DNAT 的详细配置步骤
目录
4.1、网络规划、 规划IP地址网段、 接口、 角色(client、 firewall)
5.2、配置firewall 网关服务器的防火墙规则、 并打开路由功能
4.1、网络规划、 规划IP地址网段、 接口、 角色(web(nginx)、mysql、 linux 网关服务器)
4.2、安装好3台服务器的系统、 根据拓扑结构图的规划、配置ip地址、 安装好docker
4.3、在网关服务器上实现SNAT策略让内网的服务器可以上网、需要内网的服务器配置好ip和网关、dns
4.4、在内网服务器上启动好nginx和mysql的docker容器、 测试容器是否能正常访问
4.5、在网关服务器上编写脚本去配置好DNAT策略、 开启路由功能
5.1、配置docker容器 并在docker容器里启动nginx 和 mysql
一、NAT
什么是NAT?
NAT(Network Address Translation)是一种网络协议,通过它可以将一个网络中的私有IP地址转换为公共IP地址,从而实现多个设备共享同一个公共IP地址上网的功能。NAT主要用于解决IPv4地址不足的问题,同时也可以增强网络安全性,因为NAT可以隐藏内部网络的IP地址和拦截一些不良的网络流量。
NAT:将公网转为私网,将私网转为公网
公网IP:互联网上使用
私有IP:局域网里使用
(一个局域网共用一个公网IP地址上网)
NAT在公司中起什么作用呢?
NAT(网络地址转换)在公司中起着以下几个作用:
IP地址映射:NAT允许公司内部使用私有IP地址,而将其转换为公共IP地址,从而使公司内部网络可以与公共网络通信。
安全性:NAT可以隐藏公司内部网络的真实IP地址,从而提高网络安全性,减少受到攻击的风险。
节省IP地址:由于NAT可以将多个私有IP地址映射到一个公共IP地址上,因此可以节省公司使用的公共IP地址数量。
网络管理:NAT可以充当一种网络管理工具,可以对公司内部网络进行流量控制、限制对外访问等,从而更好地维护和管理公司的网络。
二、VMware虚拟机的三种网卡模式
1、hostonly主机模式
2、NAT模式
3、桥接模式
Windows上wifi的适配器模式:
VMvare Network Adapter VMnet1 ==》hostonly模式(仅主机模式)
VMvare Network Adapter VMnet8 ==》NAT模式(网络地址转换)
VMvare Network Adapter VMnet0(以太网口\WLAN网卡) ==》bridge模式(桥接模式)
1. hostonly模式:虚拟机只能和我们的真实机器通信==》原因:虚拟机没有配置网关
真实机器通过vmnet1和虚拟机连接
2. NAT模式:网络地址转换。==》优点:隐藏内部网络;缺点:速度慢(经过的转换太多,每过一层就要修改一次数据包)
真实机器通过Vmnet8连接虚拟机
3. 桥接模式:虚拟机可以和本地通信,也可以和局域网里的其他的真实机器或者也是桥接模式的虚拟机通信。
VMware会虚拟出一个交换机,桥接模式的虚拟机和真实机器都是连接在这个虚拟的交换机上。
桥接模式里的虚拟机和真实机器的地位是一样的,都是通过外面的路由器上网,而且和真实机器在相同网段。
【注】桥接模式下,真实机器和虚拟机的IP要在同一网段,所以他们的网关、DNS也都要相同
vmware三种网卡模式的区别和适用的场景是什么?
VMware有三种网卡模式:桥接模式、NAT模式和主机模式。
桥接模式(Bridge Mode):桥接模式将虚拟机网卡直接连接到物理网络上,虚拟机可以像实体机一样与网络上其他设备通信,获取IP地址并进行网络操作。适用于需要虚拟机与物理网络设备直接交互的场景,例如需要虚拟机作为服务器提供网络服务等。
NAT模式(Network Address Translation Mode):NAT模式将虚拟机网卡的IP地址转换为主机的IP地址,虚拟机可以访问Internet,但是主机和其他设备无法直接访问虚拟机。适用于需要虚拟机访问Internet,但不需要外部网络访问虚拟机的场景,例如在虚拟机中使用浏览器上网等。
主机模式(Host-Only Mode):主机模式将虚拟机网卡连接到主机的虚拟网络上,虚拟机之间可以互相通信,但无法与物理网络连接。适用于需要虚拟机之间互相通信的场景,例如搭建开发环境等。
总之,根据不同的场景需求选择不同的网卡模式可以更好地满足虚拟机的网络
三、SNAT实验
1、什么是SNAT?
SNAT(Secure Network Address Translation)是一种NAT的实现方式,也被称为源地址转换(Source NAT)。它在传输层对IP数据包进行修改,将源IP地址改为公共IP地址,从而实现内部网络的设备可以通过公共IP地址访问外部网络。SNAT通常用于解决内部网络中的设备无法直接访问外部网络的问题,同时也可以增强网络安全性,因为SNAT可以隐藏内部网络的真实IP地址。
2、SNAT配置环境
两台linux虚拟机(centos)
[root@mysql etc]# cat /etc/redhat-release
CentOS Linux release 7.9.2009 (Core)
3、SNAT实验内容
实验内容:使用一台虚拟机[名为centos 1]作为内部客户机(一块网卡即可),另外一台虚拟机[名为centos 2]作为网关服务器(需要两块网卡),内部客户机通过网关服务器上网
SNAT 策略的原理
修改数据包的源IP地址 将 私网IP --》 转换成 --》 公网IP
SNAT 策略的典型应用环境
局域网主机共享单个公网IP地址接入Internet
当linux虚拟机只有一块网卡、 如何添加一块网卡?
如何添加一块网卡:
1、先把机器关机 init 0
2、编辑虚拟机设置
3、点击添加
4、网络适配器 --》 完成
5、桥接模式
6、开启虚拟机
4、SNAT实验步骤
4.1、网络规划、 规划IP地址网段、 接口、 角色(client、 firewall)
4.2、配置服务器的ip和防火墙规则、 打开路由功能
4.3、测试和验证
5、SNAT实验实现
5.1、配置两台虚拟机的IP地址和DNS
=====
firewall 网关服务器
默认情况下虚拟机增加了网卡、 不会自动生成配置文件、 需要手动的去复制ens33的配置文件
[root@localhost network-scripts]# cp ifcfg-ens33 ifcfg-ens36
[root@localhost network-scripts]# cat ifcfg-ens36 --》 LAN口的配置 只需要配置IP地址和子网掩码
BOOTPROTO="none"
NAME="ens36"
DEVICE="ens36"
ONBOOT="yes"
IPADDR=192.168.80.100
PREFIX=24
[root@localhost network-scripts]#
[root@localhost network-scripts]# cat ifcfg-ens33 --》WAN口的配置 所有都要配置
BOOTPROTO="none"
NAME="ens33"
DEVICE="ens33"
ONBOOT="yes"
IPADDR=192.168.2.200
PREFIX=24
GATEWAY=192.168.2.1
DNS1=114.114.114.114
DNS2=192.168.2.1
[root@localhost network-scripts]# service network restart --》 重启网卡 刷新网络服务
Restarting network (via systemctl): [ OK ]
=====
client 客户机
[root@localhost network-scripts]# cat ifcfg-ens33
BOOTPROTO="none"
NAME="ens33"
DEVICE="ens33"
ONBOOT="yes"
IPADDR=192.168.80.1
PREFIX=24
GATEWAY=192.168.80.100
DNS1=114.114.114.114
[root@localhost network-scripts]# service network restart --》 重启网卡 刷新网络服务
Restarting network (via systemctl):
firewall 网关服务器;:
最后ip add 查看一下
并且 ping www.baidu.com 看看能否上网 --》 验证是否配置成功
client 客户机:
配置好IP地址和网关、 DNS就可以了
5.2、配置firewall 网关服务器的防火墙规则、 并打开路由功能
firewall 网关服务器:
1、配置好IP地址和网关、 dns
2、开启路由转发功能
临时开启路由功能:
echo 1 >/proc/sys/net/ipv4/ip_forward --> 打开内核里的路由开关 1 表示开启路由 0 表示关闭路由
proc 里的东西是临时保存的 一开关机就会消失 用echo 去做 重定向永久开启路由功能:
vim /etc/sysctl.conf 加入 --》 net.ipv4.ip_forward = 1
然后刷新服务 --》 sysctl -p在client 和 firewall 网关服务器 上都要 关闭selinux和防火墙、 然后在firewall上再开启
关闭防火墙:
service firewalld stop --》 马上关闭防火墙
systemctl disable firewalld --》设置开机后不要启动防火墙3、添加使用SNAT策略的防火墙规则
规则示例:(在firewall 网关服务器上敲)
iptables -t nat -A POSTROUTING -s 192.168.70.0/24 -o ens33 -j SNAT --to-source 192.168.2.200
内部IP地址是哪个网段 从ens33口出去的 采取SNAT 外网IP地址
=====
重新设置主机名:
hostnamectl set-hostname firewall --》 设置我们的主机名为 firewall
su - root --> 重新登录
设置成功
写成脚本
[root@firewall shell]# cat SNAT.sh
#!/bin/bash
#清除filter表和nat表的防火墙的规则
iptables -F
iptables -t nat -F
#关闭firewalld服务、并设置它开机后不在启动
service firewalld stop
systemctl disable firewalld
#配置SNAT策略
iptables -t nat -A POSTROUTING -s 192.168.70.0/24 -o ens33 -j SNAT --to-source 192.168.2.200
#开启临时路由功能
echo 1 >/proc/sys/net/ipv4/ip_forward
[root@firewall shell]#
5.3、执行并测试
执行脚本后:
[root@firewall shell]# iptables -L -t nat -n --line
Chain PREROUTING (policy ACCEPT)
num target prot opt source destination
Chain INPUT (policy ACCEPT)
num target prot opt source destination
Chain OUTPUT (policy ACCEPT)
num target prot opt source destination
Chain POSTROUTING (policy ACCEPT)
num target prot opt source destination
1 SNAT all -- 192.168.70.0/24 0.0.0.0/0 to:192.168.2.200
[root@firewall shell]#
测试:
最后在Client 客户机上
ping www.baidu.com
查看是否能ping通
四、DNAT实验
1、什么是DNAT?
DNAT(Destination Network Address Translation)是一种NAT的实现方式,也被称为目的地址转换(Destination NAT)。它在传输层对IP数据包进行修改,将目的IP地址改为内部网络中的设备IP地址,从而实现外部网络可以通过公共IP地址访问内部网络中的设备。DNAT通常用于实现服务器对外提供服务的功能,例如将公共IP地址映射到内部网络中的Web服务器上,从而外部用户可以通过公共IP地址访问Web服务器。
2、DNAT配置环境
三台linux虚拟机(centos)
使用:CentOS Linux release 7.9.2009 (Core)、 docker23.0.1、 mysql5.7.35、 nginx1.23.3、 iptables、 3台linux服务器1核2G
前提条件:
1、局域网的Web服务器正确设置了IP地址/子网掩码
2、局域网的Web服务器正确设置了默认网关地址
3、DNAT实验内容
实验内容:让外网的机器,能够访问内网的服务器
DNAT:目标地址转换、 Destination Network Address Translantion
原理:修改数据包的目标IP地址
DNAT策略的典型应用环境:
在internet中发布位于企业局域网内的服务器
在企业中用来发布内网的服务器到internet上
DNAT是数据从外面进来
4、DNAT实验步骤
4.1、网络规划、 规划IP地址网段、 接口、 角色(web(nginx)、mysql、 linux 网关服务器)
4.2、安装好3台服务器的系统、 根据拓扑结构图的规划、配置ip地址、 安装好docker
4.3、在网关服务器上实现SNAT策略让内网的服务器可以上网、需要内网的服务器配置好ip和网关、dns
4.4、在内网服务器上启动好nginx和mysql的docker容器、 测试容器是否能正常访问
4.5、在网关服务器上编写脚本去配置好DNAT策略、 开启路由功能
4.6、在其他的机器上测试发布的web和mysql服务
例如:iptables -t nat -A PREROUTING -i ens33 -d 218.29.30.31 -p tcp --dport 80 -j DNAT --to-destination 192.168.1.6
当我们访问3306 DNAT 就会帮我们映射到192.168.1.6
需要在windows里添加一条路由、 从而方便我们ssh到内网的服务器里
route add 192.168.70.0/24 192.168.2.200
-t nat 指定在nat表里操作
-A POSTROUTING 在POSTROUTING位置追加一条规则 A:表示append
-s 192.168.255.0/24 指定从防火墙通过的数据包里的源ip地址来自192.168.255.0/24网段
-o ens33 从ens33接口出去 out-interface
-j SNAT 采取SNAT策略,进行源ip地址的转换
--to-source 192.168.1.110 将ip包里的源IP地址修改为192.168.1.110(你是从哪个地址出去的就填
5、DNAT实验实现
5.1、配置docker容器 并在docker容器里启动nginx 和 mysql
=====
docker 的安装:(查看官方文档)
https://docs.docker.com/engine/install/centos/
=====
[root@web ~]# docker version --》 查看docker 的版本
Client: Docker Engine - Community
Version: 23.0.1
API version: 1.42
Go version: go1.19.5
Git commit: a5ee5b1
Built: Thu Feb 9 19:51:00 2023
OS/Arch: linux/amd64
Context: default
Server: Docker Engine - Community
Engine:
Version: 23.0.1
API version: 1.42 (minimum version 1.12)
Go version: go1.19.5
Git commit: bc3805a
Built: Thu Feb 9 19:48:42 2023
OS/Arch: linux/amd64
Experimental: false
containerd:
Version: 1.6.18
GitCommit: 2456e983eb9e37e47538f59ea18f2043c9a73640
runc:
Version: 1.1.4
GitCommit: v1.1.4-0-g5fd4c4d
docker-init:
Version: 0.19.0
GitCommit: de40ad0
=====
nginx:
[root@web ~]# docker images --》 查看docker的镜像文件
REPOSITORY TAG IMAGE ID CREATED SIZE
hello-world latest feb5d9fea6a5 17 months ago 13.3kB
[root@web ~]# docker pull nginx --》 在docker中安装nginx 同理可以安装mysql
Using default tag: latest
latest: Pulling from library/nginx
bb263680fed1: Pull complete
258f176fd226: Pull complete
a0bc35e70773: Pull complete
077b9569ff86: Pull complete
3082a16f3b61: Pull complete
7e9b29976cce: Pull complete
Digest: sha256:6650513efd1d27c1f8a5351cbd33edf85cc7e0d9d0fcb4ffb23d8fa89b601ba8
Status: Downloaded newer image for nginx:latest
docker.io/library/nginx:latest
[root@web ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx latest 3f8a00f137a0 2 weeks ago 142MB
hello-world latest feb5d9fea6a5 17 months ago 13.3kB
[root@web ~]#
[root@web ~]# docker ps --》 查看docker容器状态
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
[root@web ~]# docker run -d --name lpf-nginx-1 -p 80:80 nginx --》 启动docker容器中的nginx
f7d857e6585e7dfc92cb6aed3df1e86bac401fd45e0b2b7949b1143ba2848303
[root@web ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
f7d857e6585e nginx "/docker-entrypoint.…" 6 seconds ago Up 5 seconds 0.0.0.0:80->80/tcp, :::80->80/tcp lpf-nginx-1
[root@web ~]#
[root@web ~]# docker stop lpf-nginx-1 --》 关闭docker中的nginx
yum install net-tools -y --> 需要装这个软件才能使用netstat
[root@web ~]# netstat -anplut|grep 80 --》 查看端口是否开放
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 12866/docker-proxy
[root@web ~]# ss -anplut|grep docker --》 也是一样的监听端口命令
tcp LISTEN 0 128 *:80 *:* users:(("docker-proxy",pid=12866,fd=4))
tcp LISTEN 0 128 [::]:80 [::]:* users:(("docker-proxy",pid=12870,fd=4))
[root@web ~]#
=====
Mysql:
[root@mysql ~]# docker pull mysql:5.7.35 --> 下载mysql 5.7.35 版本
5.7.35: Pulling from library/mysql
b380bbd43752: Pull complete
f23cbf2ecc5d: Pull complete
30cfc6c29c0a: Pull complete
b38609286cbe: Pull complete
8211d9e66cd6: Pull complete
2313f9eeca4a: Pull complete
7eb487d00da0: Pull complete
bb9cc5c700e7: Pull complete
88676eb32344: Pull complete
8fea0b38a348: Pull complete
3dc585bfc693: Pull complete
Digest: sha256:b8814059bbd9c80b78fe4b2b0b70cd70fe3772b3c5d8ee1edfa46791db3224f9
Status: Downloaded newer image for mysql:5.7.35
docker.io/library/mysql:5.7.35
[root@mysql ~]# docker images --》 查看镜像文件
REPOSITORY TAG IMAGE ID CREATED SIZE
mysql 5.7.35 8a8a506ccfdc 16 months ago 448MB
hello-world latest feb5d9fea6a5 17 months ago 13.3kB
[root@mysql ~]# docker run -d --name lpf-mysql-1 -e MYSQL_ROOT_PASSWORD='sc123456' -p 3306:3306 mysql:5.7.35 --》 在docker上启动mysql 并配置环境变量
2958c6046c7d52f5aac969c852cee2382c2fc8b3aa57d43d0e5a84d6f5de4589
[root@mysql ~]#
[root@mysql ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
2958c6046c7d mysql:5.7.35 "docker-entrypoint.s…" 2 minutes ago Up 2 minutes 0.0.0.0:3306->3306/tcp, :::3306->3306/tcp, 33060/tcp lpf-mysql-1
[root@mysql ~]#
[root@mysql ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
2958c6046c7d mysql:5.7.35 "docker-entrypoint.s…" 2 minutes ago Up 2 minutes 0.0.0.0:3306->3306/tcp, :::3306->3306/tcp, 33060/tcp lpf-mysql-1
[root@mysql ~]# ss -anplut|grep docker
tcp LISTEN 0 128 *:3306 *:* users:(("docker-proxy",pid=14108,fd=4))
tcp LISTEN 0 128 [::]:3306 [::]:* users:(("docker-proxy",pid=14112,fd=4))
[root@mysql ~]#
=====
测试nginx容器是否能正常访问
[root@web ~]# curl 192.168.70.1 --》 访问自己的nginx
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
html { color-scheme: light dark; }
body { width: 35em; margin: 0 auto;
font-family: Tahoma, Verdana, Arial, sans-serif; }
</style>
</head>
<body>
<h1>Welcome to nginx!</h1>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p>
<p>For online documentation and support please refer to
<a href="http://nginx.org/">nginx.org</a>.<br/>
Commercial support is available at
<a href="http://nginx.com/">nginx.com</a>.</p>
<p><em>Thank you for using nginx.</em></p>
</body>
</html>
[root@web ~]#
=====
测试mysql是否能正常访问
[root@mysql /]# yum install -y mysql --》 下载mysql这个软件
[root@mysql /]# mysql -uroot -psc123456 -h 192.168.70.2 --》执行mysql 前提是电脑已经下载了mysql这个软件
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MySQL connection id is 6
Server version: 5.7.35 MySQL Community Server (GPL)
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MySQL [(none)]>
MySQL [(none)]> Ctrl-C -- exit!
Aborted
[root@mysql /]#
=====
5.2、配置DNAT策略并写成脚本
脚本DNAT_SNAT.sh
[root@service shell]# cat DNAT_SNAT.sh
#!/bin/bash
#清除filter表和nat表的防火墙的规则
iptables -F
iptables -t nat -F
#关闭firewalld服务、并设置它开机后不在启动
service firewalld stop
systemctl disable firewalld
#配置SNAT策略
iptables -t nat -A POSTROUTING -s 192.168.70.0/24 -o ens33 -j SNAT --to-source 192.168.2.200
#配置DNST策略
#DNAT_web 192.168.70.1
#当我们访问80端口 DNAT策略 就会帮我们映射到192.168.70.1的80端口
iptables -t nat -A PREROUTING -i ens33 -d 192.168.2.200 -p tcp --dport 80 -j DNAT --to-destination 192.168.70.1:80
#DNAT_mysql 192.168.70.2
#当我们访问3306端口 DNAT策略 就会帮我们映射到192.168.70.2的3306端口
iptables -t nat -A PREROUTING -i ens33 -d 192.168.2.200 -p tcp --dport 3306 -j DNAT --to-destination 192.168.70.2:3306
#DNAT mysql 192.168.70.3 docker
#iptables -t nat -A PREROUTING -i ens33 -d 192.168.2.200 -p tcp --dport 3309 -j DNAT --to-destination 192.168.70.3:3309
#开启临时路由功能
echo 1 >/proc/sys/net/ipv4/ip_forward
[root@service shell]#
-t nat 指定在nat表里操作
-A POSTROUTING 在POSTROUTING位置追加一条规则 A:表示append
-s 192.168.255.0/24 指定从防火墙通过的数据包里的源ip地址来自192.168.255.0/24网段
-o ens33 从ens33接口出去 out-interface
-j SNAT 采取SNAT策略,进行源ip地址的转换
--to-source 192.168.1.110 将ip包里的源IP地址修改为192.168.1.110(你是从哪个地址出去的就填
5.3、测试 nginx的访问 和 mysql的访问
=====
测试nginx的访问
最后到windows上去验证:
1、打开浏览器
2、输入网址http://192.168.2.200/ 查看是否打开了nginx
如果打开了 说明DNAT策略成功了
=====
修改nginx的网页
进入容器内部、 修改首页
[root@web ~]# docker exec -it lpf-nginx-1 /bin/bash
root@f7d857e6585e:/# cd /usr/share/nginx/html/
root@f7d857e6585e:/usr/share/nginx/html# ls
50x.html index.html
root@f7d857e6585e:/usr/share/nginx/html# echo "Welcome to snchuang web site" > index.html
root@f7d857e6585e:/usr/share/nginx/html#
root@f7d857e6585e:/usr/share/nginx# cd /
root@f7d857e6585e:/# nginx -v --》 查看nginx的版本
nginx version: nginx/1.23.3
root@f7d857e6585e:/# ^C
root@f7d857e6585e:/#
=====
测试mysql的访问
在windows上:
1、装一个SQLyog的软件
Mysql的客户机端的连接工具非常多:1、SQLyog 2、navicat 3、Mysql workbench
2、对192.168.2.200 建立连接 密码为 sc123456 账号为:root
3、在其中建立一个新的库 叫:sanchuang
查看mysql所有库名
[root@mysql /]# !my
mysql -uroot -psc123456 -h 192.168.70.2
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MySQL connection id is 11
Server version: 5.7.35 MySQL Community Server (GPL)
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MySQL [(none)]> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sanchunag |
| sys |
+--------------------+
5 rows in set (0.00 sec)
MySQL [(none)]>
=====
实验完毕!!!!
DNAT如何发布内网不同的服务器呢?
使用不同的端口号来对应内网不同的IP地址服务器
iptables -t nat -A PREROUTING -i eth0 -d 192.168.0.127 -p tcp --dport 80 -j DNAT --to-destination 192.168.88.27
iptables -t nat -A PREROUTING -i eth0 -d 192.168.0.127 -p tcp --dport 8080 -j DNAT --to-destination 192.168.88.88
DNAT修改IP包的目的IP地址,还可以修改tcp或者udp里的目的端口号==》最后没加端口号的话,默认和进来的端口一样
# 发布跳板机192.168.88.37
# 这样就只要添加一条DNAT策略,用户访问到跳板机,然后通过跳板机ssh到内网的其他服务器
iptables -t nat -A PREROUTING -i eth0 -d 192.168.0.127 -p tcp --dport 2233 -j DNAT --to-destination 192.168.88.37:22
#访问192.168.0.127的2233端口,就相当于转到192.168.88.37的22端口
# 为什么转到22端口:因为192.168.88.37中ssh服务监听的22端口
五、SNAT和DNAT在企业中的作用是什么?
SNAT和DNAT在企业中的作用是实现网络地址转换(NAT),使得内部网络的IP地址能够与外部网络的IP地址进行通信。
SNAT(源地址转换)是将内部网络的IP地址转换为外部网络的IP地址,使得内部网络的主机能够通过外部网络访问互联网。企业中通常会使用SNAT来实现多个内部主机共享一个公网IP地址的功能,从而减少使用公网IP地址的数量。
DNAT(目标地址转换)是将外部网络的IP地址转换为内部网络的IP地址,使得外部网络的主机能够访问内部网络的主机。企业中通常会使用DNAT来实现服务器的访问控制和负载均衡,从而提高网络的安全性和可用性。
总之,SNAT和DNAT在企业中的作用是实现内部网络和外部网络之间的通信,提高网络的可用性和安全性。
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)