多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的主要内容,如果未能解决你的问题,请参考以下文章