• iptables之SNAT,DNAT原理与DNS分离解析实验


    1.SNAT 策略

        局域网主机共享单个公网IP地址接入Internet(私网不能在Internet(公网)中正常路由因为公网有      个机制叫黑洞路由(吸收私网数据包并丢弃))

    2.SNAT原理 (source network address translation)
      修改数据包源地址

    3.SNAT转换前提条件在nat表中做

          1.  局域网各主机已正确设置ip地址,子网掩码,默认网关地址

           2. linux网关开启路由转发

    4.网关服务器要打开ip路由转发功能 

    1.0打开方式(1.临时打开)  

    sysctl -w net.ipv4.ip_forword=1

    sysctl -p  加载

      2.0.永久打开

          vim /etc/sysctl.conf

          sycctl -p

     5.网关服务器配置

     方式一:

     iptables -t nat -A POSTROUTING -s 192.168.159.0/24 -o ens33-j SNET --to 12.0.0.254

     主要代码配置指定地址

    方式二:

     iptables -t nat -A POSTROUTING -s 192.168.159.0/24 -o ens33 -j MASQUERADE

     指定动态地址

    实验步骤:

    1.需要准备三台主机 1台内网服务器 1台网关服务器  1台 外网服务器

    2.实验目的:实现内外网服务器的访问

    内网服务器配置: ip地址192.168.61.10   网关 192.168.61.20要想外网访问内网必须安装htppd服务。

    1. 1 ifconfig
    2. 2 systemcel status iptables
    3. 3 systemcel status iptables.server
    4. 4 systemcel start iptables.server
    5. 5 iptables -nvL
    6. 6 iptables -nvL INPUT
    7. 7 iptables -t filter -A INPUT -p tcp --dport 20:21 -j REJECT
    8. 8 iptables -nvL INPUT
    9. 9 iptables -nvL --line-numbers
    10. 10 iptables -nvL -t filter --line-numbers
    11. 11 iptables -nvL input --line-numbers
    12. 12 iptables -nvL input
    13. 13 iptables -P INPUT DROP
    14. 14 iptables -nvL input
    15. 15 iptables -nvL
    16. 16 iptables -F
    17. 17 iptables -P INPUT DROP
    18. 18 iptables -A INPUT --dport 22 -j REJECT
    19. 19 iptables -A INPUT --dport22 -j REJECT
    20. 20 iptables -A INPUT -p tcp --dport 22 -j REJECT
    21. 21 ping 192.168.61.20
    22. 22 iptables -A FORWORD -p udp -m iprange --src-range 192.168.61.20-192.168.61.50 -j REJECT
    23. 23 iptables -A FORWARD -p udp -m iprange --src-range 192.168.61.20-192.168.61.50 -j REJECT
    24. 24 ping 192.168.61.20
    25. 25 iptables -A INPUT -p tcp -m state--state ESTABLISHED,RELATED -j ACCEPT
    26. 26 iptables -A INPUT -p tcp -m state--state ESTABLISHED ,RELATED -j ACCEPT
    27. 27 iptables -A INPUT -p tcp -m state --state ESTABLISHED ,RELATED -j ACCEPT
    28. 28 iptables -A INPUT -p tcp -m state --state ESTABLISHED,RELATED -j ACCEPT
    29. 29 cd /etc/sysconfig
    30. 30 ls
    31. 31 cd /etc/sysconfig
    32. 32 ls
    33. 33 vim iptables
    34. 34 iptables-save>/opt/1.txt
    35. 35 cd opt
    36. 36 cd /opt
    37. 37 ls
    38. 38 ls 1.txt
    39. 39 cat 1.txt
    40. 40 cd sysconfig
    41. 41 cd /etc/sysconfig
    42. 42 ls
    43. 43 ls iptables
    44. 44 cat iptables
    45. 45 iptables-restore </opt/1.txt
    46. 46 cat iptables
    47. 47 ifconfig
    48. 48 iptables
    49. 49 iptables -nL
    50. 50 iptables -F
    51. 51 iptables -nL
    52. 52 ifconfig
    53. 53 vim /etc/sysconfig/network-scripts/ifcfg-ens33
    54. 54 systemctl restart network
    55. 55 ping 192.168.61.20
    56. 56 ping 192.168.61.10
    57. 57 systemctl stop firewalld
    58. 58 setenforce 0
    59. 59 ifconfig
    60. 60 cd /etc/sysconfig/network-scripts/
    61. 61 ls
    62. 62 vim ifcfg-ens33
    63. 63 yum install -y httpd
    64. 64 cd yum.repos.d
    65. 65 cd /etc/yum.repos.d
    66. 66 ls
    67. 67 mkdir bak
    68. 68 mv *.repo bak
    69. 69 vim local.repo
    70. 70 df
    71. 71 mount /dev/sr0 /mnt
    72. 72 yum install -y httpd
    73. 73
    74. 74 systemctl status httpd
    75. 75 systemctl start httpd

    网关服务器配置:(需要添加一块网卡,一个做内网网关,一个作外网网关,网关服务器需要设置一个      转发功能   编辑  vim /etc/sysctl.conf 添加配置 nat.ipv4.ip_forward=1   1是开启的意思。

    网关服务器不需要网关和dns直接在配置文件注释即可,只需保存ip地址即是内网网关。)

    1. 1 cd ~
    2. 2 vim /etc/sysconfig/network-scripts/ifcfg-ens33
    3. 3 systemctl restart network
    4. 4 ping www.baidu.com
    5. 5 ifconfig
    6. 6 cd /etc/sysconfig/network-scripts/
    7. 7 ls
    8. 8 vim ifcfg-ens33
    9. 9 cp ifcfg-ens33 ifcfg-ens36
    10. 10 vim ifcfg-ens36
    11. 11 systemctl restart network
    12. 12 ifconfig
    13. 13 vim ifcfg-ens36
    14. 14 ping 12.0.0.12
    15. 15 vim /etc/sysctl.conf
    16. 16 sysctl -p
    17. 17 ping 192.168.61.20
    18. 18 ifconfig
    19. 19 vim ifcfg-ens33
    20. 20 systemctl status iptables
    21. 21 yum install -y iptables iptables-services
    22. 22 df
    23. 23 mount /dev/sr0 /mnt
    24. 24 yum install -y iptables iptables-services
    25. 25 df
    26. 26 cd /etc/yum.repos.d
    27. 27 ls
    28. 28 mkdir bak
    29. 29 mv *.repo bak
    30. 30 vim local.repo
    31. 31 yum install -y iptables iptables-services
    32. 32 systemctl start iptables
    33. 33 systemctl status iptables
    34. 37 systemctl stop firewalld
    35. 38 setenforce 0
    36. 39 vim /etc/sysctl.conf #在这个文件里面添加net.ipv4.ip_forward=1
    37. 40 sysctl -p #加载一下网关服务器的转发功能
    38. 41 ifconfig
    39. 42 iptables -nvL -t nat
    40. 43 iptables -F
    41. 45 iptables -F
    42. 46 iptables -t nat -A POSTROUTING -s 192.168.61.0/24 -o ens33 -j SNAT --to 12.0.0.12
    43. ######### -o ens33为出站口 -s指定源地址
    44. 47 iptables -nvL -t nat
    45. 48 iptables -D 1 -t nat
    46. 49 iptables -D 1 -t nat
    47. 50 iptables -F -t nat
    48. 51 iptables -nvL -t nat
    49. 55 iptables -t nat -A PREROUTING -i ens36 -d 12.0.0.12 -p tcp --dport 80 -j DNAT --to
    50. 192.168.61.20
    51. ########## -i 指定ens36入站口 -d指定目的地址 -p 指定协议 --dport 指定端口号
    52. ####192.168.61.20为源地址

    外网服务器: (ip地址 12.0.0.12 )要想内网通过网关服务器访问外网必须安装httpd服务

    1. 2 cd /etc/sysconfig/network-scripts/
    2. 4 vim ifcfg-ens33
    3. 5 ifconfig
    4. 6 systemctl restart network
    5. 7 ifconfig
    6. 8 vim ifcfg-ens33
    7. 9 systemctl restart network
    8. 10 ifconfig
    9. 11 systemctl restart network
    10. 12 yum install -y httpd
    11. 13 systemctl stop firewalld
    12. 14 setenforce 0
    13. 15 vim ifcfg-ens33
    14. 16 rpm -qc httpd
    15. 17 rpm -q httpd
    16. 18 yum install -y httpd
    17. 19 systemctl stop firewalld
    18. 20 setenforce 0
    19. 27 systemctl restart network
    20. 28 ping 12.0.0.12
    21. 29 ping 12.0.0.254
    22. 30 vim ifcfg-ens33
    23. 31 systemctl stop firewalld
    24. 32 setenforce 0
    25. 36 yum install -y httpd
    26. 38 systemctl status httpd
    27. 39 systemctl start httpd
    28. 41 cd /var/log/httpd
    29. 43 taif -f access_log
    30. 44 taif access_log
    31. 45 tail -f access_log
    32. 46 cd /var/log/httpd/
    33. 48 tail -f access_log

     查看httpd程序日志文件在/var/log/httpd/access_log

    防火墙规则的备份和还原

    iptables -save > /opt/1.txt (备份)

     iptables -restore < /opt/1.txt  (还原)

    DNAT策略(目的地址转换)

     目的:修改数据包的目的地址

    网关服务器主要配置:

        1.打开路由转发

        2.做SNAT和DNAT转换   

     iptables -t nat -A POSTROUTING -s 192.168.61.0/24 -o ens36 -j SNET --to 12.0.0.254

    iptables -t nat -A PREROUTING -i ens36 -d 12.0.0.254 -p tcp --dport 80 -j DNAT --to 192.168.80.20:80

    windows访问12.0.0.254网关

     在内网日志中显示的ip记录是12.0.0.100windows主机地

     因为访问时DNAT会把目标地址转换为公网地址,而公网地址通过路由转发给源地址

     

    抓包

      tcpdump tcp -i ens33 -t  -s 0 -c 100 and dst port ! 22 and src net 192.168.1.0/24 -w       ./target.cap

    -tcp -udp -icmp协议抓包时必须写在前面

    -i  ens33    抓取经过ens33的网卡的包

    -t  不显示时间戳

    -s 0 抓取数据包默认68字节 -s 0代表可以抓取完整包

    -c 100 指抓取100个包

    src net 192.168.1.0/24   数据包源网络地址

    -w  指定保存路径文件为 ./target.cap

    要在ens33抓取http协议相关的包

    tcpdump http -i ens33 -s 0  -w 

    dns网关服务器域名解析    

    这边注意编写的文件一定要是index.html文件才可以访问 html文件位于/var/www/html下

    dns分离解析实现用域名访问主机

     在网关服务器中配置分离解析

    1.安装bind包

     yum install -y bind

     2.修改主配置文件

    3.修改区域配置文件

    4.在区域数据配置文件中配置以bsj.com.lan和bsj.com.wan结尾文件

    5.关闭防火墙,关闭系统防护,开启named服务

    6.在客户机中设置vim /etc/resolv.conf 文件

    nameserver=dns域名服务器地址

    实验过程

    vim  /etc/named.conf

    1. options {
    2. listen-on port 53 { any; };
    3. # listen-on-v6 port 53 { ::1; };
    4. directory "/var/named";
    5. dump-file "/var/named/data/cache_dump.db";
    6. statistics-file "/var/named/data/named_stats.txt";
    7. memstatistics-file "/var/named/data/named_mem_stats.txt";
    8. allow-query { any; };

    vim /etc/named.rfc1912.zones

    1. view "lan" {
    2. match-clients { 192.168.61.0/24; }; #内网解析到的网段
    3. zone "ky22.com" IN {
    4. type master;
    5. file "bsj.com.lan"; #位于/var/named/ky22.com.lan下
    6. };
    7. zone "." IN { #根域配置文件
    8. type hint;
    9. file "named.ca";
    10. };
    11. };
    12. view "wan" {
    13. match-clients { any; }; #外网解析到的除192.168.61.0网段所有地址
    14. zone "ky22.com" IN {
    15. type master;
    16. file "bsj.com.wan"; #位于/var/named/bsj.com.wan下
    17. };
    18. };
    19. ~
    20. ~

    cp -p /var/named/named.localhost  bsj.com.lan   bsj.com.wan 文件模板复制到两个文件下面

    vim /var/named/bsj.com.lan

     vim /var/named/bsj.com.wan

     在客户端加一个服务器解析地址

    vim /etc/resolv.conf

    1. [root@localhost ~]# nslookup mail.bsj.com
    2. Server: 192.168.61.20
    3. Address: 192.168.61.20#53
    4. Name: mail.bsj.com
    5. Address: 192.168.61.40

    打开windows主机:设置和外网一个网段vmnet2仅主机模式

     

     

     

  • 相关阅读:
    【工程光学】光度学&色度学
    猿创征文 |【SpringBoot2】基础配置详解
    强网杯2022 web
    OpenCV 实现 SIFT→SURF 算法关键点检测实现
    Spring 源码分析-简单示例带你了解BeanFactoryPostProcessor
    Vue学习之--------全局事件总线(2022/8/22)
    LC669+670+857+394+337
    【首阳首板之主升三域洗盘域】洞察洗盘突破典型形态,心中不慌
    光照静态烘焙
    【Adobe Illustrator 教程】3. 认识钢笔工具
  • 原文地址:https://blog.csdn.net/weixin_59629968/article/details/126877623