linux运维9(DNS原理,CDN原理)iptables和NAT策略

一、简述DNS服务器原理,并搭建主-辅服务器。

DNS服务器原理流程图:
在这里插入图片描述

主辅DNS服务器搭建
主辅DNS特性:

  1. 主服务器的解析文件中必须要有一条NS记录指向辅DNS服务器
  2. 辅服务器只要配置定义区域,不用提供解析文件
  3. 主服务器需要允许辅服务器抓取主服务器的解析文件
  4. 主辅服务器之间必须保持时间一致
  5. bind程序的版本应该保持一致

环境:

系统/功能ip
centos 7.8/主192.168.116.145
centos 7.8/备192.168.116.146
网站服务器192.168.116.147
客户端192.168.116.130
网站域名www.test.ioo

一、主服务器配置:

yum install -y bind bind-utils        安装DNS服务

开启DNS允许被访问
vi /etc/named.conf

listen-on port 53 { 192.168.116.145; };   #监听本地地址
allow-query     { any; };                 #允许任何人访问
allow-transfer  { 192.168.116.146; };     #除了辅DNS服务器,禁止其他人抓取全部DNS解析信息

添加正向解析文件名和域名绑定(访问域名得到网站)
vi /etc/named.rfc1912.zones

zone "test.ioo" {
        type master;
        file "test.ioo.zone";
};

添加正向解析文件的指针
cd /var/named/
cp -a named.localhost test.ioo.zone   复制模板文件,如果不复制,需要把文件的使用者和组名改为一致即可
vi test.ioo.zone

