我有一个分配了多个 IP 的 VPS。在这个 VPS 中,我运行了一些在网络上发出请求的程序,出于某种原因,所有请求都使用我的 VPS 的一个特定 IPv4。
但是我还有许多其他 IPv4 和 IPv6,但从未使用过。是否可以使某些程序使用特定 IP?也许,firewalld 中的某些规则使程序使用特定 IP?我的 eth0 使用我的 VPS(Linode)的默认配置,并且运行良好,我可以看到分配给我的 VPS 的所有 IP。但是,我所有程序的出站流量仅使用一个特定的 IPv4。
知道如何实现这个目标吗?
答案1
这种情况并不常见,我认为一个 IP 用于传出流量是合乎逻辑的,因为该 IP 链接到您的默认网关(假设)。一台机器上不可能有多个网关,并且会产生路由问题。
您可以使用基于源的路由来执行此操作。
以下是一个一般性的例子:
ps
使用或识别进程 IDpgrep
编辑或创建文件
/etc/iproute2/rt_tables
并添加新条目。200 mytable
然后使用 ipables“标记数据包”
iptables -t mangle -A OUTPUT -m owner --pid-owner <YourProgramPID> -j MARK --set-mark 1
创建路由表
ip rule add fwmark 1 table mytable
配置路由表
ip route add default via <DesiredIPAddress> dev eth0 table mytable
核实
ip route show table mytable