因为自己在配置时出现一些莫名其妙的问题,如ping不通,路由转发不成功等;
环境准备:3台主机,提前下载好httpd服务
关闭防火墙systemctl stop firewalld
setenforce 0
systemctl status firewall 确认为dead
getenforce 查看确认为disabled
1.主机1:提前下载好httpd,配置网卡为仅主机模式
认为该主机是内网主机
在实际生产工作中大部分看到的ip地址一般只到网段,这部分即可确认地区城市,具体地址类似于个人的门牌号,一般不会显示出来
网卡配置ip不再赘述,自行查看本机的vmnet1对应网段,我的是192.168.20.1
网卡配置:(认为该主机是内网主机,DNS可写可不写)ip地址只写到网段即可,
TYPE=Ethernet
NAME=网卡名
DEVICE=网卡名
ONBOOT=yes
BOOTPROTO=static
IPADDR=192.168.20.1
GATEWAY=192.168.20.1
NETMASK=255.255.255.0
配置完成后重启网卡:systemctl restart network
2.主机2:两张网卡,均为仅主机模式(该主机不用事先下载httpd),该主机做理由转发功能
网卡配置1:
TYPE=Ethernet
NAME=网卡名1
DEVICE=网卡名1
ONBOOT=yes
BOOTPROTO=static
IPADDR=192.168.20.2
GATEWAY=192.168.20.2
NETMASK=255.255.255.0
网卡配置2:
TYPE=Ethernet
NAME=网卡名1
DEVICE=网卡名1
ONBOOT=yes
BOOTPROTO=static
IPADDR:172.16.10.1
GATEWAY=172.16.10.1
NETMASK=255.255.255.0
配置完成后重启网卡:systemctl restart network
3.主机3:提前下载好httpd服务,网卡为仅主机模式
认为该主机是外网主机
网卡配置:
TYPE=Ethernet
NAME=网卡名1
DEVICE=网卡名1
ONBOOT=yes
BOOTPROTO=static
IPADDR:172.16.10.2
GATEWAY=172.16.10.1
NETMASK=255.255.255.0
配置完成后重启网卡:systemctl restart network
注:主机3的网卡网关(GATEWAY)要指向路由转发主机的网段
4.在主机1测试ping172.16.10.2是否ok
5.在主机3测试ping192.168.20.1是否ok
主机2没有开启路由转发功能默认第4步和第5步是100%丢包
6.在主机2开启路由转发功能
echo 1 > /proc/sys/net/ipv4/ip_forward (此种方式为临时配置,因防火墙工作于内核中,内核工作于内存中,所以会导致重启失效)
永久有效方案
编辑配置文件/etc/sysctl.con加入net.ipv4.ip_forward = 1
sysctl -p 返回ip_forward=1
7.开启路由转发功能后,再次测试第4步和第5步
8.在主机2做策略:
iptables -t nat -A POSTROUTING -s 192.168.20.1 -d 172.16.10.2 -j SNAT --to-source 172.16.10.1
iptables -t nat -A PREROUTING -s 172.16.10.2 -d 192.168.20.1 -p tcp -j DNAT --to-destination 192.168.20.2
9.在主机3执行动态监测日志文件命令
tail -f /var/log/httpd/access_log
10.在主机1执行命令
curl 172.16.10.2
11.在主机3查看路由转发功能是否实现,此时在主机3的日志显示经主机2路由转发功能转换后的ip访问
到第11步完成内网主机1经过主机2实现路由转发功能访问外网主机3(内网ip通过postrouting链,也就是SNAT)
12.在主机1执行监测文件命令
tail -f /var/log/httpd/access_log
13.在主机3执行访问
curl 192.168.20.1
到第13步完成 外网主机3经过主机2实现路由转发功能访问内网主机1(外网ip通过prerouting链,也就是DNAT)
firewalld的SNAT与DNAT难点
1.实现路由转发功能过程中互相之间不通信,主要原因
网卡配置问题,关键点在于网关之间的一个通信,再次细化就是网关的指向问题
也可route add;具体用法可自行查询
2.SNAT与DNAT之间混淆,不清楚实现路由转发的链
简而言之为:内访外POSTROUTING链SNAT;外访内PREROUTING链DNAT
3.--dport与--sport目标端口与源端口
主要为分清谁访问谁,端口号
4.--to-source与--to-destination
可理解为主机2的中间人,关键点为--to-source时为主机2的外网ip;--to-destination为主机2的内网ip