我在 ESXi 5 上运行 CentOS 6.2。该机器有 2 个 NIC,eth0 连接到 Internet,eth1 连接到 LAN。eth0 有一个 colo 提供的 IP 地址,因此网络掩码为 255.255.255.255。网关当然位于不同的子网上。启动后我无法访问 Internet,我通过运行以下命令来解决这个问题:
route add -host x.x.x.x dev eth0
route add default dev eth0 gw x.x.x.x
我希望这是自动的。目前我已将这些行添加到 rc.local 脚本中。我尝试了推荐的添加 route-eth0 脚本的路径,但它不起作用。我不知道代表路由命令的正确语法是什么,也不知道如何查看我的尝试生成的错误。可以通过 route-eth0 或其他预期的 CentOS 方式完成此操作吗?
[澄清]
我的ifcfg-eth0:
DEVICE="eth0"
NM_CONTROLLED="yes"
ONBOOT=yes
HWADDR=xxx
TYPE=Ethernet
BOOTPROTO=none
IPADDR=82.166.38.XX
PREFIX=32
GATEWAY=82.166.190.YYY
DNS1=xxx
DOMAIN=xxx
DEFROUTE=yes
IPV4_FAILURE_FATAL=yes
IPV6INIT=no
Aseq 的第二种情况非常接近,但实际的 IP 分配更复杂。我得到了 82.166.38.XX、82.166.38.XX+2,但它们只能通过 82.166.190.YYY 访问,因此如果我输入非 255.255.255.255 的网络掩码,这些机器将无法通信。
我认为如果我可以将路由语法转换为 ip addr 语法,它应该可以工作。
答案1
通常,您的 ISP 应该为您提供一个 /30,即 192.0.2.49/30,然后您将使用 192.0.2.49 作为网关,使用 192.0.2.50 作为 eth0 的 IP。但是,如果 ISP 为您提供了一个 IP,例如 192.0.2.80,那么网关通常为 192.0.2.1。
使用第一种情况下的值,您需要编辑 /etc/sysconfig/network-scripts/ifcfg-eth0,它看起来像这样:
DEVICE=eth0
BOOTPROTO=static
ONBOOT=yes
IPADDR=192.0.2.50
NETMASK=255.255.255.252
GATEWAY=x.x.x.x
更改网关:
GATEWAY=192.0.2.49
第二种情况:
DEVICE=eth0
BOOTPROTO=static
ONBOOT=yes
IPADDR=192.0.2.80
NETMASK=255.255.255.0
GATEWAY=x.x.x.x
更改网关:
GATEWAY=192.0.2.1
跑步:
/etc/init.d/network restart