在 CentOS 中为每个程序设置特定的 IP

在 CentOS 中为每个程序设置特定的 IP

我有一个分配了多个 IP 的 VPS。在这个 VPS 中,我运行了一些在网络上发出请求的程序,出于某种原因,所有请求都使用我的 VPS 的一个特定 IPv4。

但是我还有许多其他 IPv4 和 IPv6,但从未使用过。是否可以使某些程序使用特定 IP?也许,firewalld 中的某些规则使程序使用特定 IP?我的 eth0 使用我的 VPS(Linode)的默认配置,并且运行良好,我可以看到分配给我的 VPS 的所有 IP。但是,我所有程序的出站流量仅使用一个特定的 IPv4。

知道如何实现这个目标吗?

答案1

这种情况并不常见,我认为一个 IP 用于传出流量是合乎逻辑的,因为该 IP 链接到您的默认网关(假设)。一台机器上不可能有多个网关,并且会产生路由问题。

您可以使用基于源的路由来执行此操作。

以下是一个一般性的例子:

  1. ps使用或识别进程 IDpgrep

  2. 编辑或创建文件/etc/iproute2/rt_tables并添加新条目。

    200 mytable

  3. 然后使用 ipables“标记数据包”iptables -t mangle -A OUTPUT -m owner --pid-owner <YourProgramPID> -j MARK --set-mark 1

  4. 创建路由表ip rule add fwmark 1 table mytable

  5. 配置路由表ip route add default via <DesiredIPAddress> dev eth0 table mytable

  6. 核实ip route show table mytable

相关内容