[译]ip命令:ifconfig 的迭代 - 图1

目的

使用此命令可以显示和配置主机接口的网络参数。

语法

  1. ip OBJECT COMMAND
  2. ip [options] OBJECT COMMAND
  3. ip OBJECT help

了解 ip 命令 对象语法

OBJECTS 可以是以下任一形式,并且可以完整或缩写形式编写:

对象 缩写形式 目的
link l 网络设备。
address a
addr
设备上的协议(IP 或 IPv6)地址。
addrlabel addrl 协议地址选择的标签配置。
neighbour n
neigh
ARP 或 NDISC 缓存条目。
route r 路由表条目。
rule ru 路由策略数据库中的规则。
maddress m
maddr
多播地址。
mroute mr 多播路由缓存条目。
tunnel t 通过 IP 建立隧道。
xfrm x IPsec 协议框架。

若要获取有关每个对象的信息,请使用 help 命令,如下所示:

  1. ip OBJECT help
  2. ip OBJECT h
  3. ip a help
  4. ip r help

警告:必须谨慎执行以下命令。如果出错,您将失去与服务器的连接。在处理基于 ssh 的远程会话时必须特别小心。

ip 命令示例

不要被 ip 命令语法吓倒。让我们通过示例快速开始。

显示有关所有网络接口的信息

键入以下命令以列出并显示所有网络接口上关联的所有 IP 地址:

  1. ip a
  2. # 或
  3. ip addr

输入示例如下:
[译]ip命令:ifconfig 的迭代 - 图2
您可以使用以下语法在 IPv4 和 IPv6 之间进行选择:

  1. ### Only show TCP/IP IPv4 ##
  2. ip -4 a
  3. ### Only show TCP/IP IPv6 ###
  4. ip -6 a

还可以指定和列出特定的接口 TCP/IP 详细信息:

  1. ### Only show eth0 interface ###
  2. ip a show eth0
  3. ip a list eth0
  4. ip a show dev eth0
  5. ### Only show running interfaces ###
  6. ip link ls up

[译]ip命令:ifconfig 的迭代 - 图3

将 IP 地址分配给接口

添加 IPv4/IPv6 地址的语法如下:

  1. ip a add {ip_addr/mask} dev {interface}

要将 192.168.1.200/255.255.255.0 分配给 eth0,请输入:

  1. ip a add 192.168.1.200/255.255.255.0 dev eth0
  2. ip a add 192.168.1.200/24 dev eth0

在接口上添加广播地址

默认情况下,除非显式请求,否则 ip 命令不会设置任何广播地址。因此,设置广播地址的语法如下:

  1. ip addr add broadcast {ADDDRESS-HERE} dev {interface}

可以通过使用 “+” 或 “-” 而不是广播地址来设置/重置主机网络 prex 位。在此示例中,将地址 192.168.1.50 和网络掩码 255.255.255.0 (/24) 与标准广播和标签”eth0Home”添加到接口 eth0:

  1. ip addr add broadcast 172.20.10.255 dev dummy0
  2. ip addr add 192.168.1.50/24 brd + dev eth0 label eth0Home

您可以设置环回设备 lo 的环回地址,如下所示:

  1. ip addr add 127.0.0.1/8 dev lo brd + scope host

从接口中删除 IP 地址

语法如下,用于删除 IPv4/IPv6 地址:

  1. ip a del {ipv6_addr_OR_ipv4_addr} dev {interface}

要从 eth0 中删除 192.168.1.200/24,请输入:

  1. ip a del 192.168.1.200/24 dev eth0

从接口刷新 IP 地址

您可以逐个删除或远程访问 IPv4/IPv6 地址,如上所述。但是,flush 命令可以根据给定条件删除刷新 IP 地址。例如,可以使用以下命令从专用网络 192.168.2.0/24 中删除所有 IP 地址:

  1. ip -s -s a f to 192.168.2.0/24


示例输出:

  1. 2: eth0 inet 192.168.2.201/24 scope global secondary eth0
  2. 2: eth0 inet 192.168.2.200/24 scope global eth0
  3. *** Round 1, deleting 2 addresses ***
  4. *** Flush is complete after 1 round ***

您可以在所有 ppp(点对点)接口上移除 IP 地址:

  1. ip -4 addr flush label "ppp*"

以下是所有以太网接口一个通用示例:

  1. ip -4 addr flush label "eth*"

