Linux防火墙iptables之SNAT与DNAT
2022/4/27 7:14:50
本文主要是介绍Linux防火墙iptables之SNAT与DNAT,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
Linux防火墙iptables之SNAT与DNAT
目录- Linux防火墙iptables之SNAT与DNAT
- SNAT策略及应用
- SNAT策略概述
- SNAT策略典型应用环境
- SNAT策略原理
- SNAT工作原理
- SNAT转换前提条件
- 测试SNAT
- 小知识扩展
- SNAT策略概述
- DHAT原理及应用
- DNAT应用环境
- DNAT原理
- DNAT转换前提条件
- SNAT策略及应用
- 发布局域网内部的OpenSSH服务器, 外网主机需使用250端口进行连接
- 测试DNAT
- 规则的导出、导入
- tcpdump—Linux抓包
SNAT策略及应用
SNAT策略概述
SNAT策略典型应用环境
- 局域网主机共享单个公网ip地址接入internet
SNAT策略原理
-
源地址转换,source Network Addresss Translation
-
修改数据包的源地址
SNAT工作原理
- 数据包从内网发送到公网时,SNAT会把数据包的源ip由私网ip转换成公网ip,当相应的数据包从公网发送到内网时,会把数据包的目的ip由公网转换为私网ip。
SNAT转换前提条件
-
局域网各主机以真确设置ip地址、子网掩码、默认网关地址。
-
linux网关开启ip路由转发
临时打开
echo 1 >/proc/sys/net/ipv4/ip_forward 或 sysctl -w net.ipv4.ip forward=1
永久打开
vim /etc/ sysctl. conf #编辑配置文件 net. ipv4.ip_ forward = 1 #将此行写入配置文件 sysctl -P #读取修改后的配置
NAT转换1:固定的公网IP地址
#配置SNAT策略,实现snat功能,将所有192.168.100.0这个网段的ip的源ip改为10.0.0.1 iptables -t nat -A POSTROUTING -s 192.168.239.0/24 -o ens36 -j SNAT --to 12.0.0.1 修改源地址 可换成单独IP 出站外网网卡 外网IP 或 iptables -t nat -A POSTROUTING -s 192.168.239.0/24 -o ens36 -j SNAT --to-source 12.0.0.1-12.0.0.10 内网IP 出站外网网卡 外网I
SNAT转换2:非固定的公网IP地址(共享动态IP地址)
iptables -t nat -A POSTROUTING -s 192.168.100.0/24 -o ens33 -j MASQUERADE
测试SNAT
实验拓扑图
配置网关服务器(192.168.239.200/12.0.0.254)的相关配置
1.配置双网卡ens33作为内网ipens37作为外网网关路由器
[root@localhost network-scripts]# vim ifcfg-ens33 #编辑内网配置文件
[root@localhost network-scripts]# vim ifcfg-ens37 #编辑外网网卡配置文件
[root@localhost ~]# systemctl restart network #重启网卡服务
[root@localhost ~]# systemctl stop firewalld.service #关闭防火墙 [root@localhost ~]# setenforce 0 #临时关闭
2.配置内网客户机(192.168.239.200)相关配置
3.配置外网服务器(12.0.0.100)的相关配置
[root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33 #编辑外网配置文件
3.1搭建本地yum仓库
[root@localhost ~]# mount /dev/sr0 /mnt mount: /dev/sr0 写保护,将以只读方式挂载 [root@localhost ~]# cd /etc/yum.repos.d [root@localhost yum.repos.d]# ls CentOS-Base.repo CentOS-Debuginfo.repo CentOS-Media.repo CentOS-Vault.repo CentOS-CR.repo CentOS-fasttrack.repo CentOS-Sources.repo [root@localhost yum.repos.d]# mkdir 123.txt [root@localhost yum.repos.d]# mv *.repo 123.txt/ [root@localhost yum.repos.d]# vim file.repo
[root@localhost yum.repos.d]# yum clean all && yum makecache #清除缓存建立源数据 [root@localhost yum.repos.d]# yum install httpd -y #安装http网页服务 [root@localhost yum.repos.d]# systemctl restart httpd #开启服务 [root@localhost yum.repos.d]# netstat -natp |grep httpd #查看服务是否开启 tcp6 0 0 :::80 :::* LISTEN 7420/httpd
4.内网客户机ping外网服务器及自己主机
5.此时使用内网客户机浏览器输入http://12.0.0.12既可以看到外网的http服务页面
6.外网服务器查看跟踪http访问日志
7.网关服务器开启SNAT
[root@localhost ~]# vim /etc/sysctl.conf #编辑配置文件
[root@localhost ~]# sysctl -p #读取修改后的配置文件 net.ipv4.ip_forward = 1
8.配置网关服务器的iptables规则
搭建本地yum残酷并安装安装iptables防火墙和iptables-services管理程序
yum install iptables iptables-services -y#安装iptables防火墙和iptables-services管理程序 systemctl start iptables.service
9.查看网关服务器的iptables规则并清除
10.添加 SNAT转换∶固定的公网IP地址
11.客户端重新访问外网服务器,再查看外网的http访问日志
实现了地址转换
小知识扩展
-
一个IP地址做SNAT转换,一般可以让内网100到200台主机实现上网。
-
专业的事情要让专业的设备去干,让专业的硬件防火墙或专业的路由器干会更好
DHAT原理及应用
DNAT应用环境
- 在Internet中发布位于局域网内的服务器
DNAT原理
- 修改数据包的目的地址
DNAT转换前提条件
-
局域网的服务器能够访问Internet
-
网关的外网地址有正确的DNS解析记录
-
Linux网关开启IP路由转发
vim /etc/sysctl.conf net.ipv4.ip_forward = 1 sysct1 -p
DNAT转换1∶ 发布内网的Web服务
把从ens33进来的要访问web服务的数据包目的地址转换为192.168.239.150
iptables -t nat -A PREROUTING -i ens33 -d 12.0.0.12 -p tcp--dport 80 -j DNAT --to 192.168.239.150 或 iptables -t nat -A PREROUTING -i ens33 -d 12.0.0.12 -p tcp--dport 80-j DNAT --to-destination 192.168.239.150 入站|外网网卡 | 外网ip 内网服务器ip
DNAT转换2∶ 发布时修改目标端口
2.5DNAT转换2∶ 发布时修改目标端口
发布局域网内部的OpenSSH服务器, 外网主机需使用250端口进行连接
#发布局域网内部的OpenSSH服务器, 外网主机需使用250端口进行连接 iptables-t nat -A PREROUTING -i ens33 -d 12.0.0.1 -p tcp --dport 250 -j DNAT --to 192.168.239.150:22
测试DNAT
实验拓扑图
在上面的SNAT实验进行修改
1.将原有的vin7内网改为外网
2.将之前的外网服务器改为内网客户机
[root@localhost httpd]# vim /etc/sysconfig/network-scripts/ifcfg-ens33 #修改网卡配置文件
[root@localhost httpd]# systemctl restart network
查看网关服务器的iptables规则并清除
在网关服务器添加iptables规则
内网服务器重启http服务器
[root@localhost httpd]# systemctl restart httpd
测试外网客户机是否可以访问内网服务器http服务
在内网服务器http服务站点目录新建目录再次测试是否可以访问
[root@localhost httpd]# cd /var/www/html/ [root@localhost html]# mkdir centos7
规则的导出、导入
自定义导出备份规则
导入备份文件内的规则
tcpdump—Linux抓包
tcpdump tcp-i ens33 -t -s 0 -c 100 and dst port ! 22 and src net 192.168.1.0/24 -w ./target.cap
(1)tcp∶ ip icmp arp rarp 和 tcp、udp、icmp这些选项等都要放到第一个参数的位置,用来过滤数据报的类型
(2)-i ens33 ∶只抓经过接口ens33的包
(3)-t ∶不显示时间戳
(4)-s 0 ∶ 抓取数据包时默认抓取长度为68字节。加上-s 0 后可以抓到完整的数据包
(5)-c 100 ∶只抓取100个数据包
(6)dst port ! 22 ∶不抓取目标端口是22的数据包
(7)src net 192.168.1.0/24 ∶数据包的源网络地址为192.168.1.0/24。Net:网段,host:主机
(8)-w ./target.cap ∶ 保存成cap文件,方便用ethereal (即wireshark)分析
示例:
这篇关于Linux防火墙iptables之SNAT与DNAT的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-12如何创建可引导的 ESXi USB 安装介质 (macOS, Linux, Windows)
- 2024-11-08linux的 vi编辑器中搜索关键字有哪些常用的命令和技巧?-icode9专业技术文章分享
- 2024-11-08在 Linux 的 vi 或 vim 编辑器中什么命令可以直接跳到文件的结尾?-icode9专业技术文章分享
- 2024-10-22原生鸿蒙操作系统HarmonyOS NEXT(HarmonyOS 5)正式发布
- 2024-10-18操作系统入门教程:新手必看的基本操作指南
- 2024-10-18初学者必看:操作系统入门全攻略
- 2024-10-17操作系统入门教程:轻松掌握操作系统基础知识
- 2024-09-11Linux部署Scrapy学习:入门级指南
- 2024-09-11Linux部署Scrapy:入门级指南
- 2024-08-21【Linux】分区向左扩容的方法