@ghostfn1
2015-06-23T14:12:47.000000Z
字数 3567
阅读 11835
Linux
ip 命令的使用:
[root@linux ~]# ip [option] [command]
参数:
Option,设置的参数,主要有:
-s,显示出该设备的统计数据(statistics),例如总接受数据包数等;
Command,对哪些网络参数进行操作,包括:
Link,关于设备(device) 的相关设置,包括MTU、MAC 地址等;
addr/address,关于额外的 IP 协议,例如多 IP 的实现等;
route,和路由相关的设置.
ip link
ip link 能对 device 的 MTU 及 MAC 等进行设置,也能 up or down 某个网络端口。
[root@linux ~]# ip [-s] link show mtu 16436 qdisc noqueue
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: eth0: mtu 1500 qdisc pfifo_fast qlen 1000
link/ether 00:50:fc:22:9a:cb brd ff:ff:ff:ff:ff:ff
3: sit0: mtu 1480 qdisc noop
link/sit 0.0.0.0 brd 0.0.0.0
[root@linux ~]# ip -s link show eth0
2: eth0: mtu 1500 qdisc pfifo_fast qlen 1000
link/ether 00:50:fc:22:9a:cb brd ff:ff:ff:ff:ff:ff
RX: bytes packets errors dropped overrun mcast
484011792 2247372 0 0 0 0
TX: bytes packets errors dropped carrier collsns
2914104290 2867753 0 0 0 0
ip link show 显示出整个设备接口的硬件相关信息。
lo 及 sit0 都是主机内部所自行设置的。加上-s参数后,接收(RX)及传送(TX)的数据包数量等 和 ifconfig 的结果相同。
sit0 接口用在IPv4及IPv6的数据包转换上的,仅使用IPv4的网络无作用。
[root@linux ~]# ip link set eth0 up
启动 eth0
[root@linux ~]# ip link set eth0 down
关闭
[root@linux ~]# ip link set eth0 mtu 1000
更改 MTU 的值为 1000 bytes.使用 ifconfig 也能更新网卡的 MTU 。
要更改网卡代号、MAC地址要使用ip命令。(设置前得要先关闭该网卡)
[root@linux ~]# ip link set eth0 name vbird
SIOCSIFNAME: Device or resource busy
//该设备目前是启动,应该先:
[root@linux ~]# ip link set eth0 down mtu 900 qdisc pfifo_fast qlen 1000
link/ehter 00:40:d0:13:c3:46 brd ff:ff:ff:ff:ff:ff
//网卡代号都能改动。ifcfg-eth0还是使用原本的设备代号。避免有问题,要改回来。
[root@linux ~]# ip link set vbird name eth0
//设备的硬件相关信息,包括MTU、MAC及传输的模式等,都能在这里设置。address的项目后接的可是 MAC 而不是IP !
如果说ip link是和OSI七层协议的第二层数据链路层有关的话,那么IP address(IP addr)就是和第三层网络层有关的参数了。主要是设置和IP有关的各项参数,包括netmask、broadcast等。
[root@linux ~]# ip address show mtu 16436 qdisc noqueue
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: mtu 1500 qdisc pfifo_fast qlen 1000
link/ether 00:50:fc:22:9a:cb brd ff:ff:ff:ff:ff:ff
inet 192.168.1.2/24 brd 192.168.1.255 scope global eth0
inet6 fe80::250:fcff:fe22:9acb/64 scope link
valid_lft forever preferred_lft forever
3: sit0: mtu 1480 qdisc noop
link/sit 0.0.0.0 brd 0.0.0.0
[root@linux ~]# ip address add 192.168.50.50/24 broadcast + \
> dev eth0 label eth0:vbird
[root@linux ~]# ip address show eth0
2: eth0: mtu 1500 qdisc pfifo_fast qlen 1000
link/ether 00:40:d0:13:c3:46 brd ff:ff:ff:ff:ff:ff
inet 192.168.1.100/24 brd 192.168.1.255 scope global eth0
inet 192.168.50.50/24 brd 192.168.50.255 scope global eth0:vbird
inet6 fe80::240:d0ff:fe13:c346/64 scope link
valid_lft forever preferred_lft forever
//至于那个 broadcast + 也能写成 broadcast 192.168.50.255
[root@linux ~]# ifconfig
eth0:vbir Link encap:Ethernet HWaddr 00:40:D0:13:C3:46
inet addr:192.168.50.50 Bcast:192.168.50.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
Interrupt:5 Base address:0x3e00
//如果使用 ifconfig 就能够看到这个怪东西
//将刚才的接口删除
[root@linux ~]# ip address del 192.168.50.50/24 dev eth0
ip route的功能几乎和route命令差不多,但还能进行额外的参数设计,例如MTU的规划等。
[root@linux ~]# ip route show
//显示出目前的路由信息,其实跟route命令相同,只是需要注意几个小细节:
proto:此路由的路由协议,主要有Redirect、Kernel、Boot、Static、Ra等,其中Kernel指的是直接由核心判断自动设置。
scope:路由的范围,主要是link,即是和本设备有关的直接联机。
[root@linux ~]# ip route add 192.168.5.0/24 dev eth0
//针对本机直接沟通的网段设置好路由,不必通过外部的路由器
[root@linux ~]# ip route show
192.168.5.0/24 dev eth0 scope link
……其他省略……
[root@linux ~]# ip route add 192.168.10.0/24 via 192.168.5.100 dev eth0
[root@linux ~]# ip route show
192.168.5.0/24 dev eth0 scope link
……其他省略……
192.168.10.0/24 via 192.168.5.100 dev eth0
//因为有 192.168.5.0/24 的路由存在 (和网卡直接联系),所以才能将 192.168.10.0/24 的路由丢给 192.168.5.100
//那台主机来帮忙传递。和之前提到的 route 命令是相同的限制。
[root@linux ~]# ip route add default via 192.168.1.2 dev eth0
# 那个 192.168.1.2 是默认路由器 (gateway) 的意思
# 只要一个默认路由就 OK 。
[root@linux ~]# ip route del 192.168.10.0/24
[root@linux ~]# ip route del 192.168.5.0/24