![同一接口上但不同子网上的第二个 IP 地址](https://linux22.com/image/589467/%E5%90%8C%E4%B8%80%E6%8E%A5%E5%8F%A3%E4%B8%8A%E4%BD%86%E4%B8%8D%E5%90%8C%E5%AD%90%E7%BD%91%E4%B8%8A%E7%9A%84%E7%AC%AC%E4%BA%8C%E4%B8%AA%20IP%20%E5%9C%B0%E5%9D%80.png)
在 CentOS 5.7 64 位中,是否可以在一个接口(例如 eth0)上拥有第二个 IP 地址 - 别名接口配置 - 在不同的子网中?
这是 eth0 的原始配置
more etc/sysconfig/network-scripts/ifcfg-eth0
# Broadcom Corporation NetXtreme BCM5721 Gigabit Ethernet PCI Express
DEVICE=eth0
BOOTPROTO=static
BROADCAST=192.168.91.255
HWADDR=00:1D:09:FE:DA:04
IPADDR=192.168.91.250
NETMASK=255.255.255.0
NETWORK=192.168.91.0
ONBOOT=yes
这是 eth0:0 的配置
more etc/sysconfig/network-scripts/ifcfg-eth0:0
# Broadcom Corporation NetXtreme BCM5721 Gigabit Ethernet PCI Express
DEVICE=eth0:0
BOOTPROTO=static
BROADCAST=10.10.191.255
DNS1=10.10.15.161
DNS2=10.10.18.36
GATEWAY=10.10.191.254
HWADDR=00:1D:09:FE:DA:04
IPADDR=10.10.191.210
NETMASK=255.255.255.0
NETWORK=10.39.191.0
ONPARENT=yes
由于有两个不同的网关,resolv.conf 文件应该如何更改?还需要进行其他更改吗?
答案1
是否可以在一个接口(例如 eth0)上拥有第二个 IP 地址 - 别名接口配置 - 在不同的子网中?
当然,没有什么可以阻止你这样做。网络接口将看到其他两个子网的广播,但除非你的网络非常繁忙,否则这可能不会产生很大的影响。
由于有两个不同的网关,resolv.conf 文件应该如何更改?还需要进行其他更改吗?
您不能有 2 个默认网关。从其中一个接口中删除网关。像这样设置 2 个网关根本没什么用。只会使用其中一个网关。
DNS 解析 (resolv.conf) 实际上与您的路由配置无关。在 Linux 上,DNS 解析是系统范围的,与接口配置完全无关。只需在 resolv.conf 中放置几个有效的 DNS 服务器即可。如果您需要更高级的功能来将一些请求发送到不同的上游服务器,您可能需要安装类似 DNSMasq 的东西。
答案2
正如前面提到的,在一个网络上有两个不同的子网并没有错,只要您连接到两个网络的同一个交换机/交换机组并且没有对其或任何其他安全区域应用任何 VLAN 规则,它就可以工作。
无论您有多少个 IP 地址/子网,始终只有一个默认网关。当 IP 地址与路由表中的任何其他路由都不匹配时,将使用默认网关。因此,在您的示例中,对于不属于 192.168.91.0/24 或 10.10.191.0/24 网络的每个请求,都将被重定向到默认网关。
但如果您愿意,您仍然可以添加手动路由。假设您有第三个私有网络 10.10.200.0/24,可通过 10.10.191.0/24 访问。您需要添加静态路由:
ip route add 10.10.200.0/24 via 10.10.191.254 dev eth0:0
Resolv.conf 与网关无关,用于 DNS 解析。阅读此处了解更多信息。
答案3
通常,/etc/resolv.conf 文件是 DNS 相关选项(名称服务器、搜索域、ecc)的配置文件。在基于 Red-Hat 的发行版中,我建议您创建两个文件:
/etc/sysconfic/network-script/route-eth0
/etc/sysconfic/network-script/route-eth0:0(我从未见过这个)在每个接口中,您可以为特定的接口定义所有路由选项。
这是不正确的。虽然在 RHEL/CentOS 系统上,在多个文件中处理以太网接口是可以接受的,但路由的处理方式不同。特定接口的路由必须集中放置在该接口的单个文件中。换句话说,如果您需要为 eth0:1、eth0:2 和 eth0:3 设置自定义路由,则必须将它们全部放置在:
/etc/sysconfig/network-script/route-eth0
文件名中不能附加像 :1 这样的东西。
先前的答案建议为新界面创建一个文件:
/etc/sysconfig/network-scripts/ifcfg-eth0:1
这是正确的,但您不应在其中放置 GATEWAY= 指令。这将导致创建多个默认网关,从而导致路由行为不当。保留 GATEWAY= 选项并将所需路由添加到:
/etc/sysconfig/network-script/route-eth0
答案4
通常,/etc/resolv.conf 文件是 DNS 相关选项(名称服务器、搜索域、ecc)的配置文件。在基于 Red-Hat 的发行版中,我建议您创建两个文件:
/etc/sysconfig/network-script/route-eth0
/etc/sysconfig/network-script/route-eth0:0 (I have not ever seen this)
在每个文件中,您可以为特定接口定义所有路由选项。您放入这些规则的规则将在启动时加载。建议将默认网关放在 /etc/sysconfig/network 文件中。