@ghostfn1
2015-06-23T06:12:47.000000Z
字数 3567
阅读 12027
Linux
ip 命令的使用:
[root@linux ~]# ip [option] [command]参数:Option,设置的参数,主要有:-s,显示出该设备的统计数据(statistics),例如总接受数据包数等;Command,对哪些网络参数进行操作,包括:Link,关于设备(device) 的相关设置,包括MTU、MAC 地址等;addr/address,关于额外的 IP 协议,例如多 IP 的实现等;route,和路由相关的设置.
ip linkip link 能对 device 的 MTU 及 MAC 等进行设置,也能 up or down 某个网络端口。
[root@linux ~]# ip [-s] link show mtu 16436 qdisc noqueuelink/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:002: eth0: mtu 1500 qdisc pfifo_fast qlen 1000link/ether 00:50:fc:22:9a:cb brd ff:ff:ff:ff:ff:ff3: sit0: mtu 1480 qdisc nooplink/sit 0.0.0.0 brd 0.0.0.0[root@linux ~]# ip -s link show eth02: eth0: mtu 1500 qdisc pfifo_fast qlen 1000link/ether 00:50:fc:22:9a:cb brd ff:ff:ff:ff:ff:ffRX: bytes packets errors dropped overrun mcast484011792 2247372 0 0 0 0TX: bytes packets errors dropped carrier collsns2914104290 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 vbirdSIOCSIFNAME: Device or resource busy//该设备目前是启动,应该先:[root@linux ~]# ip link set eth0 down mtu 900 qdisc pfifo_fast qlen 1000link/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 noqueuelink/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00inet 127.0.0.1/8 scope host loinet6 ::1/128 scope hostvalid_lft forever preferred_lft forever2: eth0: mtu 1500 qdisc pfifo_fast qlen 1000link/ether 00:50:fc:22:9a:cb brd ff:ff:ff:ff:ff:ffinet 192.168.1.2/24 brd 192.168.1.255 scope global eth0inet6 fe80::250:fcff:fe22:9acb/64 scope linkvalid_lft forever preferred_lft forever3: sit0: mtu 1480 qdisc nooplink/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 eth02: eth0: mtu 1500 qdisc pfifo_fast qlen 1000link/ether 00:40:d0:13:c3:46 brd ff:ff:ff:ff:ff:ffinet 192.168.1.100/24 brd 192.168.1.255 scope global eth0inet 192.168.50.50/24 brd 192.168.50.255 scope global eth0:vbirdinet6 fe80::240:d0ff:fe13:c346/64 scope linkvalid_lft forever preferred_lft forever//至于那个 broadcast + 也能写成 broadcast 192.168.50.255[root@linux ~]# ifconfigeth0:vbir Link encap:Ethernet HWaddr 00:40:D0:13:C3:46inet addr:192.168.50.50 Bcast:192.168.50.255 Mask:255.255.255.0UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1Interrupt: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 show192.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 show192.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