对于挂载 Infiniband 卡的服务器,当我使用该ifconfig命令时,我收到以下警告:
Ifconfig uses the ioctl access method to get the full address
information, which limits hardware addresses to 8 bytes.
Because Infiniband address has 20 bytes, only the first 8 bytes
are displayed correctly.
Ifconfig is obsolete! For replacement check ip.
Run Code Online (Sandbox Code Playgroud)
我应该停止使用ifconfig吗?它是否已被弃用以支持该ip命令?还是会在近期更新?
注意:这个问题和答案是关于GNU/Linux 的“主要”发行版的。不应假定该信息适用于所有发行版,尤其不适用于其他操作系统。
很多人都说该ifconfig命令已被弃用而赞成该命令ip(至少在 linux 上)。
这通常被用作论证,从转换ifconfig到ip(见的一些意见和答案,我应该用ifconfig退出?)。
我们在哪里可以找到关于此的声明(即在哪里声明ifconfig将来不支持)?
昨天,我在数据中心快速重新安装了一台(物理)服务器,由于时间紧迫,无法轻松访问我们的数据库,我只是为它分配了一个我知道可用的 IP,以便我以后访问分配正确的地址并从更温暖的地方继续配置。
今天我登录到服务器(在 172.16.130.10/22)并执行以下操作:
ip addr add 172.16.128.67/22 dev eth0
Run Code Online (Sandbox Code Playgroud)
从我本地工作站上的终端,我检查了它对新地址的 ping 响应并通过它登录:
$ ping 172.16.128.67
PING 172.16.128.67 (172.16.128.67) 56(84) bytes of data.
64 bytes from 172.16.128.67: icmp_req=2 ttl=62 time=3.61 ms
64 bytes from 172.16.128.67: icmp_req=3 ttl=62 time=4.87 ms
^C
$ ssh 172.16.128.67
Run Code Online (Sandbox Code Playgroud)
到目前为止一切顺利,我通过新的 IP 地址连接,旧的不再需要。我继续删除它:
ip addr del 172.16.130.10/22 dev eth0
Run Code Online (Sandbox Code Playgroud)
但是一旦我点击Enter我的 SSH 会话就冻结了,我无法再连接了。我不得不请求现场操作员为我重新启动服务器。
我哪里做错了?为什么删除该地址会终止我的连接?
我阅读了手册页,ip但仍然不明白是什么src,我找不到太多文档。
请,如果你能彻底解释它或指向一些链接,它是一个很好的答案。
我需要知道如何列出所有路由表的 ID。例如,我可以运行:
ip rule add fwmark 2 table 104
ip route add dev eth0 default via 192.168.3.7 table 104
Run Code Online (Sandbox Code Playgroud)
调用ip rule list显示:
0: from all lookup local
32765: from all fwmark 0x2 lookup 104
32766: from all lookup main
32767: from all lookup default
Run Code Online (Sandbox Code Playgroud)
并调用ip route show table 104显示:
default via 192.168.3.7 dev eth0
Run Code Online (Sandbox Code Playgroud)
如果我然后调用ip rule del table 104,随后的调用ip rule list显示:
0: from all lookup local
32766: from all lookup main
32767: …Run Code Online (Sandbox Code Playgroud) 假设您已经在其中一个 Linux 系统上配置了 IPv6 代理 NDP,如下所示:
ip -6 neighbor add proxy 2001:db8:1234::5 dev eth1
Run Code Online (Sandbox Code Playgroud)
您如何验证配置是否生效?ip -6 neighbor show似乎不显示代理条目,ip -6 neighbor show proxy也不是受支持的命令。
我一直在 Linux 上使用自定义路由表,我对“ip route”命令的一些文档和行为感到有些困惑。似乎唯一有效的值应该是 0-255 加上 /etc/iproute2/rt_tables 中定义的名称:
255 local
254 main
253 default
0 unspec
Run Code Online (Sandbox Code Playgroud)
这将为自定义表留下 1-252。尝试使用未定义的表名会出现错误:
$ ip route show table kermit
Error: argument "kermit" is wrong: table id value is invalid
Run Code Online (Sandbox Code Playgroud)
但是,似乎我可以使用远高于 255 的数字而不会出错:
$ ip route show table 1000
[no output]
$ ip route add 10.10.10.0/24 dev eth0 table 1000
[no output]
$ ip route show table 1000
10.10.10.0/24 dev eth0 scope link
Run Code Online (Sandbox Code Playgroud)
在某些时候,事情变得更加奇怪。在 maxint (2^31) 处,它“溢出”到本地表 (255):
$ ip route show table 2147483647
[no output] …Run Code Online (Sandbox Code Playgroud) 我正在从旧的网络工具转换我的脚本:
ifconfig eth0 192.168.2.1 netmask 255.255.255.0
Run Code Online (Sandbox Code Playgroud)
到iproute2:
ip link set eth0 up
ip addr add 192.168.2.1/24 dev eth0
Run Code Online (Sandbox Code Playgroud)
我注意到默认情况下新命令没有设置广播地址。
什么是:
1: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP
link/ether 1c:6f:65:c5:d6:d7 brd ff:ff:ff:ff:ff:ff
inet 192.168.2.1/24 brd 192.168.2.255 scope global eth0
Run Code Online (Sandbox Code Playgroud)
就是现在:
1: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP
link/ether 1c:6f:65:c5:d6:d7 brd ff:ff:ff:ff:ff:ff
inet 192.168.2.1/24 scope global eth0
Run Code Online (Sandbox Code Playgroud)
我可以将广播地址添加到ip addr命令中,但我想知道是否需要它?首先,这个广播地址是如何以及在哪里使用的?如果未设置,可能会破坏什么?其次,默认情况下,路由表看起来仍然具有正确的条目:
# ip route show table local dev eth0 scope link
broadcast 192.168.2.0 proto kernel src 192.168.2.1
broadcast …Run Code Online (Sandbox Code Playgroud) 如果我将一个接口临时移动到一个 netns 中
ip link set eth10 netns myns
Run Code Online (Sandbox Code Playgroud)
然后它不再在根目录中可见,仅在名称空间 myns 中可见。
我如何将其移回,例如(这些显然不存在):
ip link unset eth10
Run Code Online (Sandbox Code Playgroud)
也许
ip link set eth10 netns root
Run Code Online (Sandbox Code Playgroud)
或类似?