赞
踩
系列文章
【Linux命令】ifconfig、route、ip route、ip addr、 ip link 用法 一
【Linux命令】ip addr、ip link、ifconfig 用法 二
网络管理是一个复杂而庞大的体系,博主最近刚好学了一点关于网络的知识,就跟大家分享一下如何管理网卡、配置及查看ip地址和路由表。主要通过以下几个命令来演示一下。
现在一些旧的命令由于功能上有欠缺,已经逐渐被新命令取代。
| 旧命令 | 新命令 |
|---|---|
| ifconfig | ip addr |
| route | ip route |
| ip link |
ifconfig 是我们最常用的查看当前系统的网卡和 ip 地址信息的命令.
ifconfig 网卡名 down 禁用某网卡
ifconfig 网卡名 up 启用
ifconfig 网卡名 IP4地址 (带掩码) 改地址(第一次执行时,叫做设置地址,后续执行叫修改地址)
ifconfig 网卡名 add IP6地址 改地址(第一次执行时,叫做设置地址,后续执行叫修改地址)
ifconfig 网卡名:# ip地址 增加网卡别名,允许一块网卡增添多个IP地址
ifconfig 网卡名:# down 删除网卡别名
ifconfig 网卡名 0 清除网卡上的IP地址
ifconfig -s [网卡名] 查看(具体某个网卡)网卡的吞吐量相关信息
比如修改eth0网卡的ip为192.168.174.100,子网掩码为255.255.255.0:
ifconfig eth0 192.168.174.100/24
注意:必须携带掩码,也可以用下面这种形式:
ifconfig eth0 192.168.174.100 netmask 255.255.255.0

使用ifconfig修改ip会直接在内存中生效,重启系统或者重启network服务就丢失。
重启服务来验证下:Centos6:service network restart:

对于ipv6命令稍有不同,格式为下面形式,可以通过man ifconfig 命令解释查看详细说明:
ifconfig 网卡名 add IP6地址
显示全部网卡信息,被禁用的网卡看不到.(拔了网线断开连接不算禁用,仍然能看到该网卡)

不管启用的网卡还是禁用的都能显示出来,但是看不到禁用网卡的ip:

也是查看网卡,但是如果网卡被down,ifconfig -a不显示该ip,也不显示网卡状态,但是ip a可以显示网卡处于down状态:

ifconfig eth1 up 启用eth1网卡
ifconfig eth1 down 禁用eth1网卡
这种禁用是从数据链路层断掉,但是网络层ip还在,也就是仍然能ping通:

ifdown eth0 禁用网卡,删除了网络层ip
ifip eth0 启用网卡


网卡别名是什么?IP别名就是一张物理网卡上配置多个IP,实现类似子接口之类的功能。从网络协议的角度来讲,下层总是为上层提供服务,一块网卡的MAC地址只要一一对应上层的一个IP地址,并且这个逻辑关系是合理的,就算成立,而上层并不在乎下层是什么,比如一个IP地址可以对应多个应用层端口,不也是这个道理吗?在linux作DHCP服务器向多网段分配不同IP或者linux作路由器等时可能需要在一个物理接口上配置多个IP地址。

起网卡别名:
ifconfig eth1:1 192.168.174.100/24

