CentOS 6,2 个网卡,1 个网关,1 个网卡无法正常工作

CentOS 6,2 个网卡,1 个网关,1 个网卡无法正常工作

我安装了 CentOS 6,有 1 个网卡,eth0,运行正常

我添加了另一个 NIC。eth1两个 NIC 都位于同一个交换机和同一个 LAN 上。

我将其复制ifcfg-eth0ifcfg-eth1,然后简单地更改了DEVICE=IPADDR=HWADDR=行。

设置完成后/etc/sysconfig/network-scripts/ifcfg-eth1,我可以eth1从外部机器 ping 一整天,一切正常。

但是如果我尝试从服务器内部 ping (ping -Ieth1 google.com),则不会收到任何响应,而ping -Ieth0 google.com工作正常。

我已从和中删除了行GATEWAY=,并添加了。ifcfg-eth0ifcfg-eth1GATEWAY=/etc/sysconfig/network

这是我的混淆配置文件:

eth0
DEVICE=eth0
BOOTPROTO=静态
IPADDR=192.168.1.40
NETMASK=255.255.255.0
HWADDR=00:00:23:45:67:8F
NM_CONTROLLED=
否 ONBOOT=是
TYPE=以太网
IPV6INIT=否
DNS1=192.168.1.240
DNS2=192.168.1.244

eth1
DEVICE=eth1
BOOTPROTO=静态
IPADDR=192.168.1.41
NETMASK=255.255.255.0
HWADDR=00:00:23:45:67:99
NM_CONTROLLED=
否 ONBOOT=是
TYPE=以太网
IPV6INIT=否
DNS1=192.168.1.240
DNS2=192.168.1.244

网络
NETWORKING_IPV6=否
HOSTNAME=我的服务器
NETWORKING=是
GATEWAY=192.168.1.2

我的iptables -L -v目前完全是空的。而且我没有使用 SELinux。

答案1

永远不要将两个接口设置为同一个子网,这可能不会按预期工作。如果您检查 的输出ip ro,您会明白 Linux 主要基于基于目的地的路由。尽管基于源的路由是可能的,实际上很少这样做。无论出于什么原因,我一生中只记得有一次需要这样做。

你误解ping -I了什么,因此造成了混乱。来自 man:

-I 接口地址

Set source address to specified interface address.

Ping 不会通过 -I 接口发送数据包。当数据包准备发送时,内核会查看目标 IPip ro,并根据这两点决定使用哪个接口。它不考虑数据包的源 IP

-I 用于设置数据包的源 IP。当数据包流出时,交换机知道您的两个 IP 都来自 eth0 的 MAC,因此它会将响应发送到那里。但 eth0 会丢弃所有未寻址到其自身 IP(或广播)的内容。除了您在 中看到的内容之外,eth0 和 eht1 之间没有“神奇的内部桥接”。ip ro因此答案永远不会到达 eth1。

ip ro已弃用的 的现代替代品route

由于您使用相同的交换机/网关,您可能希望粘合eth0 和 eth1。然后在 bond0 接口 (ifcfg-bond0) 上设置两个 IP 地址。这是标准做法,效果很好。

为了完全分离 eth0 和 eth1 之间的流量,最好将 eth1 设置为不同的 IP 子网,例如 192.168.2.40,并使用不同的路由器/网关:)

答案2

net.ipv4.conf.default.rp_filter = 2
net.ipv4.conf.all.rp_filter = 2

当出站流量的路由与入站流量的路由不同时丢弃数据包

答案3

丹尼尔-

您的问题似乎是由于预期配置的限制而存在的。您在同一个 LAN/子网上有两个接口,但其中一个必须是默认路由。运行此命令以验证您的路由是否默认为 eth0,这将表明当您尝试强制通过 eth1 进行流量传输时,您将无法访问网络外部的任何设备。

route

它看起来应该是这样的:

内核 IP 路由表 目标网关 Genmask 标志 度量参考 使用 Iface

192.168.1.0 * 255.255.255.0 U 0 0 0 eth0

本地链路 * 255.255.0.0 U 1002 0 0 eth0

默认 192.168.1.0 0.0.0.0 UG 0 0 0 eth0

为了进行健全性检查,请尝试通过该端口 ping 一下 LAN 本地的某些设备:

ping -Ieth1 192.168.1.2

相关内容