多IP情况下指定具体的出口IP

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了多IP情况下指定具体的出口IP相关的知识,希望对你有一定的参考价值。

参考技术A 在项目中遇到服务器有两个IP(一个真实IP一个VIP),然后出口IP必须为VIP的情况。
针对这样的需求有2种解决方案。

1、修改 ip route
通过systemd的方式在开机的时候执行脚本来修改ip route
a、先查看现有的ip route
执行 ip route,然后可以看到类似的结果:
default via 10.100.103.1 dev ens18 proto static metric 100
10.100.103.0/24 dev ens18 proto kernel scope link src 10.100.103.222 metric 100
172.17.0.0/16 dev docker0 proto kernel scope link src 172.17.0.1 linkdown

b、根据获取到的信息编写执行脚本,可以把脚本放到/home目录下
脚本完整路径:
/home/network.sh
脚本内容(其中10.101.19.1要改为上一步中获取到的网关地址):
ip route replace default via 10.101.19.1 dev ens192 src 10.101.19.104

c、给脚本可执行权限

d、添加一个systemd服务
服务完整路径:
/etc/systemd/system/network-trans.service
服务内容:

e、启用脚本
systemctl enable network-trans.service
systemctl start network-trans.service

f、检查运行结果

如果是loaded状态说明执行成功,然后看一下ip route,会多出一行类似的,如果有就可以了。
default via 10.101.19.1 dev ens192 src 10.101.19.104

2、增加iptables规则
这个方案需要已经安装了iptables服务,并且需要关闭firewalld服务,具体看你那边的情况是否允许,具体步骤如下:
a、启动iptables服务,并设置为开机启动

b、把firewalld禁用

c、添加规则并持久化保存

d、查看 /etc/sysconfig/iptables,确认上面的规则已经添加成功

Linux服务器如何获取出口ip

参考技术A 本周因为工作需要,需要获取服务器对应的出口ip,这里对获取方式做一下记录。

这里机器都可以访问到外网情况下,否则的话获取出口IP就没有什么意义了。

可以看到该请求方式获取到的信息非常详细,包括出口ip、包括运营商、地址等信息

如果仅仅获取IP,可以使用(不过尝试的时候,会出现卡顿)

可以登录cip.cc网站查看

方式二

该请求会直接将出口ip返回

可以登录ifconfig.io查看一些常用的curl命令

方式三

借助类似aws的服务

该请求也是直接将出口ip返回

以上是关于多IP情况下指定具体的出口IP的主要内容,如果未能解决你的问题,请参考以下文章

Linux服务器如何获取出口ip

WebClient 指定出口 IP

WebClient 指定出口 IP

华为防火墙双出口,如何配置指定IP访问特定目的地址的流量自动转发至指定出口

java网络访问指定出口ip

ensp(华为)配置静态NAPT