服务器固定IP(固定出口IP)去访问外部服务

背景

服务器上有多个IP,那么在服务器请求外部服务的时候,到底是使用哪个IP呢?如果要使用特定的IP去请求外部服务,该如何设置呢?

 

分析

遇到一个实际的场景:

我们产品和其他产品联调,我们的服务器有多个IP。对方需要对我们的IP进行加白。但是对方需要我们指定的IP来加白,而不是使用当前默认的。所以,我们需要修改对外访问的IP。

 

使用下面命令可以查看路由表:

route -n

beb8ed60e4394073ad14234c38ce8de1.png

 

可以看到,当前的网关为10.58.115.65,本机使用了10.58.115.75和10.58.115.74。默认情况下,出去的IP使用的是10.58.115.75 ,现在需要固定10.58.115.74作为出口IP。如何做呢?

 

要实现这个效果,我们只需要在路由表中添加一个规则,将请求到对方IP的路由指定源IP即可。

向路由表添加规则,使用ip route add命令。

语法:

ip route add <Destination> via <Gateway> src <SIP> dev <Use Iface>

Destination为目的IP,via表示通过那个网关,Gateway表示网关。SIP就是源IP,即服务器的出口IP。dev表示设备,即通信使用的网卡Use Iface。

 

示例:

我们要指定请求1.1.1.1的时候,将源IP固定为10.58.115.74。

 

命令如下:

ip route add 1.1.1.1 via 10.58.115.65 src 10.58.115.74 dev eth0

5cdaf544f47840fb8188df0ae5daa8d1.png

 

添加完就是这个效果,而且就立即生效了。

 

注意,千万不要删除默认的路由,即Destination 为0.0.0.0的这一条,否则本机就无法访问了。

 

通过新增一条指定的目的IP的规则,不影响默认的请求的转发。

下面是几个常用的操作:

ip route { add | del | change | append | replace } ROUTE

花括号内为动作,就是新增、删除、修改、追加和替换。ROUTE就是后面的路由规则了。

有了add的示例,相信其他的也是一用就会的了。

 

总结

路由表默默的为服务器工作着,一般情况不会去手动设置。当有特殊的路由转发请求时,就需要对路由表进行操作了。

 

来源: http://www.yu7s.com/article/20240319203836581.html

 

 

上一篇:用vscode仿制小米官网


下一篇:2024年github之node排行榜top50