从上图来看,新增了一个eth0:1的网卡,但是本质上是利用 了 eth0
删除别名,注意针对网卡别名 的down命令是删除,而对应网卡正身是禁用的意思:
ifconfig eth1:1 down
此时通过ifconfig -a 查看,发现 eth1:1 确实不存在了
更多网卡别名参见 网卡别名的设置
可以通ifconfig命令往一个网卡添加多个地址,如果不指定别名,会自动增加一个别名
使用如下命令:
ifconfig 网卡名 add ip地址
ifconfig 网卡名 del ip地址
示例:
[root@localhost ~]# ifconfig ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 192.168.206.140 netmask 255.255.255.0 broadcast 192.168.206.255 inet6 fe80::1599:dcc4:b3e8:7fce prefixlen 64 scopeid 0x20<link> ether 00:0c:29:ee:01:80 txqueuelen 1000 (Ethernet) RX packets 1615 bytes 131924 (128.8 KiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 715 bytes 112423 (109.7 KiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536 inet 127.0.0.1 netmask 255.0.0.0 inet6 ::1 prefixlen 128 scopeid 0x10<host> loop txqueuelen 1000 (Local Loopback) RX packets 12 bytes 1056 (1.0 KiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 12 bytes 1056 (1.0 KiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 [root@localhost ~]# ifconfig ens33 add 192.168.206.150 [root@localhost ~]# ifconfig ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 192.168.206.140 netmask 255.255.255.0 broadcast 192.168.206.255 inet6 fe80::1599:dcc4:b3e8:7fce prefixlen 64 scopeid 0x20<link> ether 00:0c:29:ee:01:80 txqueuelen 1000 (Ethernet) RX packets 1804 bytes 145940 (142.5 KiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 781 bytes 119581 (116.7 KiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 ens33:0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 192.168.206.150 netmask 255.255.255.0 broadcast 192.168.206.255 ether 00:0c:29:ee:01:80 txqueuelen 1000 (Ethernet) lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536 inet 127.0.0.1 netmask 255.0.0.0 inet6 ::1 prefixlen 128 scopeid 0x10<host> loop txqueuelen 1000 (Local Loopback) RX packets 12 bytes 1056 (1.0 KiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 12 bytes 1056 (1.0 KiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
上述操作中,对于网卡 ens33 原来绑定了 ip 地址 192.168.206.140,我们使用 ifconfig add 命令绑定了一个新的 ip :192.168.206.150,并用一个新的网卡展示出来ens33:0,现在我们可以使用这个新的 ip 地址来访问原来的网络了。
如果继续添加地址,会按照 ens33:1 、ens33:2进行递增
同理,如果要解绑这个 ip,可以按如下操作,此时 ens33:0被删除:
[root@localhost ~]# ifconfig ens33 del 192.168.206.150 [root@localhost ~]# ifconfig -a ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 192.168.206.140 netmask 255.255.255.0 broadcast 192.168.206.255 inet6 fe80::1599:dcc4:b3e8:7fce prefixlen 64 scopeid 0x20<link> ether 00:0c:29:ee:01:80 txqueuelen 1000 (Ethernet) RX packets 2127 bytes 172321 (168.2 KiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 953 bytes 139954 (136.6 KiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536 inet 127.0.0.1 netmask 255.0.0.0 inet6 ::1 prefixlen 128 scopeid 0x10<host> loop txqueuelen 1000 (Local Loopback) RX packets 18 bytes 1560 (1.5 KiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 18 bytes 1560 (1.5 KiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
通过man route查看详细语法
NAME
route - show / manipulate the IP routing table
SYNOPSIS
route [-CFvnNee] [-A family |-4|-6]
route [-v] [-A family |-4|-6] add [-net|-host] target [netmask Nm] [gw Gw] [metric N] [mss M] [window W] [irtt I] [reject] [mod] [dyn] [reinstate] [[dev] If]
route [-v] [-A family |-4|-6] del [-net|-host] target [gw Gw] [netmask Nm] [metric N] [[dev] If]
route [-V] [--version] [-h] [--help]
route 或route -n ,多用后者

这里的网关是指下一跳地址
默认是查看ipv4路由,如果想查看ipv6的:
route -n -6
是临时添加的记录,重启network服务就失效
如果你想添加一个目标地址的话,可以采用这个方法,[]表示可选
route add -host 目标主机 gw 网关 [ dev 接口 ]
比如 给eth0网卡添加一条到达10.1.111.111的路由记录,网关是10.2.111.111
route add -host 10.1.111.111 gw 10.2.111.111 dev eth0

如果你想把某个网络的全部地址都加入路由的话,可以采用这个方法
route add -net 目标网络 netmask 子网掩码 gw 网关 dev 接口
或者 CIDR格式: route add -net 目标网络/子网掩码 gw 网关 dev 接口
比如 给eth0网卡添加一条到达网络10.1.0.0/16的路由,网关是10.2.111.111
route add -net 10.1.0.0 netmask 255.255.0.0 gw 10.2.111.111 dev eth0
或者 CIDR格式:
route add -net 10.1.0.0/16 gw 10.2.111.111 dev eth0

route add default gw 网关
比如给eth0添加一条默认路由,网关是10.2.111.111
route add default gw 10.2.111.111

删除路由记录只需要把添加路由记录命令中的add改成del就可以了,不过删除路由记录可以省略接口
1)删除到达目标主机的路由记录
route del -host 主机名
2)删除到达目标网络的路由记录
route del -net 目标网络/子网掩码
3)删除默认路由
route del default
ip route 的用法与route大同小异
ip route [show | list]
ip route显示的路由记录与route显示的格式不一样

