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

多IP情况下指定具体的出口IP,第1张

在项目中遇到服务器有两个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,确认上面的规则已经添加成功

这个可以编写一个shell 脚本来实现,该shell脚本写入用户的.profile文件,在用户登陆时自动执行该脚本。

该shell的功能简要设计如下:

1) 读取本地一个隐含文件,如:闭仿物.abc。该隐含文件中记录了用户登陆的IP地址

2) 若该隐含文件不存在或为空,则说明该用户第一次登陆系统大埋,就把用户当前的IP地址写入隐含文件中

3) 判断当前用户的IP地址,是否与隐含轿液文件中的一致。若不一致logout,若一致shell结束


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12451301.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-25
下一篇 2023-05-25

发表评论

登录后才能评论

评论列表(0条)

保存