- 准备三台机器,我准备了如下三台:
loz(第一台):内网服务器 192.168.188.11
sp(第二台):网关服务器 192.168.188.12
smp(第三台):外网服务器 12.0.0.10 - 首先三台都关闭防火墙
systemctl stop firewalld
setenforce 0 - 第二台添加一张网卡,我这里是ens36,并对两张网卡进行如下配置
ens33:
ens36:
稍微说一下为什么要配这个IP地址,第二台机器位于第一台和第三台之间,起到的是路由器的作用,要让其他两台同时把它作为网关,ens33用来连接第一台,ens36连接第三台。
配置完了别忘了systemctl restart network重启一下网络
然后在/etc/sysctl.conf内对Linux内核参数进行修改
最后用sysctl -p,可以使参数配置立刻生效 - 为了方便测试,在第一台和第三台安装httpd
安装完记得启动一下 - 对第一台和第三台机器的ens33网卡进行配置,具体配置如下:
第一台,要把第二台的同网段IP作为网关:
第三台配置类似: - 在第二台机器上用iptables进行nat地址转换配置
具体代码为:# 对nat表的POSTROUTING链进行配置,如果源IP是192.168.188.0/24网段的,那么就在ens36网卡上将源IP转换成10.0.0.10。意思就是当内网访问外网时,源IP变成了10.0.0.10 iptables -t nat -A POSTROUTING -s 192.168.188.0/24 -o ens36 -j SNAT --to 10.0.0.10 # 对nat表的PREROUTING链进行配置,如果目的IP是11.0.0.11,协议是tcp,目标端口是80,那么就在ens36网卡上将目的IP和端口转换成192.168.188.11:80 iptables -t nat -A PREROUTING -d 11.0.0.11 -i ens36 -p tcp --dport 80 -j DNAT --to 192.168.188.11:80
可以用iptables -t nat -vnL --line-numbers展示一下:
-
检查一下访问结果
打开第三台虚拟机上的浏览器,输入11.0.0.11,按照第二台机器上iptables的设置,如果有人访问11.0.0.11的80端口,那么目标IP就会变成192.168.188.11,端口是80。
此时我们查看第一台上httpd的服务日志/var/log/httpd/access_log,将会看到有12.0.0.10的主机访问本机 -
我们再用第一台虚拟机访问一下,这里我们同样打开浏览器,然后输入12.0.0.10,也就是第三台机器的IP地址
同样看一下第三台机器的httpd服务日志/var/log/httpd/access.log,这里我们仔细看,能看到访问本机的主机IP地址是10.0.0.10,这是因为我们在第二台机器上进行了iptables配置,所有源IP是192.168.188.0/24网段的主机IP都会被转换成10.0.0.10
iptables地址转换实验
最新推荐文章于 2024-06-19 15:11:21 发布