福州医保网站调入申报怎么做,揭阳建设局网站,邹平做网站,个体户 网站建设目录 DNAT
DNAT策略的典型应用环境
DNAT策略的原理
在网关中使用DNAT策略发布内网服务器
DNAT实验#xff1a;
实验环境#xff1a;
DNAT网络规划拓扑图#xff1a;
步骤#xff1a;
1、创建linux客户端Web网站#xff08;go语言#xff09;#xff0c;实现Web服…目录 DNAT
DNAT策略的典型应用环境
DNAT策略的原理
在网关中使用DNAT策略发布内网服务器
DNAT实验
实验环境
DNAT网络规划拓扑图
步骤
1、创建linux客户端Web网站go语言实现Web服务器
1.1、下载go语言Web端代码
1.2、下载代码后传输到你的linux客户机上去
1.3、解压apiserver.tar.gz文件并执行Web程序
1.4、测试Web服务器的效果通过网关服务器来进行
编辑2、配置DNAT策略
2.1、准备工作
2.2、修改firewall网关服务器的姓名
2.3、写DNS脚本
2.4、执行脚本
3、测试效果
4、使用dokcer上的nginx服务替代go语言程序
4.1、docker安装下载制作docker镜像(120条消息) docker容器的介绍和安装 - 镜像安装_docket容器_Claylpf的博客-CSDN博客
4.1、访问nginx镜像
如何当我们访问firewall网关服务器的其他端口假设是80端口也能映射访问到我们的linux客户机的8000端口 DNAT DNATDestination Network Address Translation是一种NAT的实现方式也被称为目的地址转换Destination NAT。它在传输层对IP数据包进行修改将目的IP地址改为内部网络中的设备IP地址从而实现外部网络可以通过公共IP地址访问内部网络中的设备。DNAT通常用于实现服务器对外提供服务的功能例如将公共IP地址映射到内部网络中的Web服务器上从而外部用户可以通过公共IP地址访问Web服务器。 DNAT策略的典型应用环境
在Internet中发布位于企业局域网内的服务器
DNAT策略的原理
目标地址转换Destination Network Address Translation
修改数据包的目标IP地址 在网关中使用DNAT策略发布内网服务器 DNAT实验
实验环境 准备2台集群一台做局域网里的客户机Web服务器1个网卡一台做firewall网关服务器路由器 所有的虚拟机的网卡模式选择桥接模式客户机可以选择仅主机模式
DNAT网络规划拓扑图 步骤
1、创建linux客户端Web网站go语言实现Web服务器
1.1、下载go语言Web端代码
go语言网站代码提取
链接https://pan.baidu.com/s/1QSulTw3P_lrp7RCHbHjhow?pwdbyp5 提取码byp5
1.2、下载代码后传输到你的linux客户机上去
方式一假设你的linux服务器没有联网但是你的firewall网关服务器联网了
先传输到网关服务器上去再在网关服务器上使用scp命令传输给linux客户机
[rootnginx-lb1 ~]# scp apiserver.tar.gz 192.168.80.1:/root
The authenticity of host 192.168.80.1 (192.168.80.1) cant be established.
ECDSA key fingerprint is SHA256:qFVcuGn/dPQWyNfiYIe376RJ2CZIyFnKFobW/2VQljo.
ECDSA key fingerprint is MD5:59:df:c1:dd:8d:c0:0a:a8:50:e5:15:b0:9f:2a:16:ff.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 192.168.80.1 (ECDSA) to the list of known hosts.
root192.168.80.1s password:
apiserver.tar.gz 100% 5121KB 73.9MB/s 00:00
[rootnginx-lb1 ~]#
方式二联网的情况下
使用xftp上传apiserver.tar.gz到linux服务器里 或者 使用lrzsz传输
yum install lrzsz -y rz 接收从windows机器里上传文件到linux机器 receivesz 接收从linux系统里发送文件到windows sent/send [rootgoweb ~]# rz
然后选择需要上传的文件的路径
1.3、解压apiserver.tar.gz文件并执行Web程序
[rootgoweb ~]# mkdir /myweb
[rootgoweb ~]# mv apiserver.tar.gz /myweb/
[rootgoweb ~]# cd /myweb/
[rootgoweb myweb]# ls
apiserver.tar.gz
[rootgoweb myweb]#
[rootgoweb myweb]# tar xf apiserver.tar.gz 解压
[rootgoweb myweb]# ls
apiserver apiserver.tar.gz
[rootgoweb myweb]# cd apiserver 进入解压后的文件夹
[rootgoweb apiserver]# ls
go.mod go.sum handler main.go router scweb
[rootgoweb apiserver]# #scweb 是使用go语言编写的简单的web服务器软件[rootgoweb apiserver]# ./scweb 执行scweb二进制程序
vim-go
[GIN-debug] [WARNING] Creating an Engine instance with the Logger and Recovery middleware already attached.[GIN-debug] [WARNING] Running in debug mode. Switch to release mode in production.- using env: export GIN_MODErelease- using code: gin.SetMode(gin.ReleaseMode)[GIN-debug] GET / -- apiserver/router.home (3 handlers)
[GIN-debug] GET /sd/health -- apiserver/handler/sd.HealthCheck (3 handlers)
[GIN-debug] GET /sd/disk -- apiserver/handler/sd.DiskCheck (3 handlers)
[GIN-debug] [WARNING] You trusted all proxies, this is NOT safe. We recommend you to set a value.
Please check https://pkg.go.dev/github.com/gin-gonic/gin#readme-don-t-trust-all-proxies for details.
[GIN-debug] Listening and serving HTTP on 0.0.0.0:8000scweb服务器会监听8000端口
1.4、测试Web服务器的效果通过网关服务器来进行
[rootnginx-lb1 ~]# curl 192.168.80.1:8000
hello,三创人 nice 2022[rootnginx-lb1 ~]# #curl 是linux系统里的字符界面的浏览器
#也可以使用其他图形界面的浏览器去访问 2、配置DNAT策略
2.1、准备工作 1、局域网的Web服务器正确设置了IP地址/子网掩码/DNS服务器 2、局域网的Web服务器正确设置了默认网关地址 3、创建Web框架并确保Web服务已经在Web服务器上运行了 在linux网关服务器防火墙上操作
2.2、修改firewall网关服务器的姓名
[rootprom-server ~]# hostnamectl set-hostname router
[rootprom-server ~]# su - root
su - root
上一次登录一 7月 17 11:53:14 CST 2023从 192.168.2.134pts/0 上
[rootrouter ~]#
2.3、写DNS脚本
[rootnginx-lb1 nat]# cat snat_dnat.sh
#!/bin/bash#开启路由功能
echo 1 /proc/sys/net/ipv4/ip_forward#清除防火墙规则
iptables -F
iptables -F -t nat#添加SNAT策略的防火墙规则
iptables -t nat -A POSTROUTING -s 192.168.80.0/24 -o ens33 -j SNAT --to-source 192.168.2.77#添加DNAT策略的防火墙规则
iptables -t nat -A PREROUTING -d 192.168.2.77 -i ens33 -p tcp --dport 8000 -j DNAT --to-destination 192.168.80.1
[rootnginx-lb1 nat]#
2.4、执行脚本
[rootrouter nat]# bash snat_dnat.sh
Redirecting to /bin/systemctl stop firewalld.service
[rootrouter nat]#
查看iptables是否生效
[rootnginx-lb1 nat]# iptables -L -t nat -n
Chain PREROUTING (policy ACCEPT)
target prot opt source destination
DNAT tcp -- 0.0.0.0/0 192.168.2.77 tcp dpt:8000 to:192.168.80.1Chain 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
SNAT all -- 192.168.80.0/24 0.0.0.0/0 to:192.168.2.77
[rootnginx-lb1 nat]# 3、测试效果
使用浏览器访问linux网关服务器wan口的地址和8000端口 http://192.168.2.77:8000 4、使用dokcer上的nginx服务替代go语言程序
4.1、docker安装下载制作docker镜像(120条消息) docker容器的介绍和安装 - 镜像安装_docket容器_Claylpf的博客-CSDN博客
[rootclaylpf apiserver]# docker pull nginx
Using default tag: latest
latest: Pulling from library/nginx
faef57eae888: Pull complete
76579e9ed380: Pull complete
cf707e233955: Pull complete
91bb7937700d: Pull complete
4b962717ba55: Pull complete
f46d7b05649a: Pull complete
103501419a0a: Pull complete
Digest: sha256:08bc36ad52474e528cc1ea3426b5e3f4bad8a130318e3140d6cfe29c8892c7ef
Status: Downloaded newer image for nginx:latest
docker.io/library/nginx:latest
[rootclaylpf apiserver]# dokcer images
bash: dokcer: command not found...
Similar command is: docker
[rootclaylpf apiserver]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx latest 021283c8eb95 12 days ago 187MB
[rootclaylpf apiserver]# docker run -d -p 8000:80 --name cly-nginx nginx
a3e47da286fd588c51297374480ee842942781e4752e488e2626e69143db4d92
[rootclaylpf apiserver]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
a3e47da286fd nginx /docker-entrypoint.… 6 seconds ago Up 5 seconds 0.0.0.0:8000-80/tcp, :::8000-80/tcp cly-nginx
[rootclaylpf apiserver]# 4.1、访问nginx镜像 如何当我们访问firewall网关服务器的其他端口假设是80端口也能映射访问到我们的linux客户机的8000端口
如下拓扑图就很生动的展示了我们的IP包通过firewall网关服务器的时候IP包内的目的地址发生了改变还有TCP段的端口也发生了改变。 #通过访问192.168.1.254:8000端口 访问到 192.168.2.80的8000端口
iptables -t nat -A PREROUTING -d 192.168.1.254 -i ens33 -p tcp --dport 8000 -j DNAT --to-destination 192.168.2.80#通过访问192.168.1.254的80端口 访问到 192.168.2.80的8000端口
iptables -t nat -A PREROUTING -d 192.168.1.254 -i ens33 -p tcp --dport 80 -j DNAT --to-destination 192.168.2.80:8000
可以浅显的理解为当我们使用Windows上的浏览器想要访问我们的A客户机的Web服务的时候我们需要访问浏览器的http://192.168.2.1:80可知我们访问的正是firewall网关服务器WAN口的IP地址和端口80而我们的firewall网关服务器会帮助我们修改IP包中的 目标 IP 地址Destination IP Address防火墙网关服务器会将数据包的目标 IP 地址原来是firewall网关服务器的WAN口的IP地址也就是192.168.2.1修改为内网服务器linux客户机的 IP 地址192.168.1.1以实现数据包的转发到内网局域网。 目标端口号Destination Port如果进行端口映射防火墙网关服务器可以将数据包的目标端口号原来是firewall的网关服务器的80端口修改为内网服务器linux客户机上相应服务的监听端口我们开启的监听端口为8000端口以确保数据包能够正确地被内网服务器接收。