栏目分类:
子分类:
返回
文库吧用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
文库吧 > IT > 软件开发 > 后端开发 > Java

NAT、SNAT、DNAT以及基于iptables的DNAT和SNAT将web服务器发布的搭建

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

NAT、SNAT、DNAT以及基于iptables的DNAT和SNAT将web服务器发布的搭建

NAT、SNAT、DNAT以及基于iptables的DNAT和SNAT将web服务器发布的搭建
  • NAT
    • NAT概述
        • 地址转换出现的背景
        • NAT的工作原理
        • NAT实现方式
    • NAT的术语与转换表
      • NAT包含4类地址
    • NAT实现方法的工作过程
      • 静态转换和动态转换
      • PAT
    • NAT的特性
      • NAT的优点
      • NAT的缺点
  • SNAT
    • SNAT策略概述
      • SNAT策略的典型应用环境
      • SNAT策略的原理
      • SNAT策略的应用环境
        • 未使用SNAT策略时的情况
        • 在网关中使用SNAT策略以后
    • SNAT策略的应用
        • 开启网关主机的路由转发功能
        • 添加使用SNAT策略的防火墙规则
          • 如何开启路由转发功能:
          • #开启snat功能
  • DNAT
    • DNAT策略概述
      • DNAT策略的典型应用环境
      • DNAT策略的原理
    • DNAT策略的原理
    • DNAT策略的应用
        • 确认已开启网关的路由转发功能
        • 添加使用DNAT策略的防火墙规则
      • DNAT和SNAT 的区别?

NAT NAT概述 地址转换出现的背景

由于互联网的发展,导致ipv4地址不足,每一个设备分配一个IP地址,根本不够

NAT的工作原理

Network Address Translation,网络地址转换

私有IP《-----》公有IP

所有的局域网都可以使用相同的公有地址

NAT实现方式
  • 静态转换(Static Translation)
  • 动态转换(Dynamic Translation)
  • 端口多路复用(Port Address Translation,PAT)
NAT的术语与转换表 NAT包含4类地址

NAT的转换条目

  • 简单转换条目
  • 扩展转换条目
NAT实现方法的工作过程 静态转换和动态转换
PAT
NAT的特性 NAT的优点

节省公有合法IP地址
处理地址重叠
增强灵活性
安全性(出去的时候修改了源IP地址,导致外网的用户不知道你的内网的IP是多少)

NAT的缺点

延迟增大
配置和维护的复杂性
不支持某些应用,可以通过静态NAT映射来避免

SNAT SNAT策略概述 SNAT策略的典型应用环境

局域网主机共享单个公网IP地址接入Internet

SNAT策略的原理

源地址转换,Source Network Address Translation
修改数据包的源IP地址

SNAT策略的应用环境
未使用SNAT策略时的情况
在网关中使用SNAT策略以后
SNAT策略的应用

前提条件
局域网各主机正确设置IP地址/子网掩码
局域网各主机正确设置默认网关地址/dns服务器地址

推荐实现步骤

  1. 开启网关主机的路由转发功能
  2. 添加使用SNAT策略的防火墙规则

    规则示例:
    iptables -t nat -A POSTROUTING -s 192.168.1.0/24
    -o ens33 -j SNAT --to-source 218.29.30.31

-t nat 在nat表的里 table
-A POSTROUTING 在nat表的POSTROUTING 链位置追加规则 append

-s 192.168.20.0/24 源ip地址来自192.168.20.0/24网段
-o ens33 数据从ens33接口出去 output-interface
-j SNAT 告诉内核采取SNAT策略,修改ip包的源ip地址
–to-source 192.168.2.130 告诉内核修改ip包的源ip地址为192.168.2.130

如何开启路由转发功能:

​ 1.临时开启

echo  1 >/proc/sys/net/ipv4/ip_forward
		[root@sc-mysql ~]# cat  /proc/sys/net/ipv4/ip_forward
		0
		[root@sc-mysql ~]# 

​ 0表示内核里的路由转发功能是关闭的
​ 1 开启的

[root@sc-mysql ~]# echo 1 >/proc/sys/net/ipv4/ip_forward

[root@sc-mysql ~]# cat /proc/sys/net/ipv4/ip_forward
1
[root@sc-mysql ~]#
2.永久开启

[root@sc-mysql ~]# vim  /etc/sysctl.conf  
net.ipv4.ip_forward=1 -->添加配置,开启路由转发功能
[root@sc-mysql ~]# 
[root@sc-mysql ~]# sysctl -p  让内核重新加载新的配置,开启路由转发功能
net.ipv4.ip_forward = 1
[root@sc-mysql ~]# 


net.ipv4.ip_forward = 1
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_nonlocal_bind = 1
vm.swappiness=0
net.core.somaxconn=1024
net.ipv4.tcp_max_tw_buckets=5000
net.ipv4.tcp_max_syn_backlog=1024
#开启snat功能

iptables -t nat -A POSTROUTING -s 192.168.20.0/24 -o ens33 -j SNAT --to-source 192.168.2.130

iptables是linux内部的一个防火墙工具
-t nat 在nat表的里 table
-A POSTROUTING 在nat表的POSTROUTING 链位置追加规则 append

