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

文章插图
优化后:

文章插图
注意一个最大的问题:程序需要用docker跑 。
废话不多,开整:
先假如机器有五个IP:
192.168.1.2192.168.1.3192.168.1.4192.168.1.5192.168.1.6通过服务器上curl cip.cc可以看到出口IP(举例):[root@pds1195 ~]# curl cip.ccIP : 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.2iptables-save这样,程序出口就通过192.168.1.2的ip进行发送 。如果五个IP都要利用起来,按照上面的方法,多次操作即可 。【利用docker实现服务器多IP通讯】
推荐阅读
- 一定要警惕这六大类利用疫情实施的诈骗
- SpringBoot实现人脸识别功能
- 在电视上看现场直播是如何实现的?
- 如何鼓励孩子实现自己的梦想?怎么引导孩子树立梦想
- 利用定积分求平面图形的面积?利用定积分求图形面积
- 形容梦想的诗句或名言?描写实现梦想的诗句
- 南瓜红薯减肥应该怎么做?
- Python神级操作,简单百行代码轻松实现通讯功能!
- 怎样做才能拥有财富?快速实现财富的方法
- 利用跳绳减肥瘦小腿么?
