我们假设公司内部网络有两台服务器:
- 服务器 A :配有外网 IP 地址 1.1.1.1 和内网 IP 地址 192.168.1.1 ,操作系统为 CentOS Linux 7 ;
- 数据库服务器 B :仅配有内网 IP 地址 192.168.1.2 ,操作系统没有限制,Windows 也可。
现在有一个需求,需要通过外网去访问数据库服务器 B 的 3306 端口,即将 1.1.1.1:30000 映射为 192.168.1.2:3306 。
虽然在路由器和交换机上做也可以,但这里讨论的是如何在 CentOS Linux 上做。
我们将在服务器 A 上进行如下配置:
1 、开启 IP 路由转发:
( 1 )临时开启(配置写入内存,立即生效,重启服务器后失效):
[root@host ~]# echo "1" > /proc/sys/net/ipv4/ip_forward
( 2 )永久开启(配置写入硬盘,执行命令 sysctl -p 后生效,同时重启服务器后还会生效):
[root@host ~]# echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf [root@host ~]# sysctl -p
( 3 )可使用下列命令查看是否开启:
[root@host ~]# sysctl -a | grep "ip_forward" net.ipv4.ip_forward = 1 [root@host ~]#
2 、开启 NAPT :
[root@host ~]# iptables -t nat -F # 清除原有的 NAT 表中的规则 [root@host ~]# iptables -F # 清除原有的 filter 表中的规则 [root@host ~]# iptables -P FORWARD ACCEPT # 缺省允许 IP 转发 [root@host ~]# iptables -t nat -A PREROUTING -p tcp --dport 30000 -j DNAT --to-destination 192.168.1.2:3306 [root@host ~]# iptables -t nat -A POSTROUTING -d 192.168.1.2 -p tcp --dport 3306 -j SNAT --to 192.168.1.1
上述倒数第二条命令是做 DNAT( destination NAT ,对目的 IP 地址做 NAT ),即将 x.x.x.x:yyyy → 1.1.1.1:30000 转换为 x.x.x.x:yyyy → 192.168.1.2:3306 。
上述倒数第一条命令是做 SNAT( source NAT ,对源 IP 地址做 NAT ),即再将 x.x.x.x:yyyy → 192.168.1.2:3306 转换为 192.168.1.1:zzzz → 192.168.1.2:3306 。
3 、如需查看现有 NAT 表中有哪些规则,请使用如下命令查看:
[root@host ~]# iptables -t nat -L
现在,通过外网去访问 1.1.1.1:30000 就相当于去访问 192.168.1.2:3306 。
参考自:
- https://blog.csdn.net/zzhongcy/article/details/42738285
发表评论?