Linux ip命令示例
如何使用ip命令行实用程序在Linux操作系统上显示或配置网络,路由和隧道?
如何在Linux操作系统上使用TCP/IP配置或显示网络的网络接口参数?
ip命令用于在Linux操作系统上为网络接口分配地址和/或配置网络接口参数。
该命令替换了现代Linux发行版上的旧的好,现在不推荐使用的ifconfig命令。
语法
ip OBJECT COMMAND ip [options] OBJECT COMMAND ip OBJECT help
了解ip命令的对象语法
对象可以是以下任意一种,并且可以全部或缩写形式书写:
对象 | 缩写形式 | 作用 |
---|---|---|
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
警告:必须谨慎执行以下描述的命令。
如果输入错误,将失去与服务器的连接。
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 brd {ADDDRESS-HERE} dev {interface} ip addr add broadcast {ADDDRESS-HERE} dev {interface} ip addr add broadcast 172.20.10.255 dev dummy0
通过设置/重置接口prex的主机位,可以使用特殊符号(例如," +"和"-")代替广播地址。
在此示例中,将地址192.168.1.50和网络掩码255.255.255.0(/24)(带有标准广播)和标签eth0Home添加到接口eth0:
ip addr add 192.168.1.50/24 brd + dev eth0 label eth0Home
您可以如下设置回送设备的回送地址:
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.1.0/24删除所有IP地址:
ip -s -s a f to 192.168.1.0/24
输出示例:
2: eth0 inet 192.168.1.201/24 scope global secondary eth0 2: eth0 inet 192.168.1.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的状态,请执行:
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)大小(JumboFrames),以获得更好的网络性能。
语法为:
ip link set mtu {NUMBER} dev {DEVICE}
要将设备eth0的MTU更改为9000,请执行:
ip link set mtu 9000 dev eth0 ip a list eth0
输出示例:
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> 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
显示邻居/弧缓存
语法为:
ip n show ip neigh show
最后一个字段显示此条目的"邻居"计算机的状态:
- STALE邻居是有效的,但可能已经不可达,因此内核将在第一次传输时尝试对其进行检查。
- DELAY包已经发送到过时的邻居,内核正在等待确认。
- REACHABLE邻居是有效的,显然是可以到达的。
添加一个新的ARP条目
语法为:
ip neigh add {IP-HERE} lladdr {MAC/LLADDRESS} dev {DEVICE} nud {STATE}
在此示例中,在设备eth0上为邻居192.168.1.5添加永久ARP条目:
ip neigh add 192.168.1.5 lladdr 00:1a:30:38:a8:00 dev eth0 nud perm
其中:
邻居状态(nud) | 含义 |
---|---|
permanent | 邻居条目永远有效,只能通过管理方式将其删除 |
noarp | 邻居条目有效。不会尝试验证此条目,但是可以在其生存期到期时将其删除。 |
stale | 邻居条目有效但可疑。如果ip neigh选项有效,并且该命令不改变地址,则不会改变邻居状态。 |
reachable | 邻居条目在可达超时超时到期之前一直有效。 |
删除ARP表项
使设备eth1上的邻居192.168.1.5的ARP条目无效或删除的语法如下。
ip neigh del {IPAddress} dev {DEVICE} 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命令通过指定某些条件来刷新邻居/arp表。
语法为:
ip -s -s n f {IPAddress}
在此示例中,刷新邻居/arp表
ip -s -s n f 192.168.1.5
或者
ip -s -s n flush 192.168.1.5
ip route:路由表管理命令
使用以下命令来管理或操作内核路由表。
显示路由表
要显示路由表的内容:
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} ip route add default {NETWORK/MASK} dev {DEVICE} ip route add default {NETWORK/MASK} via {GATEWAYIP}
通过网关192.168.1.254向网络192.168.1.0/24添加一条普通路由:
ip route add 192.168.1.0/24 via 192.168.1.254
要通过eth1.25网络接口连接的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