如何将设备的状态更改为 “up” 或 “down”?

语法如下:

  1. ip link set dev {DEVICE} {up|down}

要使设备 eth1 的状态关闭,请输入:

  1. ip link set dev eth1 down

要使设备 eth1 的状态变为 up,请输入:

  1. ip link set dev eth1 up

如何更改设备的 txqueuelen?

您可以使用 ifconfig 命令或 ip 命令设置设备的传输队列的长度,如下所示:

  1. ip link set txqueuelen {NUMBER} dev {DEVICE}

在此示例中,将 eth0 的默认 txqueuelen 从 1000 更改为 10000:

  1. ip link set txqueuelen 10000 dev eth0
  2. ip a list eth0

如何更改设备的 MTU?

对于千兆位网络,您可以设置最大传输单位 (MTU)大小(巨型帧),以获得更好的网络性能。语法为:

  1. ip link set mtu {NUMBER} dev {DEVICE}

要将设备 eth0 的 MTU 更改为 9000,请输入:

  1. ip link set mtu 9000 dev eth0
  2. ip a list eth0

示例输出:

  1. 2: eth0: mtu 9000 qdisc pfifo_fast state UP qlen 1000
  2. link/ether 00:08:9b:c4:30:30 brd ff:ff:ff:ff:ff:ff
  3. inet 192.168.1.10/24 brd 192.168.1.255 scope global eth1
  4. inet6 fe80::208:9bff:fec4:3030/64 scope link
  5. valid_lft forever preferred_lft forever

显示 neighbour /arp 缓存

语法为:

  1. ip n show
  2. ip neigh show

示例输出(注意:我用字母屏蔽了一些数据):

  1. 74.xx.yy.zz dev eth1 lladdr 00:30:48:yy:zz:ww REACHABLE
  2. 10.10.29.66 dev eth0 lladdr 00:30:48:c6:0a:d8 REACHABLE
  3. 74.ww.yyy.xxx dev eth1 lladdr 00:1a:30:yy:zz:ww REACHABLE
  4. 10.10.29.68 dev eth0 lladdr 00:30:48:33:bc:32 REACHABLE
  5. 74.fff.uu.cc dev eth1 lladdr 00:30:48:yy:zz:ww STALE
  6. 74.rr.ww.fff dev eth1 lladdr 00:30:48:yy:zz:ww DELAY
  7. 10.10.29.65 dev eth0 lladdr 00:1a:30:38:a8:00 REACHABLE
  8. 10.10.29.74 dev eth0 lladdr 00:30:48:8e:31:ac REACHABLE

最后一个字段显示此条目的” 邻居无法访问检测 “计算机的状态:

  1. STALE – 邻居是有效的,但可能已经无法访问,因此内核将尝试在第一次传输时检查它。
  2. DELAY – 数据包已发送到过时的邻居,内核正在等待确认。
  3. 可到达– 邻居是有效的,显然是可到达的。

    添加新的 ARP 条目

    语法为:
    1. ip neigh add {IP-HERE} lladdr {MAC/LLADDRESS} dev {DEVICE} nud {STATE}
    在此示例中,为设备 eth0 上的邻居 192.168.1.5 添加一个永久 ARP 条目:
    1. ip neigh add 192.168.1.5 lladdr 00:1a:30:38:a8:00 dev eth0 nud perm
    其中,
neighbour state (nud) 意义
permanent 邻居条目永久有效,只能在管理上删除
noarp 邻居条目有效。不会尝试验证此条目,但可以在其生存期到期时将其删除。
stale 邻居条目有效但可疑。如果邻居状态有效且此命令未更改地址,则 ip 邻里输入的此选项不会更改相邻状态。
reachable 邻居条目在可访问性超时到期之前一直有效。

删除 ARP 条目

语法如下:

  1. ip neigh del {IPAddress} dev {DEVICE}

设备 eth1 上的邻居 192.168.1.5 的 ARP 条目失效或删除的语法如下。

  1. ip neigh del 192.168.1.5 dev eth1

更改状态,以便设备 eth1 上的邻居 192.168.1.100 访问:

  1. ip neigh chg 192.168.1.100 dev eth1 nud reachable

刷新 ARP 条目

此 flush 或 f 命令通过指定某些条件来刷新 neighbour/arp 表。语法为:

  1. ip -s -s n f {IPAddress}

