[root@linux ~]# ip [option] [動作] [指令]
參數:
option :設定的參數,主要有:
-s :显示该装置的统计数据(statistics),例如总接收发送封包数等;
action:也就是可以针对哪些网路参数进行动作,包括有:
link :关于接口的相关设定,包括 MTU, MAC 位址等等
addr/address :关于额外的IP设定,例如多 IP 的达成等等;
route :与路由相关的设定。
由上面的语法我们可以知道, ip 除了可以設定一些基本的网路参数之外,还能够进行额外的IP设定, 包括多 IP 的达成,真是太完美了!
底下我们就分三个部分 (link, addr, route) 来介绍这个 ip 指令吧!
关于接口 的相关设定: ip linkip link:接口参数相关
可以设定与接口相关的参数,MTU 以及该网络接口的 MAC 等等, 当然也可以启动 (up) 或关闭 (down) 某个网络接口啦!
相关语法如下:
1. ip [-s] link show :显示网络接口相关信息
xxha@PAF4:~$ ip link show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 70:54:d2:56:95:91 brd ff:ff:ff:ff:ff:ff
3: wlan0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc mq state DOWN qlen 1000
link/ether 00:12:7b:16:62:03 brd ff:ff:ff:ff:ff:ff
加 -s 可以多一些统计信息。
xxha@PAF4:~$ ip -s link show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
RX: bytes packets errors dropped overrun mcast
48249 486 0 0 0 0
TX: bytes packets errors dropped carrier collsns
48249 486 0 0 0 0
2: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 70:54:d2:56:95:91 brd ff:ff:ff:ff:ff:ff
RX: bytes packets errors dropped overrun mcast
37198731 269133 0 18060 0 0
TX: bytes packets errors dropped carrier collsns
6980285 41887 0 0 0 0
3: wlan0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc mq state DOWN qlen 1000
link/ether 00:12:7b:16:62:03 brd ff:ff:ff:ff:ff:ff
RX: bytes packets errors dropped overrun mcast
0 0 0 0 0 0
TX: bytes packets errors dropped carrier collsns
0 0 0 0 0 0
也可以具体指定某个接口:
xxha@PAF4:~$ ip -s link show eth1
2: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 70:54:d2:56:95:91 brd ff:ff:ff:ff:ff:ff
RX: bytes packets errors dropped overrun mcast
37799692 276202 0 18531 0 0
TX: bytes packets errors dropped carrier collsns
6993517 42033 0 0 0 0
2. ip link set [device] [动作与参数] :
可以设定接口相关参数,如下:
up | down :启动或关闭某个接口
mtu :设定mtu大小
name :接口名字设定
address : 物理地址设定
举例如下:
xxha@PAF4:~$ sudo ip link set eth1 down
xxha@PAF4:~$ sudo ip link set eth1 up
修改MTU:
xxha@PAF4:~$ sudo ip link set eth1 mtu 2000
xxha@PAF4:~$ sudo ip link show eth1
2: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 2000 qdisc pfifo_fast state UP qlen 1000
link/ether 70:54:d2:56:95:91 brd ff:ff:ff:ff:ff:ff
可见MTU被改成2000了,MTU单位是字节.
修改name:
xxha@PAF4:~$ sudo ip link set lo down
xxha@PAF4:~$ sudo ip link set lo name bird
xxha@PAF4:~$ sudo ip link show
1: bird: <LOOPBACK> mtu 65536 qdisc noqueue state DOWN
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 2000 qdisc pfifo_fast state UP qlen 1000
link/ether 70:54:d2:56:95:91 brd ff:ff:ff:ff:ff:ff
3: wlan0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc mq state DOWN qlen 1000
link/ether 00:12:7b:16:62:03 brd ff:ff:ff:ff:ff:ff
这里必须出于down状态才能改接口名字。
修改物理地址:
xxha@PAF4:~$ sudo ip link set wlan0 down
xxha@PAF4:~$ sudo ip link set wlan0 address aa:aa:aa:aa:aa:aa
xxha@PAF4:~$ sudo ip link show
1: bird: <LOOPBACK> mtu 65536 qdisc noqueue state DOWN
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 2000 qdisc pfifo_fast state UP qlen 1000
link/ether 70:54:d2:56:95:91 brd ff:ff:ff:ff:ff:ff
3: wlan0: <BROADCAST,MULTICAST> mtu 1500 qdisc mq state DOWN qlen 1000
link/ether aa:aa:aa:aa:aa:aa brd ff:ff:ff:ff:ff:ff
基本上 ip link 的功能可以用ifconfig实现。
ip addr(或address):与IP相关的设定
格式:
ip address show
或
ip address [add|del] [IP參數] [dev 裝置名] [相關參數]
参数:
show: 显示接口IP信息
add | del :添加或删除相关参数。
IP参数:IP地址的设定。
dev :接口, 如 eth0, eth1.
相关参数:
broadcast :设定广播地址,如果设定值时+ 表示让系统自动计算。
label :接口的别名,例如 eth0:0 就是了!
scope :这个接口的领域,通常是这几个大类:
global :允许来自所有来源的连线;
site :仅支持IPV6,仅允许本机的连线;
link :仅允许本装置的自我连线;
host :仅允许本主机内部连线;
所以当然是使用 global 了!预设也是 global !
xxha@PAF4:~$ ip addr show
1: bird: <LOOPBACK> mtu 65536 qdisc noqueue state DOWN
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host bird
2: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 2000 qdisc pfifo_fast state UP qlen 1000
link/ether 70:54:d2:56:95:91 brd ff:ff:ff:ff:ff:ff
inet 192.168.8.49/16 brd 192.168.255.255 scope global eth1
inet6 2001:470:19:790:597b:3852:7437:68b7/64 scope global temporary dynamic
valid_lft 597823sec preferred_lft 78823sec
inet6 2001:470:19:790:7254:d2ff:fe56:9591/64 scope global dynamic
valid_lft 2591997sec preferred_lft 604797sec
inet6 fe80::7254:d2ff:fe56:9591/64 scope link
valid_lft forever preferred_lft forever
3: wlan0: <BROADCAST,MULTICAST> mtu 1500 qdisc mq state DOWN qlen 1000
link/ether aa:aa:aa:aa:aa:aa brd ff:ff:ff:ff:ff:ff
给接口添加一个ip地址和接口别名:
xxha@PAF4:~$ sudo ip addr add 192.168.100.1/24 broadcast + dev eth1 label eth1:vbird
xxha@PAF4:~$ ip address show eth1
2: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 2000 qdisc pfifo_fast state UP qlen 1000
link/ether 70:54:d2:56:95:91 brd ff:ff:ff:ff:ff:ff
inet 192.168.8.49/16 brd 192.168.255.255 scope global eth1
inet 192.168.100.1/24 brd 192.168.100.255 scope global eth1:vbird
inet6 2001:470:19:790:597b:3852:7437:68b7/64 scope global temporary dynamic
valid_lft 597011sec preferred_lft 78011sec
inet6 2001:470:19:790:7254:d2ff:fe56:9591/64 scope global dynamic
valid_lft 2591997sec preferred_lft 604797sec
inet6 fe80::7254:d2ff:fe56:9591/64 scope link
valid_lft forever preferred_lft forever
添加了IP和接口名之后,ifconfig 也可以看见:
xxha@PAF4:~$ ifconfig
eth1 Link encap:Ethernet HWaddr 70:54:d2:56:95:91
inet addr:192.168.8.49 Bcast:192.168.255.255 Mask:255.255.0.0
inet6 addr: 2001:470:19:790:597b:3852:7437:68b7/64 Scope:Global
inet6 addr: 2001:470:19:790:7254:d2ff:fe56:9591/64 Scope:Global
inet6 addr: fe80::7254:d2ff:fe56:9591/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:2000 Metric:1
RX packets:294401 errors:0 dropped:19613 overruns:0 frame:0
TX packets:44357 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:39362218 (39.3 MB) TX bytes:7192593 (7.1 MB)
eth1:vbird Link encap:Ethernet HWaddr 70:54:d2:56:95:91
inet addr:192.168.100.1 Bcast:192.168.100.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:2000 Metric:1
上面的 eth1:vbird 就新添加的IP和接口。
删除操作如下,直接指定一个IP地址就行了:
xxha@PAF4:~$ sudo ip addr del 192.168.100.1/24 dev eth1
xxha@PAF4:~$ ip address show eth1
2: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 2000 qdisc pfifo_fast state UP qlen 1000
link/ether 70:54:d2:56:95:91 brd ff:ff:ff:ff:ff:ff
inet 192.168.8.49/16 brd 192.168.255.255 scope global eth1
inet6 2001:470:19:790:597b:3852:7437:68b7/64 scope global temporary dynamic
valid_lft 596773sec preferred_lft 77773sec
inet6 2001:470:19:790:7254:d2ff:fe56:9591/64 scope global dynamic
valid_lft 2591999sec preferred_lft 604799sec
inet6 fe80::7254:d2ff:fe56:9591/64 scope link
valid_lft forever preferred_lft forever
xxha@PAF4:~$ ifconfig
eth1 Link encap:Ethernet HWaddr 70:54:d2:56:95:91
inet addr:192.168.8.49 Bcast:192.168.255.255 Mask:255.255.0.0
inet6 addr: 2001:470:19:790:597b:3852:7437:68b7/64 Scope:Global
inet6 addr: 2001:470:19:790:7254:d2ff:fe56:9591/64 Scope:Global
inet6 addr: fe80::7254:d2ff:fe56:9591/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:2000 Metric:1
RX packets:295757 errors:0 dropped:19678 overruns:0 frame:0
TX packets:44542 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:39459841 (39.4 MB) TX bytes:7207878 (7.2 MB)
ip route :路由相关设置
[root@linux ~]# ip route show
[root@linux ~]# ip route [add|del] [IP或网域] [via gateway] [dev 接口]
参数:
show :单纯的显示出路由表,也可以使用 list ;
add|del :增加 (add) 或刪除 (del) 路由的意思。
IP或网域:可使用 192.168.50.0/24 之类的网域或者是单纯的 IP ;
via :从那个 gateway 出去,不一定需要;
dev :由那个接口连出去,这就需要了!
mtu :可以额外的设定 MTU 的数值喔!
例子:
xxha@PAF4:~$ sudo ip route show
default via 192.168.8.1 dev eth1 proto static
169.254.0.0/16 dev eth1 scope link metric 1000
192.168.0.0/16 dev eth1 proto kernel scope link src 192.168.8.49 metric 1
最简单的功能就是显示出路由表,这个跟route指令相同,只是必须要注意几个小东西:
proto:此路由的路由决定,主要有 redirect, kernel, boot, static, ra 等, 其中 kernel 指的是直接由核心判断自动设定。
scope:路由的范围,主要是 link ,亦即是与本接口有关的直接连线。
再来看一下如何进行路由的增加与刪除吧!
增加路由,主要是本机直接可沟通的网域
xxha@PAF4:~$ sudo ip route add 192.168.9.0 dev eth1
xxha@PAF4:~$ sudo ip route show
default via 192.168.8.1 dev eth1 proto static
169.254.0.0/16 dev eth1 scope link metric 1000
192.168.0.0/16 dev eth1 proto kernel scope link src 192.168.8.49 metric 1
192.168.9.0 dev eth1 scope link
增加外部路由,需通过router:
xxha@PAF4:~$ sudo ip route add 192.168.1.0 via 192.168.9.0 dev eth1
xxha@PAF4:~$ sudo ip route show
default via 192.168.8.1 dev eth1 proto static
169.254.0.0/16 dev eth1 scope link metric 1000
192.168.0.0/16 dev eth1 proto kernel scope link src 192.168.8.49 metric 1
192.168.1.0 via 192.168.9.0 dev eth1
192.168.9.0 dev eth1 scope link
增加预设路由:
xxha@PAF4:~$ sudo ip route add default via 192.168.1.2 dev eth1
删除路由:
xxha@PAF4:~$ sudo ip route del 192.168.1.0
xxha@PAF4:~$ sudo ip route show
default via 192.168.8.1 dev eth1 proto static
169.254.0.0/16 dev eth1 scope link metric 1000
192.168.0.0/16 dev eth1 proto kernel scope link src 192.168.8.49 metric 1
192.168.9.0 dev eth1 scope link
xxha@PAF4:~$ sudo ip route del 192.168.9.0
xxha@PAF4:~$ sudo ip route show
default via 192.168.8.1 dev eth1 proto static
169.254.0.0/16 dev eth1 scope link metric 1000
192.168.0.0/16 dev eth1 proto kernel scope link src 192.168.8.49 metric 1
xxha@PAF4:~$
这个命令还有好多别的功能, link, address,route 只是其中的三个常用功能:
xxha@PAF4:~$ ip -h
Usage: ip [ OPTIONS ] OBJECT { COMMAND | help }
ip [ -force ] -batch filename
where OBJECT := { link | addr | addrlabel | route | rule | neigh | ntable |
tunnel | tuntap | maddr | mroute | mrule | monitor | xfrm |
netns }
OPTIONS := { -V[ersion] | -s[tatistics] | -d[etails] | -r[esolve] |
-f[amily] { inet | inet6 | ipx | dnet | link } |
-l[oops] { maximum-addr-flush-attempts } |
-o[neline] | -t[imestamp] | -b[atch] [filename] |
-rc[vbuf] [size]}