![是否可以根据源端口强制 IP 源?](https://linux22.com/image/620464/%E6%98%AF%E5%90%A6%E5%8F%AF%E4%BB%A5%E6%A0%B9%E6%8D%AE%E6%BA%90%E7%AB%AF%E5%8F%A3%E5%BC%BA%E5%88%B6%20IP%20%E6%BA%90%EF%BC%9F.png)
我对路由有疑问。我搜索了互联网,找到了一些提示,但无法让它工作。
我有一台具有 2 个公有 IP 和相同网关的服务器。假设 1.1.1.1(在 eth0 上)和 1.1.1.2(在 eth0:0 上),网关为 1.1.1.254(网络 /24)。
还有第二台服务器(不是我的),其 IP 为 2.2.2.2/24。
在这两台服务器之间,我有 radius 和 http flux。
目前,从我的服务器到另一台服务器的所有流量都来自 IP 1.1.1.1。另请注意,Radius 监听 IP 1.1.1.2 和端口 1812 和 1813(均为 UDP)。
我想要做的是,只有来自 Radius 端口的数据包才会以源 IP 1.1.1.2 发送。所有 HTTP 流量都必须像以前一样来自 1.1.1.1。
答案1
只需让您的 radius 服务器仅绑定到 1.1.1.2。这样它就只会与 IP 1.1.1.2 通信。这正是其bind()
设计目的。
请注意,在 Linux 上,bind()
不限制可以使用哪个网络接口进行通信。它只是限制可以使用哪个 IP 地址。
当然,如果客户端无论如何都要连接到 1.1.1.1,它将被拒绝。但无论如何,这种通信都行不通:如果你无论如何都以 1.1.1.2 的身份回复,那么联系 1.1.1.1 的主机将无法识别这两个 IP 属于同一主机。
另外,您的帖子表明您正在使用ifconfig
和接口别名。请注意,ifconfig
已经过时,接口别名已被严重弃用。内核自古以来就具有向接口添加多个 IP 地址的本机功能,而此接口别名只是旧应用程序(如)的兼容层ifconfig
。请使用ip
iproute2 包中的。 ìp addr
和ip route
将向您显示网络接口的真实配置。
答案2
如果接口上有主 IP 和辅助 IP,则连接起源该机器默认使用主 IP。我认为你无法轻易更改它。