在linux下分配机器IP

时间:2014-09-28 14:56:02

标签: linux networking interface ip

我有一台带3个接口的机器,两个公共接口和一个本地接口。它们都来自相同的IP范围。机器上的所有外部可访问服务都使用内部IP。

但是,当进程打开与外界的连接时,数据包中的源地址将设置为公共接口的源地址,用于发送数据包。

在Linux下是否可以强制所有源地址都是特定接口的地址,即使该数据包将通过其他接口路由?

假设我们有一台带有3个接口的机器,A.B.C.1,A.B.C.2,A.B.C.3。其中A.B.C.1和A.B.C.2连接到互联网(并且A.B.C.0 / 24被路由到它们)。机器上的所有服务都听A.B.C.3。是否可以保证源自机器的所有数据包都具有A.B.C.3的源地址,即使它们将通过A.B.C.1或A.B.C.2离开机器?

在打开传出连接的套接字时指定源地址不是解决方案;我们正在讨论无法改变的现有程序。此外,它也适用于ICMP。

感谢。

1 个答案:

答案 0 :(得分:0)

这可以通过iptables

来实现
sudo iptables -t nat -A OUTPUT -j SNAT --to A.B.C.3

如果iptables服务未运行,可以通过以下命令激活它:

sudo service iptables restart