为了学习目的,我使用ip
PC 网络参数配置路由器,而不是通过 DHCP 接收参数。
根据 DHCP(路由器),这是当前的网络参数:
wlp1s0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.1.33 netmask 255.255.255.0 broadcast 192.168.1.255
路线如下:
ip route
default via 192.168.1.1 dev wlp1s0 proto dhcp metric 600
169.254.0.0/16 dev wlp1s0 scope link metric 1000
192.168.1.0/24 dev wlp1s0 proto kernel scope link src 192.168.1.33 metric 600
所以我想使用命令重现类似的配置。这是我遵循的程序:
- 关闭无线网卡通讯:
ip link set wlp1s0 down
- 我的 W. 卡的新 IP 地址:
sudo ip addr add 192.168.1.42/24 dev wlp1s0
- 添加默认网关:
sudo ip route add default via 192.168.1.1
但是我收到此错误:Error: Nexthop has invalid gateway.
我还不确定 netplan 是否应该将 dhcp4 设置为 false。但无论如何,得到的错误对我来说是意料之外的。有什么帮助吗?
有什么帮助吗?
编辑:我正在跟进这个 Ubuntu 教程
答案1
您正在通过已关闭的 NIC 添加路由(您在第一个命令中将其关闭)。这不起作用;要添加默认路由,通过它的接口应该处于打开状态。
我不明白你为什么要拒wlp1s0
绝。你应该在 NIC 正常运行时操作网络地址。
答案2
路由需要指定传出接口。虽然在添加路由时,您可以在指令中省略该接口间接路线,前提条件是直接的网关的路由已经添加,因此ip route
(或者可能是内核;我真的不知道它是像静态还是动态的“链接”)可以从前者中获取接口。
因为你关闭了界面,前缀路由(例如192.168.1.0/24 dev wlp1s0
),这是一条覆盖 的直接路由192.168.1.1
,除非您再次启动它,否则内核不会将其添加到路由表中。
因此,该网关是“无效的”,因为在路由表中找不到覆盖该地址的路由。
事实上,如果你尝试192.168.1.1 dev wlp1s0
手动添加例如,你会看到原因:
$ ip a show wlan0
3: wlan0: <BROADCAST,MULTICAST> mtu 1500 qdisc noqueue state DOWN group default qlen 1000
link/ether 3c:9c:0f:7d:89:3a brd ff:ff:ff:ff:ff:ff
inet 192.168.1.150/24 scope global wlan0
valid_lft forever preferred_lft forever
$ sudo ip r add 192.168.1.1 dev wlan0
Error: Device for nexthop is not up.
(当然,ip r
也不会输出任何内容。)