目的
语法
ip OBJECT COMMAND
ip [options] OBJECT COMMAND
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 命令,如下所示:
ip OBJECT help
ip OBJECT h
ip a help
ip r help
警告:必须谨慎执行以下命令。如果出错,您将失去与服务器的连接。在处理基于 ssh 的远程会话时必须特别小心。
ip 命令示例
显示有关所有网络接口的信息
键入以下命令以列出并显示所有网络接口上关联的所有 IP 地址:
ip a
# 或
ip addr
输入示例如下:
您可以使用以下语法在 IPv4 和 IPv6 之间进行选择:
### Only show TCP/IP IPv4 ##
ip -4 a
### Only show TCP/IP IPv6 ###
ip -6 a
还可以指定和列出特定的接口 TCP/IP 详细信息:
### Only show eth0 interface ###
ip a show eth0
ip a list eth0
ip a show dev eth0
### Only show running interfaces ###
ip link ls up
将 IP 地址分配给接口
添加 IPv4/IPv6 地址的语法如下:
ip a add {ip_addr/mask} dev {interface}
要将 192.168.1.200/255.255.255.0 分配给 eth0,请输入:
ip a add 192.168.1.200/255.255.255.0 dev eth0
ip a add 192.168.1.200/24 dev eth0
在接口上添加广播地址
默认情况下,除非显式请求,否则 ip 命令不会设置任何广播地址。因此,设置广播地址的语法如下:
ip addr add broadcast {ADDDRESS-HERE} dev {interface}
可以通过使用 “+” 或 “-” 而不是广播地址来设置/重置主机网络 prex 位。在此示例中,将地址 192.168.1.50 和网络掩码 255.255.255.0 (/24) 与标准广播和标签”eth0Home”添加到接口 eth0:
ip addr add broadcast 172.20.10.255 dev dummy0
ip addr add 192.168.1.50/24 brd + dev eth0 label eth0Home
您可以设置环回设备 lo 的环回地址,如下所示:
ip addr add 127.0.0.1/8 dev lo brd + scope host
从接口中删除 IP 地址
语法如下,用于删除 IPv4/IPv6 地址:
ip a del {ipv6_addr_OR_ipv4_addr} dev {interface}
要从 eth0 中删除 192.168.1.200/24,请输入:
ip a del 192.168.1.200/24 dev eth0
从接口刷新 IP 地址
您可以逐个删除或远程访问 IPv4/IPv6 地址,如上所述。但是,flush 命令可以根据给定条件删除刷新 IP 地址。例如,可以使用以下命令从专用网络 192.168.2.0/24 中删除所有 IP 地址:
ip -s -s a f to 192.168.2.0/24
示例输出:
2: eth0 inet 192.168.2.201/24 scope global secondary eth0
2: eth0 inet 192.168.2.200/24 scope global eth0
*** Round 1, deleting 2 addresses ***
*** Flush is complete after 1 round ***
您可以在所有 ppp(点对点)接口上移除 IP 地址:
ip -4 addr flush label "ppp*"
以下是所有以太网接口一个通用示例:
ip -4 addr flush label "eth*"
如何将设备的状态更改为 “up” 或 “down”?
语法如下:
ip link set dev {DEVICE} {up|down}
要使设备 eth1 的状态关闭,请输入:
ip link set dev eth1 down
要使设备 eth1 的状态变为 up,请输入:
ip link set dev eth1 up
如何更改设备的 txqueuelen?
您可以使用 ifconfig 命令或 ip 命令设置设备的传输队列的长度,如下所示:
ip link set txqueuelen {NUMBER} dev {DEVICE}
在此示例中,将 eth0 的默认 txqueuelen 从 1000 更改为 10000:
ip link set txqueuelen 10000 dev eth0
ip a list eth0
如何更改设备的 MTU?
对于千兆位网络,您可以设置最大传输单位 (MTU)大小(巨型帧),以获得更好的网络性能。语法为:
ip link set mtu {NUMBER} dev {DEVICE}
要将设备 eth0 的 MTU 更改为 9000,请输入:
ip link set mtu 9000 dev eth0
ip a list eth0
示例输出:
2: eth0: mtu 9000 qdisc pfifo_fast state UP qlen 1000
link/ether 00:08:9b:c4:30:30 brd ff:ff:ff:ff:ff:ff
inet 192.168.1.10/24 brd 192.168.1.255 scope global eth1
inet6 fe80::208:9bff:fec4:3030/64 scope link
valid_lft forever preferred_lft forever
显示 neighbour /arp 缓存
语法为:
ip n show
ip neigh show
示例输出(注意:我用字母屏蔽了一些数据):
74.xx.yy.zz dev eth1 lladdr 00:30:48:yy:zz:ww REACHABLE
10.10.29.66 dev eth0 lladdr 00:30:48:c6:0a:d8 REACHABLE
74.ww.yyy.xxx dev eth1 lladdr 00:1a:30:yy:zz:ww REACHABLE
10.10.29.68 dev eth0 lladdr 00:30:48:33:bc:32 REACHABLE
74.fff.uu.cc dev eth1 lladdr 00:30:48:yy:zz:ww STALE
74.rr.ww.fff dev eth1 lladdr 00:30:48:yy:zz:ww DELAY
10.10.29.65 dev eth0 lladdr 00:1a:30:38:a8:00 REACHABLE
10.10.29.74 dev eth0 lladdr 00:30:48:8e:31:ac REACHABLE
最后一个字段显示此条目的” 邻居无法访问检测 “计算机的状态:
- STALE – 邻居是有效的,但可能已经无法访问,因此内核将尝试在第一次传输时检查它。
- DELAY – 数据包已发送到过时的邻居,内核正在等待确认。
- 可到达– 邻居是有效的,显然是可到达的。
添加新的 ARP 条目
语法为:
在此示例中,为设备 eth0 上的邻居 192.168.1.5 添加一个永久 ARP 条目:ip neigh add {IP-HERE} lladdr {MAC/LLADDRESS} dev {DEVICE} nud {STATE}
其中,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 条目
语法如下:
ip neigh del {IPAddress} dev {DEVICE}
设备 eth1 上的邻居 192.168.1.5 的 ARP 条目失效或删除的语法如下。
ip neigh del 192.168.1.5 dev eth1
更改状态,以便设备 eth1 上的邻居 192.168.1.100 访问:
ip neigh chg 192.168.1.100 dev eth1 nud reachable
刷新 ARP 条目
此 flush 或 f 命令通过指定某些条件来刷新 neighbour/arp 表。语法为:
ip -s -s n f {IPAddress}
在此示例中,刷新邻居/arp 表:
ip -s -s n flush 192.168.1.5
ip 路由:路由表管理命令
显示路由表
显示路由表的内容:
ip r
ip r list
ip route list
ip r list [options] ip route
示例输出:
default via 192.168.1.254 dev eth1
192.168.1.0/24 dev eth1 proto kernel scope link src 192.168.1.10
192.168.1.0/24 的显示路由:
ip r list 192.168.1.0/24
输出为:
192.168.1.0/24 dev eth1 proto kernel scope link src 192.168.1.10
添加新路由
语法为:
ip route add {NETWORK/MASK} via {GATEWAYIP}
ip route add {NETWORK/MASK} dev {DEVICE}
## Add default route using ip ##
ip route add default {NETWORK/MASK} dev {DEVICE}
ip route add default {NETWORK/MASK} via {GATEWAYIP}
ip route add 192.168.1.0/24 via 192.168.1.254
ip route add 192.168.1.0/24 dev eth0
删除路由
删除默认网关的语法如下:
ip route del default
在此示例中,删除在上一小节中创建的路由:
ip route del 192.168.1.0/24 dev eth0
如何在 Linux 上更改 MAC 地址
可以按如下方式更改 Linux 网络接口卡 (NIC) 的 MAC 地址:
NIC="eno1"
## <-- My NIC name ##
ip link show $NIC
ip link set dev $NIC down
## set new MAC address ##
ip link set dev $NIC address XX:YY:ZZ:AA:BB:CC
ip link set dev $NIC up
配置颜色输出
我们可以通过传递以下选项使 ip 命令输出漂亮:-c
ip -c route
ip -c link
# The 'always' is default and color output is enabled regardless of stdout state
ip -c=always command1
# If parameter is 'auto', stdout is checked to be a terminal before enabling color output
ip -c=auto command2
# If parameter is 'never', color output is disabled
ip -c=never command3
请注意,如果选项传递给 ip 命令,则忽略此标志。我们可以在Linux 上使用 alias 命令创建一个永久的 Bash 别名:-json
alias ip='ip -c'
alias ipc='ip -c'
# run it #
ipc route
ip link
显示所有 Linux IP 地址
想要找出分配给所有接口的 IP 地址并仅显示 IP?尝试:
$ sudo ip -br -c addr show
$ sudo ip -br -c link show
旧工具与新工具
已弃用的 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/