在此示例中,刷新邻居/arp 表:

  1. ip -s -s n flush 192.168.1.5

ip 路由:路由表管理命令

使用以下命令来管理或操作内核路由表。

显示路由表

显示路由表的内容:

  1. ip r
  2. ip r list
  3. ip route list
  4. ip r list [options] ip route


示例输出:

  1. default via 192.168.1.254 dev eth1
  2. 192.168.1.0/24 dev eth1 proto kernel scope link src 192.168.1.10

192.168.1.0/24 的显示路由:

  1. ip r list 192.168.1.0/24

输出为:

  1. 192.168.1.0/24 dev eth1 proto kernel scope link src 192.168.1.10

添加新路由

语法为:

  1. ip route add {NETWORK/MASK} via {GATEWAYIP}
  2. ip route add {NETWORK/MASK} dev {DEVICE}
  3. ## Add default route using ip ##
  4. ip route add default {NETWORK/MASK} dev {DEVICE}
  5. ip route add default {NETWORK/MASK} via {GATEWAYIP}
  6. ip route add 192.168.1.0/24 via 192.168.1.254
  7. ip route add 192.168.1.0/24 dev eth0

删除路由

删除默认网关的语法如下:

  1. ip route del default

在此示例中,删除在上一小节中创建的路由:

  1. ip route del 192.168.1.0/24 dev eth0

如何在 Linux 上更改 MAC 地址

可以按如下方式更改 Linux 网络接口卡 (NIC) 的 MAC 地址:

  1. NIC="eno1"
  2. ## &lt-- My NIC name ##
  3. ip link show $NIC
  4. ip link set dev $NIC down
  5. ## set new MAC address ##
  6. ip link set dev $NIC address XX:YY:ZZ:AA:BB:CC
  7. ip link set dev $NIC up

配置颜色输出

我们可以通过传递以下选项使 ip 命令输出漂亮:-c

  1. ip -c route
  2. ip -c link
  3. # The 'always' is default and color output is enabled regardless of stdout state
  4. ip -c=always command1
  5. # If parameter is 'auto', stdout is checked to be a terminal before enabling color output
  6. ip -c=auto command2
  7. # If parameter is 'never', color output is disabled
  8. ip -c=never command3

[译]ip命令:ifconfig 的迭代 - 图4
请注意,如果选项传递给 ip 命令,则忽略此标志。我们可以在Linux 上使用 alias 命令创建一个永久的 Bash 别名:-json

  1. alias ip='ip -c'
  2. alias ipc='ip -c'
  3. # run it #
  4. ipc route
  5. ip link

显示所有 Linux IP 地址

想要找出分配给所有接口的 IP 地址并仅显示 IP?尝试:

  1. $ sudo ip -br -c addr show
  2. $ sudo ip -br -c link show

[译]ip命令:ifconfig 的迭代 - 图5

旧工具与新工具

已弃用的 Linux 命令及其替换备忘单:

旧命令(已弃用) 新建命令
ifconfig -a ip a
ifconfig enp6s0 down ip link set enp6s0 down
ifconfig enp6s0 up ip link set enp6s0 up
ifconfig enp6s0 192.168.2.24 ip addr add 192.168.2.24/24 dev enp6s0
ifconfig enp6s0 netmask 255.255.255.0 ip addr add 192.168.1.1/24 dev enp6s0
ifconfig enp6s0 mtu 9000 ip link set enp6s0 mtu 9000
ifconfig enp6s0:0 192.168.2.25 ip addr add 192.168.2.25/24 dev enp6s0
netstat ss
netstat -tulpn ss -tulpn
netstat -neopa ss -neopa
netstat -g ip maddr
route ip r
route add -net 192.168.2.0 netmask 255.255.255.0 dev enp6s0 ip route add 192.168.2.0/24 dev enp6s0
route add default gw 192.168.2.254 ip route add default via 192.168.2.254
arp -a ip neigh
arp -v ip -s neigh
arp -s 192.168.2.33 1:2:3:4:5:6 ip neigh add 192.168.3.33 lladdr 1:2:3:4:5:6 dev enp6s0
arp -i enp6s0 -d 192.168.2.254 ip neigh del 192.168.2.254 dev wlp7s0

总结

如果不记得,可以使用 man 或者 ip —help 查询。

原文地址

https://www.cyberciti.biz/faq/linux-ip-command-examples-usage-syntax/