$TTL 1D
@       IN SOA master admin.test.ioo. (
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
        NS      master                   #设置主DNS服务器记录
        NS      slave                    #设置辅DNS服务器记录
master  A       192.168.116.145          #设置主DNS的IP
slave   A       192.168.116.146          #设置辅DNS的IP
www     A       192.168.116.147          #设置实际的指针,也就是.test.ioo前面的字母

添加反向解析文件名和域名绑定(直接访问IP可以得到网站)
vi /etc/named.rfc1912.zones
IP必须倒着写,145是指针,所以不用写,写192.168.116即可

zone "116.168.192.in-addr.arpa"{
        type master;
        file "192.168.116.145.zone";
};

添加反向解析文件的指针
cd /var/named/
cp -p named.localhost 192.168.116.145.zone   模板一致,都可以复制
vi 192.168.116.145.zone 

$TTL 1D
@       IN SOA  master admin.test.ioo. (
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
        NS      master.test.ioo.
147     PTR     www.test.ioo.

ls -l 文件权限必须是root为属主,named为属组
在这里插入图片描述

启动服务

named-checkconf                     检查文件语法
systemctl start named               启动服务
ss -tunl                            确认udp和tcp的53端口都已经监听

在这里插入图片描述

二、辅服务器配置:

yum install -y bind bind-utils      安装服务

设置DNS配置
vi /etc/named.conf

listen-on port 53 { 192.168.116.146; };      #监听本地地址
allow-query     { any; };                    #允许任何人访问
allow-transfer  { none; };                   #禁止其他人抓取所有DNS信息

配置正向和反向解析文件名和主DNS绑定
vi /etc/named.rfc1912.zones

zone "test.ioo" {
        type slave;
        masters {192.168.116.145;};             #配置主DNS地址
        file "slaves/test.ioo.slave";           #配置备DNS存放的正向文件名字
};

zone "116.168.192.in-addr.arpa"{
        type slave;
        masters {192.168.116.145;};             #配置主DNS地址
        file "slaves/192.168.116.145.slave";    #配置备DNS存放的反向文件名字
};

启动服务

named-checkconf                     检查文件语法
systemctl start named               启动服务
ss -tunl                            确认udp和tcp的53端口都已经监听

在这里插入图片描述
确认主DNS的解析文件同步到本地目录下

ll /var/named/slaves/

在这里插入图片描述
三、网站服务器搭建

yum install -y httpd                                   安装服务
echo "web 192.168.116.147" >/var/www/html/index.html   创建网页
systemctl start httpd                                  启动服务
ss -tnl                                                确认端口打开

在这里插入图片描述
四、客户端配置

yum install -y bind-utils       安装DNS解析工具

设置DNS地址为主DNS的地址
vi /etc/sysconfig/network-scripts/ifcfg-ens33

TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33
UUID=1343ea28-e2cd-4f53-b545-5c6bbd7bcf07
DEVICE=ens33
ONBOOT=yes
IPADDR=192.168.116.130
NETMASK=255.255.255.0
GATEWAY=192.168.116.2
DNS1=192.168.116.145

systemctl restart network       重启服务

测试网站访问

curl http://www.test.ioo                    正向解析域名能访问到网站
curl http://192.168.116.147                 反向解析IP能访问到网站

在这里插入图片描述
工具解析

dig www.test.ioo           解析域名,不要加http

; <<>> DiG 9.11.4-P2-RedHat-9.11.4-26.P2.el7_9.7 <<>> www.test.ioo
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 7910
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 3

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;www.test.ioo.			IN	A

;; ANSWER SECTION:
www.test.ioo.		86400	IN	A	192.168.116.147    实际解析的域名和IP

;; AUTHORITY SECTION:
test.ioo.		86400	IN	NS	slave.test.ioo.        主DNS服务器的名字
test.ioo.		86400	IN	NS	master.test.ioo.       辅助DNS服务器的名字

;; ADDITIONAL SECTION:
master.test.ioo.	86400	IN	A	192.168.116.145    主DNS服务器对应的IP地址
slave.test.ioo.		86400	IN	A	192.168.116.146    辅DNS服务器对应的IP地址

;; Query time: 0 msec                                  查询延迟
;; SERVER: 192.168.116.145#53(192.168.116.145)         实际返回的DNS服务器
;; WHEN: 日 9月 05 15:01:37 CST 2021
;; MSG SIZE  rcvd: 130

在这里插入图片描述
将主DNS服务器关闭服务,测试辅DNS服务器是否能正常解析

systemctl stop named

在这里插入图片描述
把客户端的DNS改为辅的DNS服务测试

vi /etc/sysconfig/network-scripts/ifcfg-ens33

TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33
UUID=1343ea28-e2cd-4f53-b545-5c6bbd7bcf07
DEVICE=ens33
ONBOOT=yes
IPADDR=192.168.116.130
NETMASK=255.255.255.0
GATEWAY=192.168.116.2
DNS1=192.168.116.146

systemctl restart network  重启网卡

再次解析

dig www.test.ioo               可以看到辅DNS服务器解析成功

在这里插入图片描述

二、搭建并实现智能DNS(CDN原理)

正常网站访问都是从本地访问到网站的服务器上
如:广东客户端访问北京公司的网站服务器

需求:要想让网站页面加载更快

最优选择:直接在广东这里放网站服务器

  • 优点:网站加载速度最快
  • 缺点:运营成本提高

次优选择:CDN加速

  • 因为地域和运营成本的限制,所以有了CDN提供商。
  • CDN提供商就是在全国甚至全球不同地方都存放CDN服务器

实现方式:

  • 北京的网站服务器的公司只要购买了CDN提供商提供的加速服务,那么CDN提供商的服务器就会在客户端最近的CDN服务器上下载最新的北京网站服务器的内容。
  • 客户端访问因为智能选择最优DNS,就会自动访问到最近的CDN服务器提供的网站内容,从而提高用户体验。

测试:

没使用CDN加速的网站

dig www.tsinghua.edu.cn

在这里插入图片描述
可以看到IP的归属地是北京市
166.111.4.100
在这里插入图片描述
路由图查看

tracert www.tsinghua.edu.cn
可以看到走了14个路由点才到真实的IP地址那里

在这里插入图片描述

访问使用CDN加速后的网站

dig www.mi.com

; <<>> DiG 9.11.4-P2-RedHat-9.11.4-26.P2.el7_9.7 <<>> www.mi.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 44277
;; flags: qr rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 5, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; MBZ: 0x0005, udp: 4096
;; QUESTION SECTION:
;www.mi.com.			IN	A

;; ANSWER SECTION:

#别名转发,访问地址从www.mi.com.变成www.mi.com.mgslb.com.
www.mi.com.		5	IN	CNAME	www.mi.com.mgslb.com.  
#别名转发,访问地址从www.mi.com.mgslb.com.变成www.mi.com.wscdns.com.
www.mi.com.mgslb.com.	5	IN	CNAME	www.mi.com.wscdns.com.
#实际返回IP的DNS服务器地址,客户端实际访问IP113.96.132.64
www.mi.com.wscdns.com.	5	IN	A	113.96.132.64

;; AUTHORITY SECTION:
wscdns.com.		5	IN	NS	dns1.wscdns.org.
wscdns.com.		5	IN	NS	dns4.wscdns.info.
wscdns.com.		5	IN	NS	dns5.cdn30.org.
wscdns.com.		5	IN	NS	dns3.wscdns.org.
wscdns.com.		5	IN	NS	dns2.wscdns.info.

;; Query time: 5 msec
;; SERVER: 192.168.116.2#53(192.168.116.2)
;; WHEN: 日 9月 05 15:38:55 CST 2021
;; MSG SIZE  rcvd: 240

在这里插入图片描述
可以看到IP的归属地是江门市
113.96.132.64
在这里插入图片描述

tracert www.mi.com        可以看到走了9个路由就到了

在这里插入图片描述
原理:
没有使用CDN加速的连接方式
在这里插入图片描述
使用CDN加速后的连接方式
在这里插入图片描述

智能DNS(CDN加速)的特性:

  1. 减少中间路由节点,降低带宽
  2. 解决用户访问量过大造成的服务器超载问题
  3. 将网站内容放在离客户端较近的区域,加速网站内容的加载,用户体验更好
  4. 解决网站服务器分布不均的问题,降低运营成本
  5. 隐藏真实网站服务器的IP,加强安全性

环境搭建

系统/功能IP
centos 7.8/DNS服务器北京IP:192.168.116.145;上海IP:10.0.0.145
centos 7.8/北京网站服务器北京IP:192.168.116.146
centos 7.8/上海网站服务器上海IP:10.0.0.146
centos 7.8/北京客户端北京IP:192.168.116.130
centos 7.8/上海客户端北京IP:10.0.0.130
centos 7.8/网站域名www.test.ioo

DNS服务器配置:

yum install -y bind bind-utils       安装服务
ip a add 10.0.0.145/24 dev ens33:0   临时添加多一个IP
vi /etc/named.conf

#设置策略
acl beijingnet {
        192.168.116.0/24;
};
acl shanghainet {
        10.0.0.0/24;
};
#设置监听等信息
options {
        listen-on port 53 { 192.168.116.145;10.0.0.145; };
        listen-on-v6 port 53 { ::1; };
        directory       "/var/named";
        dump-file       "/var/named/data/cache_dump.db";
        statistics-file "/var/named/data/named_stats.txt";
        memstatistics-file "/var/named/data/named_mem_stats.txt";
        recursing-file  "/var/named/data/named.recursing";
        secroots-file   "/var/named/data/named.secroots";
        allow-query     { any; };
        allow-transfer  {none;};

        /*
         - If you are building an AUTHORITATIVE DNS server, do NOT enable recursion.
         - If you are building a RECURSIVE (caching) DNS server, you need to enable
           recursion.
         - If your recursive DNS server has a public IP address, you MUST enable access
           control to limit queries to your legitimate users. Failing to do so will
           cause your server to become part of large scale DNS amplification
           attacks. Implementing BCP38 within your network would greatly
           reduce such attack surface
        */
        recursion yes;

        dnssec-enable yes;
        dnssec-validation yes;

        /* Path to ISC DLV key */
        bindkeys-file "/etc/named.root.key";

        managed-keys-directory "/var/named/dynamic";

        pid-file "/run/named/named.pid";
        session-keyfile "/run/named/session.key";
};
#日志和其他配置
logging {
        channel default_debug {
                file "data/named.run";
                severity dynamic;
        };
};
#解析文件目录配置
view beijingview {
        match-clients { beijingnet;};
        include "/etc/named.rfc1912.zones.bj";
};

view shanghaiview {
        match-clients { shanghainet;};
        include "/etc/named.rfc1912.zones.sh";
};

配置正向区域文件
cp -a /etc/named.rfc1912.zones /etc/named.rfc1912.zones.bj
cp -a /etc/named.rfc1912.zones /etc/named.rfc1912.zones.sh

vi /etc/named.rfc1912.zones.bj           配置北京的区域解析文件

zone "." IN {
        type hint;
        file "named.ca";
};

zone "test.ioo" {
        type master;
        file "test.ioo.zone.bj";
};

vi /etc/named.rfc1912.zones.sh              配置上海的区域解析文件

zone "." IN {
        type hint;
        file "named.ca";
};

zone "test.ioo" {
        type master;
        file "test.ioo.zone.sh";
};

配置正向解析文件
cd /var/named/
cp -a named.localhost test.ioo.zone.bj
cp -a named.localhost test.ioo.zone.sh
vi test.ioo.zone.bj                         配置北京的正向区域解析文件

$TTL 1D
@       IN SOA  bjmaster admin.test.ioo. (
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
          NS     bjmaster
bjmaster  NS     192.168.116.145
www       A      192.168.116.146

vi test.ioo.zone.sh                          配置上海的正向解析文件

$TTL 1D
@       IN SOA  shmaster admin.test.ioo. (
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
          NS     shmaster
shmaster  NS     10.0.0.145
www       A      10.0.0.146



配置反向区域文件
vi /etc/named.rfc1912.zones.bj 

zone "116.168.192.in-addr.arpa"{
        type master;
        file "192.168.116.145.zone.bj";
};

vi /etc/named.rfc1912.zones.sh

zone "0.0.10.in-addr.arpa"{
        type master;
        file "10.0.0.145.zone.sh";
};

配置反向解析文件
cd /var/named/
cp -a named.localhost 192.168.116.145.zone.bj
cp -a named.localhost 10.0.0.145.zone.sh

vi 192.168.116.145.zone.bj                    配置北京的反向区域解析文件

$TTL 1D
@       IN SOA  bjmaster admin.test.ioo. (
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
        NS      bjmaster.test.ioo.
146     PTR     www.test.ioo.



vi 10.0.0.145.zone.sh                          配置上海的反向区域解析文件

$TTL 1D
@       IN SOA  shmaster admin.test.ioo. (
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
        NS      shmaster.test.ioo.
145     PTR     www.test.ioo.


named-checkconf                    检查语法
systemctl start named              启动服务
ss -tunl                           查看端口

在这里插入图片描述
北京网站服务器配置

yum install -y httpd

网页内容正常访问都是一样的,不会改变,测试用才这样做
echo "beijing-192.168.116.146">/var/www/html/index.html   
systemctl start httpd

上海网站服务器配置

yum install -y httpd

网页内容正常访问都是一样的,不会改变,测试用才这样做
echo "shanghai-10.0.0.146">/var/www/html/index.html  
systemctl start httpd
ip a add 10.0.0.146/24 dev ens33:0    只有192网段的话,可以添加ip作为网站
ping 10.0.0.145                       和DNS服务器能通

在这里插入图片描述

北京客户端配置

yum install -y bind-utils                         安装工具
配置DNS地址
vi /etc/sysconfig/network-scripts/ifcfg-ens33

TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33
UUID=1343ea28-e2cd-4f53-b545-5c6bbd7bcf07
DEVICE=ens33
ONBOOT=yes
IPADDR=192.168.116.130
NETMASK=255.255.255.0
GATEWAY=192.168.116.2
DNS1=192.168.116.145

systemctl restart network           重启网卡                 

访问测试

curl http://www.test.ioo
curl 192.168.116.146
dig www.test.ioo                      看到解析的IP为192.168.116.146

在这里插入图片描述

上海客户端测试

yum install -y bind-utils          安装工具
配置IP
vi /etc/sysconfig/network-scripts/ifcfg-ens33

TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33
UUID=1343ea28-e2cd-4f53-b545-5c6bbd7bcf07
DEVICE=ens33
ONBOOT=yes
IPADDR=10.0.0.130
NETMASK=255.255.255.0
DNS1=10.0.0.145

systemctl restart network           重启网卡
重启后,可以通过虚拟机界面测试,也可以从DNS服务器上远程IP过去测试

curl http://www.test.ioo
curl http://10.0.0.146
dig www.test.ioo             查看解析的IP为10.0.0.146

在这里插入图片描述

三、使用iptable实现: 放行ssh,telnet, ftp, web服务80端口,其他端口服务全部拒绝

ssh服务器端口:22
telnet服务器端口:23
ftp服务器端口:21
web服务器端口:80

服务器配置

yum install -y telnet telnet-server httpd ftp vsftpd mariadb-server   安装服务

echo web>/var/www/html/index.html
systemctl start httpd
systemctl start telnet.socket
systemctl start vsftpd
systemctl start mariadb                 其他端口,3306
ss -tnl

在这里插入图片描述

客户端访问测试

yum install -y nmap
nmap -p21,22,23,80,3306 192.168.116.145    可以看到端口都打开,可以访问
curl 192.168.116.145
ssh 192.168.116.145

在这里插入图片描述
服务器配置iptables

iptables -A INPUT  -p tcp -m multiport --dports 21,22,23,80 -j ACCEPT
iptables -I  INPUT 2  -j DROP

在这里插入图片描述
客户端再访问

nmap -p21,22,23,80,3306 192.168.116.145    可以看到3306端口无法访问了
curl 192.168.116.145
ssh 192.168.116.145

在这里插入图片描述

四、NAT原理总结

NAT作用:

  1. 减少IP地址的使用
  2. 将不同网络段进行拆分隔离,加强局域网的安全性

在linux系统中,NAT的实现分为下面类型:

  • SNAT:源地址转换 ,支持POSTROUTING, INPUT规则链,方式为修改请求报文的源地址,把局域网内的地址转换为统一的外网地址访问外部网络。

  • DNAT:目标地址转换,支持PREROUTING ,OUTPUT规则链,方式为修改请求报文中的目标地址,外部网络访问内部网络的统一出口地址,内部网络统一出口转换目标IP为内部网络的IP,然后内部网络返回信息给出口地址。

  • PNAT: 端口地址转换,支持PREROUTING,OUTPUT规则链,方式为修改请求报文中的目标IP的目标端口,外部网络访问内部网路的统一出口地址和端口,目标IP的主机将目标端口修改为同个目标主机的另外一个端口上。

五、iptables实现SNAT和DNAT,并对规则持久保存。

2个模式初始环境配置

拓扑图:
在这里插入图片描述

系统/功能IP
centos 7.8/路由服务器对外IP:192.168.116.145;对内IP:10.0.0.1
centos 7.8/后台服务器110.0.0.101
centos 7.8/后台服务器210.0.0.102
centos 7.8/客户端192.168.116.130

后台服务器1配置:
先设置为nat模式,下载http和抓包工具
在这里插入图片描述

yum install -y httpd tcpdump                  安装服务
echo 10.0.0.101>/var/www/html/index.html
systemctl enable httpd

修改为内网IP
vi /etc/sysconfig/network-scripts/ifcfg-ens33

TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33
UUID=a182d975-69eb-449a-a2ef-99edbab555b2
DEVICE=ens33
ONBOOT=yes
IPADDR=10.0.0.101
NETMASK=255.255.255.0
GATEWAY=10.0.0.1

shutdown now  关机

虚拟机设置为主机模式
在这里插入图片描述

后台服务器2配置:
先设置为nat模式,下载http
在这里插入图片描述

yum install -y httpd tcpdump
echo 10.0.0.102>/var/www/html/index.html
systemctl enable httpd
修改为内网IP
vi /etc/sysconfig/network-scripts/ifcfg-ens33

TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33
UUID=52757ed1-496a-45d0-a25d-cd4d7d4526fa
DEVICE=ens33
ONBOOT=yes
IPADDR=10.0.0.102
NETMASK=255.255.255.0
GATEWAY=10.0.0.1

shutdown now  关机

虚拟机设置为主机模式
在这里插入图片描述
路由服务器配置(需要有2张网卡)
先设置为nat模式,下载服务
在这里插入图片描述

yum install -y tcpdump        安装抓包工具
vi /etc/sysconfig/network-scripts/ifcfg-ens33  配置网卡1对接外网

TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33
UUID=7b636dc1-fa52-4fc5-a424-e8cd83fa0bfd
DEVICE=ens33
ONBOOT=yes
IPADDR=192.168.116.145
NETMASK=255.255.255.0

vi /etc/sysconfig/network-scripts/ifcfg-ens34  配置网卡2对接内网

TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens34
UUID=9de44ead-9df5-46bb-bb51-bbbb041f5976
DEVICE=ens34
ONBOOT=yes
IPADDR=10.0.0.1
NETMASK=255.255.255.0

开启路由转发
vi /etc/sysctl.conf
net.ipv4.ip_forward = 1

shutdown now  关机

设置网卡1为nat模式,对接外网,网卡2为主机模式,对接内网

在这里插入图片描述
SNAT源地址转化(内网访问外网)
路由服务器没做iptables策略前

  1. 后台服务器1测试能否出外网到192.168.116.130这个客户端
ping 192.168.116.130             到外网不通
ping 10.0.0.1                    到内网能通

在这里插入图片描述

  1. 路由器访问网站测试,内网网站访问都能使用
curl http://10.0.0.101
curl http://10.0.0.102

在这里插入图片描述

  1. 客户端访问网站测试
    客户端属于外网,所以访问不了内网的网站
curl http://192.168.116.145
curl http://10.0.0.101
curl http://10.0.0.102

在这里插入图片描述
路由服务器配置NAT转换

只要不是到10.0.0.0/24网段的IP都作转换外网的出口地址,也就是192.168.116.145
iptables -t nat -A POSTROUTING -s 10.0.0.0/24 ! -d 10.0.0.0/24 -j MASQUERADE
iptables -t nat -L

在这里插入图片描述

在后台服务器1再次测试,从内网到外网能访问

ping 192.168.116.130             到外网能通了

在这里插入图片描述

SNAT抓包分析

  1. 后台服务器1发起对客户端icmp,也就是ping连接
  2. 路由服务器把后台服务器1的报文的源地址10.0.0.101改为192.168.116.145
  3. 路由器将报文发给客户端192.168.116.130

后台服务器1进行连接

tcpdump -i ens33 -nn icmp

21:24:51.788338 IP 10.0.0.101 > 192.168.116.130: ICMP echo request, id 1331, seq 1, length 64

可以看到后台服务器1发起icmp时,数据包的源地址都是10.0.0.101,为后台服务器1的真实地址

在这里插入图片描述

客户端192.168.116.130抓包

tcpdump -i ens33 -nn icmp

可以看到的是
21:24:52.118318 IP 192.168.116.145 > 192.168.116.130: ICMP echo request, id 1331, seq 1, length 64

只显示路由器的IP和客户端进行icmp连接,证明经过路由器后,内网的后台服务器1的IP地址被转换了,也就是10.0.0.101被路由服务器转换为192.168.116.145

在这里插入图片描述

DNAT:目标地址转换(外网访问内网)

路由服务器配置:

iptables -t nat -F           清空上面做的NAT策略
iptables -t nat -L

设置DNAT策略
iptables -t nat -A PREROUTING -d 192.168.116.145 -p tcp --dport 80 -j DNAT --to-destination 10.0.0.101
iptables -t nat -L

在这里插入图片描述
客户端访问网站

curl http://192.168.116.145         路由服务器做了NAT,所以能访问到内网的网站
curl http://10.0.0.101              外网实际到达不了内网,需要路由服务器做NAT
curl http://10.0.0.102              外网实际到达不了内网,需要路由服务器做NAT

在这里插入图片描述
DNAT抓包分析

  1. 客户端请求路由服务器192.168.116.145的80端口
  2. 路由服务器把请求报文的目标IP从192.168.116.145改为10.0.0.101,然后转换到后台服务器1
  3. 后台服务器1(10.0.0.101)把网站内容返回给路由服务器
  4. 路由服务器把网站内容返回客户端

客户端抓包

tcpdump -i ens33 -nn host 192.168.116.145

192.168.116.130.37518 > 192.168.116.145.80: Flags [S], seq 84549403, win 29200, options [mss 1460,sackOK,TS val 4878404 ecr 0,nop,wscale 7], length 0
可以看到客户端一直都是跟路由服务器进行连接

在这里插入图片描述

后台服务器1进行抓包

tcpdump -i ens33 -nn host 192.168.116.130

192.168.116.130.37518 > 10.0.0.101.80: Flags [S], seq 84549403, win 29200, options [mss 1460,sackOK,TS val 4878404 ecr 0,nop,wscale 7], length 0

可以看到客户端原本到192.168.116.145的80端口的请求变成了到后台服务器1的10.0.0.101
也就是说路由服务器把目标IP修改了

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值