在 GCE 中手动设置无类静态路由

在 GCE 中手动设置无类静态路由

在 GCE 中,DHCP 服务器返回带有 32 位掩码的 IP 地址。使该实例成为其子网中唯一的实例。它还返回几个需要配置的静态路由 (RFC3442)。响应示例如下

udhcpc:  interface=eth0                                                                           
udhcpc:  ip=10.240.0.2                                                                                
udhcpc:  siaddr=10.240.0.1                                                                   
udhcpc:  subnet=255.255.255.255                                     
udhcpc:  mask=32                                                                                
udhcpc:  router=10.240.0.1                                                                      
udhcpc:  staticroutes=10.240.0.1/32 0.0.0.0 0.0.0.0/0 10.240.0.1                                                       
udhcpc:  opt53=05                                                                

使用DHCP服务器,这很完美,客户端获取路由并将其推送到路由表。但是,在这里我使用动态主机配置协议我需要自己添加它们。我尝试使用命令添加它们ip,但似乎不起作用。

ip addr add 10.240.0.2/32 dev eth0
ip route add 10.240.0.1 dev eth0 proto kernel scope link
ip route add 0.0.0.0/0 via 10.240.0.1

但这似乎不起作用。

/ # ping 8.8.8.8 -c 10
PING 8.8.8.8 (8.8.8.8): 56 data bytes

--- 8.8.8.8 ping statistics ---
10 packets transmitted, 0 packets received, 100% packet loss

添加这些路线时我是否遗漏了什么?

答案1

-O 121udhcpc 默认不请求无类静态路由,您需要通过在命令行中添加或来指示它这样做-O staticroutes。或者,可以配置 DHCP 服务器以强制发送选项。

然后应该通过 udhcpc 钩子脚本配置路由。您可以查看 Gentoo 的 netifrcudhcpc-hook.sh对于执行此操作的实现。

答案2

我看到这个帖子是两年半前创建的,您能否澄清一下您是否还存在这个问题?

同时,我们需要牢记的第一个概念是 GCP 上的 DHCP 无法修改。此外,修改实例内的 NIC 设置可能会导致类似的中断。

对于该特定问题,我建议您检查 GCP 上的路由部分。通常,您有一个默认 Internet 网关和一个到 Internet 的默认路由,它可能会与新的 IP 子网和配置混淆或出错。

相关内容