我有一台运行 Ubuntu Server 的服务器,在单个 NIC 上有四个 IP 地址。
eth0 192.168.1.100
eth0:0 192.168.1.101
eth0:1 192.168.1.102
eth0:2 192.168.1.103
Run Code Online (Sandbox Code Playgroud)
(以 192.168.xx 为例,假设这些是 NAT-ed 到一系列公共 IP 地址)
我们的一个客户通过 FTP 发布他们的库存,因此我们每晚登录以从他们的服务器下载一个大文件。他们的防火墙希望我们的(被动)FTP 连接从 192.168.1.100 建立。
鉴于我的服务器在一个适配器上逻辑上有四个 IP 地址,操作系统如何确定哪个 IP 地址用作出站 TCP/IP 连接的源?
假设我在 192.168.1.101 上通过 ssh 进入我的服务器并以交互方式运行 FTP。出站 TCP/IP 连接是否会使用 192.168.1.101,因为操作系统知道这是连接我的 shell 的接口?
如果 FTP 任务通过没有 shell 的 cron 作业以非交互方式运行怎么办?
你可能会说,这让我很困惑,所以我希望我的问题至少是有道理的。
编辑
为了澄清我问的原因——我没有对路由表进行任何更改,它实际上将“eth0”列为 0.0.0.0 路由的 IFace。但是,所有迹象表明它实际上使用 eth0:0 作为源。
Destination Gateway Genmask Flags Metric Ref Use Iface
192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
0.0.0.0 192.168.1.1 …Run Code Online (Sandbox Code Playgroud) 使用 IP 别名,一个 linux 机器已经在同一个 NIC 上绑定了来自同一个子网的多个 ip 地址。所以 ifconfig 显示设备 eth0 with , eth0:1 with 和 eth0:2 with 。
Linux 如何确定用于传出 ip 流量的 IP 源地址?有没有办法定义某些传出流量应该使用哪个源 IP 地址?