龙空技术网

「干货」如何让多个云主机分享一个弹性公网IP

湖南长城科技 171

前言:

现在你们对“centos绑定公网ip”大体比较关切,小伙伴们都需要了解一些“centos绑定公网ip”的相关知识。那么小编也在网上收集了一些对于“centos绑定公网ip””的相关知识,希望看官们能喜欢,姐妹们快快来了解一下吧!

随着全球 IPv4 地址资源的逐渐耗尽,可用的公网 IP 地址也越来越少了。因此中国信创服务社区限制了弹性公网 IP 的使用数量,每个账号仅能使用1个弹性 IP,那么怎样才能让所有的云主机都能够共享这个宝贵的公网 IP 呢?但是我们还是要发挥勤俭节约的精神,尽可能使用 1 个 IP 解决多个云主机的互联访问问题(好吧,其实是预算有限(T_T))。下面来看具体操作:

1 共享 IP 访问互联网

1.1 前提

已经购买了两台及以上的 PKS 云主机已经购买了 1 个弹性公网 IP 并绑定了其中一台云主机需要共享 IP 的云主机在同一个网络中(要么都是基础网络,要么是同一个私有网络)

例如下面的例子:

可以看到,右边的麒麟操作系统绑定了公网 IP,可以上网了,但是左边的 CentOS 不行。

1.2 配置

1.2.1 配置已绑定公网 IP 的服务器

已绑定公网 IP 的服务器可作为中转服务器,将其他服务器的流量转发到互联网,实现其它服务器通过它来访问互联网的目的。操作如下:

(1)关闭 selinux:# setenforce 0 ,编辑 selinux 配置文件 # vi /etc/selinux/config, 修改 SELINUX 的值为 SELINUX=disabled

(2)编辑 sysctl.conf 文件,开启网络流量转发功能:# vi /etc/sysctl.conf,查找 net.ipv4.ip_forward 字段(如果没有则自行添加),设置为 net.ipv4.ip_forward=1,然后使用 # sysctl -p 使改动生效。

(3)设置 iptables 规则(这里注意,如果之前已经设置过某些 iptables 规则,则需要根据需要变动,否则可能导致网络访问异常),添加 nat 规则将流量进行转发:

# iptables -t nat -A POSTROUTING -j SNAT --to-source 172.17.xx.xx

这是简化版的命令,在云主机上是工作正常的,如果环境有变或有其它网络控制需求,则需了解 iptables 规则并按需配置。为了能让 iptables 重启后也生效,我们可以将上面的 iptables 命令添加到系统启动项中:

首先启动 rc-local 服务:

# systemctl start rc-local.service

# systemctl enable rc-local.service

# chmod +x /etc/rc.local

# vi /etc/rc.local 在文件末尾添加:

iptables -t nat -A POSTROUTING -j SNAT --to-source 172.17.xx.xx

2.2 没有绑定公网 IP 的服务器配置

没有绑定公网 IP 的服务器需要访问互联网的话很简单,只要添加一条默认路由指向上面已配置好的服务器即可:

route add default gw 172.17.xx.xx

同样,按照上面的步骤将命令添加到启动项中:

1.3 效果

这样,两台主机就可以使用同一个公网 IP 愉快地上网了,O(∩_∩)O

2 共享 IP 对外提供服务

前一步已经解决了两个云主机同时上网的问题,那现在出现了新的问题:假设没有绑定公网 IP 的主机 A 想对外(互联网)提供服务怎么办?还是用中转的办法,由绑定了公网 IP 的主机 B 将指定互联网端口的流量转发给主机 A,操作如下:

2.1 前提

已按照上文的上网共享配置了两台云主机都能访问互联网

2.2 配置

假设:主机 A 上某个服务(例如 Nginx)开放端口(例如 9091)想借助主机 B 公网 IP 的 8081 端口开放互联网服务

我们只需在主机 B 上配置 iptables DNAT 规则:

iptables -t nat -A PREROUTING -p tcp --dport 8081 -j DNAT --to-destination 172.17.xx.xx:9091

其中 172.17.xx.xx 为主机 A 的内网地址。

2.3 效果

可以看到,同一弹性公网 IP 的不同端口,对应了内网不同的服务器端口,实现多个云主机共享公网 IP 对外互联网提供服务的目的。

更多干货尽在【中国信创服务社区】,点击文末左下角“了解更多”即可进入

标签: #centos绑定公网ip #云主机ip地址