【问题标题】:Bind outgoing traffic to eth0 instead of eth0:1将传出流量绑定到 eth0 而不是 eth0:1
【发布时间】:2012-01-21 20:12:46
【问题描述】:

我们向 linux (debian) 机器添加了第二个 IP 地址,以便为新的 Apache vhost 实施第二个 SSL 证书。

我们的ifconfig 现在看起来像这样:

eth0      Link encap:Ethernet  Hardware Adresse 00:0c:29:1b:ab:6c
          inet Adresse:999.999.999.39  Bcast:999.999.999.63  Maske:255.255.255.192
          inet6-Adresse: (...)/64 Gültigkeitsbereich:Verbindung
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metrik:1
          RX packets:219336884 errors:0 dropped:0 overruns:0 frame:0
          TX packets:223169420 errors:0 dropped:0 overruns:0 carrier:0
          Kollisionen:0 Sendewarteschlangenlänge:1000
          RX bytes:1971307659 (1.8 GiB)  TX bytes:713489565 (680.4 MiB)

eth0:1    Link encap:Ethernet  Hardware Adresse (...)
          inet Adresse:999.999.999.40  Bcast:999.999.999.63  Maske:255.255.255.192
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metrik:1

问题:所有传出流量(MySQL 到外部数据库服务器的连接,来自 postfix 的传出 SMTP 连接)现在似乎通​​过 eth0:1 离开,因此第二个(新)IP 999.999.999.40。

我们如何强制所有传出流量通过 eth0,IP 地址 999.999.999.39 离开?

路线输出:

[n1 ~ #] route
Kernel-IP-Routentabelle
Ziel            Router          Genmask         Flags Metric Ref    Use Iface
localnet        *               255.255.255.192 U     0      0        0 eth0
10.10.10.0      *               255.255.255.0   U     0      0        0 eth1
default         gateway4.XXX    0.0.0.0         UG    0      0        0 eth0
default         gateway4.XXX    0.0.0.0         UG    0      0        0 eth0

找到解决方案:

感谢您的提示,ip route 是可行的方法,现在它可以正常工作了。

ip rule add from 999.999.999.39 table t1
ip rule add from 999.999.999.40 table t2
ip route del default via 999.999.999.1
ip route add default 999.999.999.1 dev eth0 table t1
ip route flush cache

【问题讨论】:

  • 你能追加ip route的输出吗?
  • eth0:1 实际上不是一个接口(你被 ifconfig 开玩笑了——别再使用它了)。
  • 我没听错吧?您有一台具有多个 IP 的服务器。你有多个虚拟主机的 Apache。看起来,我也有类似的问题。你能看看我的情况吗?如果相同,则可以恢复由您的解决方案命令进行的更改? serverfault.com/questions/511793/…

标签: linux interface ifconfig


【解决方案1】:

我认为您必须使用route 命令来告诉系统如何路由数据包。 类似的东西:

route add -net APACHE_VHOST_IP netmask 255.255.255.0 dev eth0:1

强制APACHE_VHOST_IP目的地的数据包使用eth0:1接口。

route add -net MYSQL_SERVER_IP netmask 255.255.255.0 dev eth0

强制 MYSQL_SERVER_IP 目的地的数据包使用 eth0 接口。

【讨论】:

  • 这将使得定义所有目标 IP 成为必要,不是吗?我想强制所有传出流量到 eth0。 eth0:1 实际上只需要监听
  • 然后定义到eth0的默认路由
  • 如果您想监听 eth0:1 并将 eth0:1 上的传入连接的传出数据包发送到 eth0,这是不可能的。 IP 协议就是不能这样工作,远程端无法识别数据包。
  • 感谢您的帮助,请参阅我添加到问题中的解决方案。
【解决方案2】:

将此添加到/etc/sysconfig/network

GATEWAYDEV=eth0

强制default gatewayeth0 接口

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-11-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-14
    • 2010-10-12
    相关资源
    最近更新 更多