指定主机路由的源 IP 地址

指定主机路由的源 IP 地址

我正在使用 Ubuntu 12.04。我通过编辑 /etc/network/interfaces 为以太网卡分配了两个 IP 地址。现在看起来像这样(跳过与问题无关的行)。

auto eth0
iface eth0 inet static
    address 192.168.60.23
    netmask 255.255.255.0
    gateway 192.168.60.1
    up route add 192.168.60.1 dev eth0
    up route add 10.0.1.1 dev eth0
    up route add 192.168.60.151 gw 10.0.1.1

auto eth0:1
iface eth0:1 inet static
    address 192.168.60.101
    netmask 255.255.255.0

但是现在我想让去往 192.168.60.151 的数据包离开我的机器时使用第二个 IP 地址(192.168.60.101)作为源地址。

我尝试将 src 192.168.60.101 添加到相应的上行路由行,但没有成功。我还尝试将此行移至 eth0:1 块,但也没有成功。当我执行 ip route get 192.168.60.151 时,我总是通过 10.0.1.1 dev eth0 src 192.168.60.21 获得 192.168.60.151。

我在 Google 上搜索,但没有找到如何修改传出数据包的源地址。

答案1

这应该可以工作。它使用 ip(8) 语法而不是 route(8),但其他方面都相同。必须在第二个接口定义上设置到 192.168.60.151 的路由,否则 src 地址尚未设置,命令会失败。

auto eth0
iface eth0 inet static
    address 192.168.60.23
    netmask 255.255.255.0
    gateway 192.168.60.1
    # The next line should not be necessary, the target is on the same subnet and link
    # up ip route add 192.168.60.1 dev eth0
    up ip route add 10.0.1.1 dev eth0

auto eth0:1
iface eth0:1 inet static
    address 192.168.60.101
    netmask 255.255.255.0
    # ip(8) uses 'via' instead of 'gw'
    up ip route add 192.168.60.151 via 10.0.1.1 src 192.168.60.101

相关内容