多ip服务器怎么切换ip(多ip服务器指定出口ip)

标题比较晦涩难懂,简单解释下:假如一个服务器有五个ip,我们部署了某一个服务,我们可以在配置文件里面修改IP为五个IP,但是服务器始终只有一个出口,最后落地出口还是一个IP,所以我们可以借助docker,为一个服务绑定一个IP,这样服务器不管有多少IP,都可以直接利用起来。

流程图:

普通模式:

多ip服务器怎么切换ip(多ip服务器指定出口ip)

优化后:

多ip服务器怎么切换ip(多ip服务器指定出口ip)

注意一个最大的问题:程序需要用docker跑。

废话不多,开整:

先假如机器有五个IP:

192.168.1.2
192.168.1.3
192.168.1.4
192.168.1.5
192.168.1.6

通过服务器上curl cip.cc可以看到出口IP(举例):

[root@pds1195 ~]# curl cip.cc
IP : 192.168.1.2

我们将docker绑定ip和指定端口跑起来:

docker run -d --name=speedtest --restart=always -p 192.168.1.2:6688:80/tcp -p -p 192.168.1.2:6688:80/udp ilemonrain/html5-speedtest:alpine

为什么要指定docker绑定的IP?

这个是为了对入口数据进行指定,若只是对出口IP进行限制,可以跳过这一步,直接使用-p绑定端口,然后操作下面的步骤。

然后查看docker的内网ip(docker会在启动后,指定一个内网ip):

docker inspect speedtest #(speedtest是启动时候指定的名字,如果未指定,请使用启动后的显示的id)

执行后,我们可以在末尾部分找到类似于下面的信息:

"EndpointID": "d5582119d31f9dd929c05a16dea25fa5a7894ac01ccd9f701f741ec47d977551",
"Gateway": "172.17.0.1",
"GlobalIPv6Address": "",
"GlobalIPv6PrefixLen": 0,
"IPAddress": "172.17.0.2",
"IPPrefixLen": 16,
"IPv6Gateway": "",
"MacAddress": "02:42:ac:11:00:02",
"Networks": {
"bridge": {
"IPAMConfig": null,
"Links": null,
"Aliases": null,
"NetworkID": "0e509efa6ad95f89a885838a336fd2d829136fa88a37a17813218e7c8059f8b9",
"EndpointID": "d5582119d31f9dd929c05a16dea25fa5a7894ac01ccd9f701f741ec47d977551",
"Gateway": "172.17.0.1",
"IPAddress": "172.17.0.2",
"IPPrefixLen": 16,
"IPv6Gateway": "",
"GlobalIPv6Address": "",
"GlobalIPv6PrefixLen": 0,
"MacAddress": "02:42:ac:11:00:02",
"DriverOpts": null
}
}
}
}
]

里面的"IPAddress": "172.17.0.2"就是内网地址。

接下来,我们将此地址通过iptables的nat方式,映射到指定的ip:192.168.1.2上。

iptables -t nat -I POSTROUTING -p all -s 172.17.0.2 -j SNAT --to-source 192.168.1.2
iptables-save

这样,程序出口就通过192.168.1.2的ip进行发送。如果五个IP都要利用起来,按照上面的方法,多次操作即可。

    

使用无须实名的阿里云国际版,添加 微信:ksuyun  备注:快速云

本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 cloud@ksuyun.com 举报,一经查实,本站将立刻删除。
如若转载,请注明出处:https://www.hanjifoods.com/5346.html