1)添加到达目标主机的路由记录
ip route add 目标主机 via 网关
2)添加到达网络的路由记录
ip route add 目标网络/掩码 via 网关
3)添加默认路由
ip route add default via 网关
下面只举一个例子说明一下。
比如增加一条到达主机10.2.111.112的路由,网关是10.1.111.112
ip route add 10.2.111.112 via 10.1.111.112

ip route del 目标网络/掩码
ip route del default [via 网关]
ip route flush
ip link (show) 表示链路层的信息,更底层,偏向于物理层,主要是操作网卡,如你可以设置网卡的up down,而ip addr 侧重ip层
ip link只能看链路层的状态,看不到ip地址

ip link set device-xx down 禁用指定接口
ip link set device-xx up 启用指定接口
比如禁用eth0就是 ip link set eth0 down
说明:
ip link不支持tab键补齐
在centos6中有的命令不支持tab键补齐,那么使用需要安装bash-completion包,安装完之后,可以查看包里都支持哪些命令补齐,但是发现ip link不包括在内。
ip link (show) 表示链路层的信息,更底层,偏向于物理层,主要是操作网卡,如你可以设置网卡的up down,而ip addr 侧重ip层。
缩写为 ip a ,可以查看网卡的ip、mac等,即使网卡处于down状态,也能显示出网卡状态,但是ifconfig查看就看不到。

比如查看eth的信息,就是ip addr show eth0
scope {global|link|host}]:指明作用域
①global: 全局可用,即两个接口进来的数据我都可以响应。是默认状态。
②link: 仅链接可用,进来的数据只有直接相连的那个接口能够响应
③host: 本机可用,即只能自己访问

ip addr add ip/netmask dev 接口
例如 ip addr add 2.2.2.2/16 dev eth0

ip addr del ip-xx/netmask-xx dev 接口
ip addr flush dev 接口
用法: 比如给网卡eth0增加别名
ip addr add 3.3.3.3/16 dev eth0 label eth0:1

ip addr del ip/netmask dev eth0 [label eth0:1]
使用命令的方式设置别名,重启服务就没了,若要永久生效,需要写配置文件,步骤如下:
1、确保NetworkManager服务是停止的
Centos6: service NetworkManager status 查看服务状态
service NetworkManager stop 临时停止
chkconfig NetworkManager off 下次开机即停止服务
Centos7: systemctl status NetworkManager 查看服务状态
systemctl stop NetworkManager 临时停止
systemctl disable NetworkManager 下次开机即停止服务
2、 编辑配置文件
cd /etc/sysconfig/network-scripts/
vim ifcfg-eth1:1 至少写入以下内容:
DEVICE=eth1:1
BOOTPROTO=static
IPADDR= ==》ip地址
PREFIX= ==》掩码
GATEWAY= ==》网关
设置别名时必须是静态ip,不能是自动获取
3、 重启服务
Centos6: service network restart
Centos7: systemctl restart network
如果不想要这个别名了,直接删除该文件,然后重启服务即可 。
使用命令的方式增加或者删除ip,都是临时的,如果重启network服务,那么操作就失效了。想要永久生效可以修改配置文件/etc/sysconfig/network-scripts/ifcfg-eth*,这个文件是用来设置网卡参数,这个文件内的所有设置,基本上就是bash的变量设置规则(都应该要大写),否则我们的scropt会误判。
步骤如下:
1) 编辑文件
vim /etc/sysconfig/network-scripts/ifcfg-eth0 至少要有如下几项:
DEVICE=eth0
BOOTPROTO=static
IPADDR= ==》ip地址
PREFIX= ==》掩码
GATEWAY= ==》网关
2)生效:重启服务
Centos6: service network restart
Centos7: systemctl restart network
使用命令的方式增加或者删除路由记录,都是临时的,如果重启network服务,那么操作就失效了。想要永久生效可以编辑配置文件/etc/sysconfig/network-scripts/route-eth*,步骤如下:
1、 vim etc/sysconfig/network-scripts/route-eth0
文件内容有两种写法:
1)单行
netid/mask via gw 比如2.2.2.2/16 via 10.0.0.0
2)多行
ADDRESS#=目标网络
NETMASK#=子网掩码
GATEWAY#=网关
注意:
同一路由记录的#数字必须一样,因为可能会添加多条路由,数字一样的为同一组。
同一个文件里,两种格式不能混合着写。
2、重启服务
Centos6: service network restart
Centos7: systemctl restart network
以上就是一些关于增加或者删除ip及路由记录的小命令,临时起作用的命令一般用在测试环境中,想要永久生效就需要写在文件里。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。