NAT地址转换


实验拓扑图

记住:中间的网关一定要开启路由转发功能!

温馨提示:此次实验不要用虚拟机的桥接和nat模式!,因为如果用了,你的物理主机会把虚拟机里的主机ip先进行一次nat地址转换!不要用,用其他如VMent2-7
在这里插入图片描述

实验图类似:
在这里插入图片描述

我的实验机器是两台kali和一台centos8
kali1为两块网卡:172.21.230.72 ,192.168.64.5
在这里插入图片描述

kali2 : 192.168.64.32,网关指向kali1的192.168.64.5
在这里插入图片描述

centos8:没有网关
在这里插入图片描述

实验前先测试通不通:kali1先开启路由转发
kali2 ping kali1
可以ping 通
在这里插入图片描述
centos8 ping kali1
可以ping 通
在这里插入图片描述

centos8 ping kali2
不通
在这里插入图片描述

ok!实验拓扑搭建成功!


开始配置SNAT

因为实验的kali2是Ping不通cnetos8的,但kali1(网关)可以Ping通,故把地址转换成网关的地址!

iptables -t nat -A POSTROUTING -s 192.168.64.0/24 -o eth0 -j SNAT --to-source 172.21.230.72

  • -t nat :对nat表进行设置
  • -A POSTROUTING :对要进行路由的ip进行设置
  • -s 192.168.64.0/24 :只要源地址为192.168.64这个网段
  • -o eth0 :如果从eth0这个网口出
  • -j SNAT:(source ip network address transport) 就做网络地址转换功能
  • –to-source 172.21.230.72: 就把源地址换成172.21.230.72这个ip

在这里插入图片描述
kali2 ping centos8 测试一下:
成功!
在这里插入图片描述
为了更真实的测试:centos开启跟踪ssh日志功能
tail -f /var/log/secure
开启此功能能直接查看当前对ssh登录操作有关的信息
在这里插入图片描述
好,现在让kali2 ssh远程登录centos8,来观察日志变化
kali2成功登录centos8
在这里插入图片描述
观察日志发现是172.21.230.72(kali1)登录centos8的ssh
在这里插入图片描述
这就成功进行了地址转换!
此操作与虚拟机的VMnet8技术一模一样!
在这里插入图片描述


配置MASQUERADE

把路由表清空 iptables -t nat -F

模拟家里的路由器:由于家里的路由器的地址经常变化,不能像上面的实验一样使用静态绑定了
可以使用masquerade技术来进行地址欺骗,不够你地址变成多少,我直接出去时转换成你网口的地址

命令:iptables -t nat -I POSTROUTING -s 192.168.64.0/24 -o eth0 -j MASQUERADE
-j MASQUERADE :把源地址为192.168.64网段的地址转换成ent0网口的地址
在这里插入图片描述
测试kali2 ping centos8:
在这里插入图片描述
成功!


配置DNAT(地址映射)

把路由表清空 iptables -t nat -F
由于上面的两次实验只是让内网访问外网,无法实现外网访问内网
DNAT技术是把内网主机的地址代替路由器的地址,因为外网主机可以访问路由器的地址

命令:iptables -t nat -I PREROUTING -i eth0 -d 172.21.230.72 -p tcp --dport 22 -j DNAT --to-destination 192.168.64.32

  • -I PREROUTING :对路由器的规则进行设置
  • -i eth0 :如果是从eth0这个网口进的地址
  • -d 172.21.230.72 :目标地址为172.21.230.72 (路由器地址,本次实验为网关地址)
  • -p tcp --dport 22:访问的是tcp协议的22端口ssh服务
  • -j DNAT :就做映射技术
  • –to-destination 192.168.64.32:把目标地址转换为192.168.64.32地址
    意思就是当你访问路由器的ssh时就是访问内网主机192.168.64.32的ssh服务

这里我先把路由器的ssh服务停掉,然后开启内网主机的ssh服务
在这里插入图片描述
测试:centos8连接172.21.230.72的ssh服务
在这里插入图片描述
成功访问内网主机的ssh服务
查看内网主机的ssh登录日志:
在这里插入图片描述
查看就是172.21.21.21(centos8)的访问!
成功!


配置PNAT(端口映射)

把路由表清空 iptables -t nat -F
PNAT技术是把内网主机的端口映射到路由器的一个端口,因为外网主机可以访问路由器的地址

命令:iptables -t nat -I PREROUTING -i eth0 -d 172.21.230.72 -p tcp --dport 8888 -j DNAT --to-destination 192.168.64.32:80

  • -I PREROUTING :对路由器的规则进行设置
  • -i eth0 :如果是从eth0这个网口进的地址
  • -d 172.21.230.72 :目标地址为172.21.230.72 (路由器地址,本次实验为网关地址)
  • -p tcp --dport 8888:访问的是tcp协议的8888端口
  • -j DNAT :就做端口映射技术(还是DNAT命令)
  • –to-destination 192.168.64.32:80 :把目标地址和端口转换为192.168.64.32地址的80端口(web服务)

在这里插入图片描述
测试:centos8(外网主机)访问172.21.230.72:8888(路由器地址)
在这里插入图片描述
成功映射到内网主机192.168.64.32的80端口web服务!


firewall的一些配置

1.当我设置防火墙能进行21端口访问我的ftp时,我也把selinux给关闭了,但还是不能连接我的ftp,上网查原因,发现是说我的firewall 没有开放服务,好家伙systemctl start 还不行,还得加上一条:
firewall-cmd --add-service=ftp #来开启防火墙中ftp
firewall-cmd --list-services #查看现在开启了什么服务
在这里插入图片描述

2.正如我想的一样,我开启我的apache服务,我的apache端口为8080
firewall-cmd --add-service=http
设置iptables: iptables -I INPUT -p tcp --dport 8080 -j ACCEPT
当我访问我的8080 apache服务时 :curl http://172.21.230.72:8080
呢吗,显示没有到主机的路由

我又上网找资料,发现又要firewall开放端口,我吐
firewall-cmd --zone=public --add-port=8080/tcp
firewall-cmd --list-ports #查看开放端口

由于上面的规则,只是当前有限,要想永久有限,在规则后面添加 –permanent(永久生效)
如:firewall-cmd --add-service=http --permanent
https://blog.csdn.net/s_p_j/article/details/80979450这个firewall写的详细

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值