环境示例:俩个私有网络的主机都有 http 服务需要可以互相通信
1 主机网络环境准备
#web-1
[20:07:44 root@web-1 ~]#hostname -I
192.168.10.71
[20:08:37 root@web-1 ~]#route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.10.10 0.0.0.0 UG 100 0 0 eth0
192.168.10.0 0.0.0.0 255.255.255.0 U 100 0 0 eth0
#firewalld-1
[20:10:37 root@firewalld-1 network-scripts]#hostname -I
192.168.10.10 10.0.0.100
[20:10:42 root@firewalld-1 network-scripts]#route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
10.0.0.0 0.0.0.0 255.255.255.0 U 101 0 0 eth1
192.168.10.0 0.0.0.0 255.255.255.0 U 102 0 0 eth0
#firewalld-2
[20:07:17 root@firewalld-2 ~]#hostname -I
172.16.10.10 10.0.0.200
[20:11:28 root@firewalld-2 ~]#route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
10.0.0.0 0.0.0.0 255.255.255.0 U 103 0 0 eth1
172.16.10.0 0.0.0.0 255.255.255.0 U 102 0 0 eth0
#web-2
[20:07:42 root@web-2 ~]#hostname -I
172.16.10.20
[20:11:46 root@web-2 ~]#route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 172.16.10.10 0.0.0.0 UG 100 0 0 eth0
172.16.10.0 0.0.0.0 255.255.255.0 U 100 0 0 eth0
2 firewalld 开启路由转发
[20:13:03 root@firewalld-1 ~]#echo 1 >/proc/sys/net/ipv4/ip_forward
[20:11:33 root@firewalld-2 ~]#echo 1 >/proc/sys/net/ipv4/ip_forward
3 配置 SNAT 实现内网主机可以访问互联网
#允许firewalld-1内网访问互联网
[20:13:25 root@firewalld-1 ~]#iptables -t nat -APOSTROUTING -s 192.168.10.0/24 -j MASQUERADE
[20:08:51 root@web-1 ~]#ping 10.0.0.200
PING 10.0.0.200 (10.0.0.200) 56(84) bytes of data.
64 bytes from 10.0.0.200: icmp_seq=1 ttl=63 time=1.30 ms
64 bytes from 10.0.0.200: icmp_seq=2 ttl=63 time=0.739 ms
[20:22:50 root@firewalld-2 ~]#tcpdump -i eth1
dropped privs to tcpdump
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth1, link-type EN10MB (Ethernet), capture size 262144 bytes
20:23:10.487634 IP 10.0.0.100 > firewalld-2: ICMP echo request, id 1638, seq 146, length 64
20:23:10.487656 IP firewalld-2 > 10.0.0.100: ICMP echo reply, id 1638, seq 146, length 64
#允许firewalld-1内网访问互联网
[20:13:58 root@firewalld-2 ~]#iptables -t nat -APOSTROUTING -s 172.16.10.0/24 -j MASQUERADE
[20:18:24 root@web-2 ~]#ping 10.0.0.100
PING 10.0.0.100 (10.0.0.100) 56(84) bytes of data.
64 bytes from 10.0.0.100: icmp_seq=1 ttl=63 time=1.13 ms
64 bytes from 10.0.0.100: icmp_seq=2 ttl=63 time=0.678 ms
[20:24:06 root@firewalld-1 ~]#tcpdump -i eth1
dropped privs to tcpdump
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth1, link-type EN10MB (Ethernet), capture size 262144 bytes
20:24:13.061897 IP 10.0.0.200 > firewalld-1: ICMP echo request, id 1640, seq 19, length 64
20:24:13.061922 IP firewalld-1 > 10.0.0.200: ICMP echo reply, id 1640, seq 19, length 64
配置完成后内网的主机是可以访问 10.0.0.0 互联网网段的
4 配置 DNAT 实现俩个私网主机可以互相访问对方的 http 服务
#firewalld-1配置
[20:29:34 root@firewalld-1 ~]#iptables -t nat -APREROUTING -d 10.0.0.100 -p tcp --dport 80 -j DNAT --to-destination 192.168.10.71:80
[20:30:07 root@web-2 ~]#curl 10.0.0.100
httpd 192.168.10.71
#firewalld-2配置
[20:23:21 root@firewalld-2 ~]#iptables -t nat -APREROUTING -d 10.0.0.200 -p tcp --dport 80 -j DNAT --to-destination 172.16.10.20:80
[20:23:52 root@web-1 ~]#curl 10.0.0.200
httpd 172.16.10.20
5 配置 DNAT 实现俩个主机可以互相访问
[20:35:49 root@firewalld-1 ~]#iptables -t nat -IPREROUTING -d 10.0.0.100 -j DNAT --to-destination 192.168.10.71
[20:23:21 root@firewalld-2 ~]#iptables -t nat -APREROUTING -d 10.0.0.200 -j DNAT --to-destination 172.16.10.20
即使是其他服务主要访问 10.0.0.100 都会映射到 192.168.71 主机,访问 10.0.0.200 映射到 172.16.10.20 包扣 ping
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于