-s 192.168.20.0/24 源ip地址来自192.168.20.0/24网段
-o ens33 数据从ens33接口出去 output-interface
-j SNAT 告诉内核采取SNAT策略,修改ip包的源ip地址
–to-source 192.168.2.130 告诉内核修改ip包的源ip地址为192.168.2.130

iptables -L 查看filter表里的规则
iptables -t nat -L 查看nat表里的规则

[root@sc-router 89]# cat snat.sh 
#!/bin/bash


#开启路由功能
echo 1 >/proc/sys/net/ipv4/ip_forward
#关闭防火墙
service firewalld stop
#清空防火墙里的filter表的规则
iptables -t filter -F
#清空防火墙里的nat表的规则
iptables -t nat -F

#开启snat功能
iptables -t nat  -A POSTROUTING  -s  192.168.20.0/24 -o ens33 -j SNAT --to-source 192.168.2.130
[root@sc-router 89]# bash  snat.sh 执行脚本

[root@sc-router 89]# iptables -L -t nat -n 查看nat表里的规则
Chain PREROUTING (policy ACCEPT)
target     prot opt source               destination         

Chain 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.20.0/24      0.0.0.0/0            to:192.168.2.130

[root@sc-router 89]# 

[root@sc-router 89]# ps aux|grep dhcp
root      2342  0.0  0.0 112824   988 pts/0    S+   16:35   0:00 grep --color=auto dhcp
[root@sc-router 89]# systemctl status dhcpd 查看dhcpd服务的状态
● dhcpd.service - DHCPv4 Server Daemon
   Loaded: loaded (/usr/lib/systemd/system/dhcpd.service; disabled; vendor preset: disabled)
   Active: inactive (dead)
     Docs: man:dhcpd(8)
           man:dhcpd.conf(5)
[root@sc-router 89]# service dhcpd start  启动dhcpd服务
Redirecting to /bin/systemctl start dhcpd.service
[root@sc-router 89]# systemctl enable dhcpd  设置dhcpd服务开机启动
Created symlink from /etc/systemd/system/multi-user.target.wants/dhcpd.service to /usr/lib/systemd/system/dhcpd.service.
[root@sc-router 89]# 
DNAT DNAT策略概述 DNAT策略的典型应用环境

在Internet中发布位于企业局域网内的服务器—在互联网上的机器想访问局域网内的服务器

DNAT策略的原理

目标地址转换,Destination Network Address Translation
修改数据包的目标IP地址

中间防火墙服务器(网关服务器)上不需要web、nginx等服务,它只是做了转发,相当于一个中介

DNAT策略的原理

在网关中使用DNAT策略发布内网服务器

通过不同的端口访问不同的服务器

DNAT策略的应用

前提条件
局域网的Web服务器正确设置了IP地址/子网掩码
局域网的Web服务器正确设置了默认网关地址

推荐实现步骤

  1. 确认已开启网关的路由转发功能
  2. 添加使用DNAT策略的防火墙规则

    规则示例:
    iptables -t nat -A PREROUTING -i eth0 -d 218.29.30.31 -p tcp --dport 80 -j DNAT --to-destination 192.168.1.6

    [root@sc-router 89]# cat snat_dnat.sh 
    #!/bin/bash
    
    
    #开启路由功能
    echo 1 >/proc/sys/net/ipv4/ip_forward
    #关闭防火墙
    service firewalld stop
    #清空防火墙里的filter表的规则
    iptables -t filter -F
    #清空防火墙里的nat表的规则
    iptables -t nat -F
    
    #开启snat功能
    iptables -t nat  -A POSTROUTING  -s  192.168.20.0/24 -o ens33 -j SNAT --to-source 192.168.2.130
    
    #开启dnat功能,发布web服务器
    iptables -t nat -A PREROUTING  -i ens33   -d 192.168.2.130  -p tcp  --dport 80 -j DNAT --to-destination 192.168.20.100:80
    
    #开启dnat功能,发布ssh服务器(使用xshell进行验证)
    iptables -t nat -A PREROUTING  -i ens33   -d 192.168.2.130  -p tcp  --dport 2233 -j DNAT --to-destination 192.168.20.103:22
    #开启dnat功能,发布mysql服务器
    iptables -t nat -A PREROUTING  -i ens33   -d 192.168.2.130  -p tcp  --dport 3306 -j DNAT --to-destination 192.168.20.103:3306
    
    
    
    
    [root@sc-router 89]# 
    [root@sc-router 89]# iptables -L -t nat -n
    Chain PREROUTING (policy ACCEPT)
    target     prot opt source               destination         
    DNAT       tcp  --  0.0.0.0/0            192.168.2.130        tcp dpt:80 to:192.168.20.100:80
    DNAT       tcp  --  0.0.0.0/0            192.168.2.130        tcp dpt:2233 to:192.168.20.103:22
    DNAT       tcp  --  0.0.0.0/0            192.168.2.130        tcp dpt:3306 to:192.168.20.103:3306
    
    Chain 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.20.0/24      0.0.0.0/0            to:192.168.2.130
    [root@sc-router 89]# 
    
DNAT和SNAT 的区别?

dnat和snat可以共存

解决的问题不一样

IP包的修改也不一样

转载请注明:文章转载自 www.wk8.com.cn
本文地址:https://www.wk8.com.cn/it/1040129.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 wk8.com.cn

ICP备案号:晋ICP备2021003244-6号