文章目录
- 1. 前言
- 2. ifconfig
- 2.1 配置地址
- 2.2 查看功能
- 2.2.1 ifconfig 查看不含禁用的网卡
- 2.2.2 ifconfig -a 查看含禁用的网卡
- 2.2.3 ip a
- 2.3 启用、禁用网卡
- 2.3.1 ifconfig eth1 up、 ifconfig eth1 down
- 2.3.2 ifdown eth0、ifip eth0
- 2.4 扫描eth0接口的数据
- 2.5 网卡别名
- 2.5.1 ip 地址绑定到某个网卡
- 3. route
- 3.1 查看路由表
- 3.2 添加路由记录
- 3.2.1 添加到达目标主机的路由
- 3.2.2 添加到达目标网络的路由
- 3.2.3 添加默认路由
- 3.3 删除路由记录
- 4. ip route
- 4.1 显示路由:
- 4.2 添加路由
- 4.3 删除路由
- 4.4 清空路由表:
- 5. ip link
- 5.1 查看
- 5.2 启用、禁用接口
- 6. ip addr
- 6.1 查看
- 6.1.1 ip addr 查看全部网卡信息
- 6.1.2 ip addr show device 查看指定网卡的信息
- 6.2 作用域
- 6.3 增加ip
- 6.4 删除ip
- 6.5 清空指定网卡的所有ip
- 6.6 给网卡起别名,起别名相当于给网卡多绑定了一个ip
- 6.7 删除别名
- 6.8 注意事项
- 6.8.1 使用命令的方式设置别名,重启服务就没了
- 6.8.2 使用命令的方式增加或者删除ip,如果重启network服务,那么操作就失效了
- 6.8.3 使用命令的方式增加或者删除路由记录,如果重启network服务,那么操作就失效了
- 参考
系列文章
【Linux命令】ifconfig、route、ip route、ip addr、 ip link 用法 一
【Linux命令】ip addr、ip link、ifconfig 用法 二
1. 前言
网络管理是一个复杂而庞大的体系,博主最近刚好学了一点关于网络的知识,就跟大家分享一下如何管理网卡、配置及查看ip地址和路由表。主要通过以下几个命令来演示一下。
现在一些旧的命令由于功能上有欠缺,已经逐渐被新命令取代。
旧命令 | 新命令 |
---|---|
ifconfig | ip addr |
route | ip route |
ip link |
2. ifconfig
ifconfig 是我们最常用的查看当前系统的网卡和 ip 地址信息
的命令.
-
ifconfig 网卡名 down 禁用某网卡
-
ifconfig 网卡名 up 启用
-
ifconfig 网卡名 IP4地址 (带掩码) 改地址(第一次执行时,叫做设置地址,后续执行叫修改地址)
-
ifconfig 网卡名 add IP6地址 改地址(第一次执行时,叫做设置地址,后续执行叫修改地址)
-
ifconfig 网卡名:# ip地址 增加网卡别名,允许一块网卡增添多个IP地址
-
ifconfig 网卡名:# down 删除网卡别名
-
ifconfig 网卡名 0 清除网卡上的IP地址
-
ifconfig -s [网卡名] 查看(具体某个网卡)网卡的吞吐量相关信息
2.1 配置地址
比如修改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地址
2.2 查看功能
2.2.1 ifconfig 查看不含禁用的网卡
显示全部网卡信息,被禁用的网卡看不到
.(拔了网线断开连接不算禁用,仍然能看到该网卡)
2.2.2 ifconfig -a 查看含禁用的网卡
不管启用的网卡还是禁用的都能显示出来,但是看不到禁用网卡的ip:
2.2.3 ip a
也是查看网卡,但是如果网卡被down,ifconfig -a不显示该ip,也不显示网卡状态,但是ip a可以显示网卡处于down状态:
2.3 启用、禁用网卡
2.3.1 ifconfig eth1 up、 ifconfig eth1 down
ifconfig eth1 up 启用eth1网卡
ifconfig eth1 down 禁用eth1网卡
这种禁用是从数据链路层断掉,但是网络层ip还在,也就是仍然能ping通
:
2.3.2 ifdown eth0、ifip eth0
ifdown eth0 禁用网卡,删除了网络层ip
ifip eth0 启用网卡
2.4 扫描eth0接口的数据
2.5 网卡别名
网卡别名是什么?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 确实不存在了
更多网卡别名参见 网卡别名的设置
2.5.1 ip 地址绑定到某个网卡
可以通ifconfig命令往一个网卡添加多个地址,如果不指定别名,会自动增加一个别名
使用如下命令:
ifconfig 网卡名 add ip地址
ifconfig 网卡名 del ip地址
示例:
[root@localhost ~]# ifconfig
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500inet 192.168.206.140 netmask 255.255.255.0 broadcast 192.168.206.255inet6 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 0TX packets 715 bytes 112423 (109.7 KiB)TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536inet 127.0.0.1 netmask 255.0.0.0inet6 ::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 0TX 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 1500inet 192.168.206.140 netmask 255.255.255.0 broadcast 192.168.206.255inet6 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 0TX packets 781 bytes 119581 (116.7 KiB)TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0ens33:0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500inet 192.168.206.150 netmask 255.255.255.0 broadcast 192.168.206.255ether 00:0c:29:ee:01:80 txqueuelen 1000 (Ethernet)lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536inet 127.0.0.1 netmask 255.0.0.0inet6 ::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 0TX 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 1500inet 192.168.206.140 netmask 255.255.255.0 broadcast 192.168.206.255inet6 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 0TX packets 953 bytes 139954 (136.6 KiB)TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536inet 127.0.0.1 netmask 255.0.0.0inet6 ::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 0TX packets 18 bytes 1560 (1.5 KiB)TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
3. route
通过man route查看详细语法
NAMEroute - show / manipulate the IP routing tableSYNOPSISroute [-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]
3.1 查看路由表
route 或route -n ,多用后者
这里的网关是指下一跳地址
默认是查看ipv4
路由,如果想查看ipv6
的:
route -n -6
3.2 添加路由记录
是临时添加的记录,重启network服务就失效
3.2.1 添加到达目标主机的路由
如果你想添加一个目标地址的话,可以采用这个方法,[]表示可选
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
3.2.2 添加到达目标网络的路由
如果你想把某个网络的全部地址都加入路由的话,可以采用这个方法
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
3.2.3 添加默认路由
route add default gw 网关
比如给eth0添加一条默认路由,网关是10.2.111.111
route add default gw 10.2.111.111
3.3 删除路由记录
删除路由记录只需要把添加路由记录命令中的add改成del就可以了,不过删除路由记录可以省略接口
1)删除到达目标主机的路由记录
route del -host 主机名
2)删除到达目标网络的路由记录
route del -net 目标网络/子网掩码
3)删除默认路由
route del default
4. ip route
ip route 的用法与route大同小异
4.1 显示路由:
ip route [show | list]
ip route显示的路由记录与route显示的格式不一样
4.2 添加路由
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
4.3 删除路由
ip route del 目标网络/掩码
ip route del default [via 网关]
4.4 清空路由表:
ip route flush
5. ip link
ip link (show) 表示链路层的信息,更底层,偏向于物理层,主要是操作网卡,如你可以设置网卡的up down,而ip addr 侧重ip层
5.1 查看
ip link只能看链路层的状态,看不到ip地址
5.2 启用、禁用接口
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不包括在内。
6. ip addr
ip link (show) 表示链路层的信息,更底层,偏向于物理层,主要是操作网卡,如你可以设置网卡的up down,而ip addr 侧重ip层
。
6.1 查看
6.1.1 ip addr 查看全部网卡信息
缩写为 ip a ,可以查看网卡的ip、mac等,即使网卡处于down状态,也能显示出网卡状态,但是ifconfig查看就看不到。
6.1.2 ip addr show device 查看指定网卡的信息
比如查看eth的信息,就是ip addr show eth0
6.2 作用域
scope {global|link|host}]:指明作用域
①global: 全局可用,即两个接口进来的数据我都可以响应。是默认状态。②link: 仅链接可用,进来的数据只有直接相连的那个接口能够响应③host: 本机可用,即只能自己访问
6.3 增加ip
ip addr add ip/netmask dev 接口
例如 ip addr add 2.2.2.2/16 dev eth0
6.4 删除ip
ip addr del ip-xx/netmask-xx dev
接口
6.5 清空指定网卡的所有ip
ip addr flush dev 接口
6.6 给网卡起别名,起别名相当于给网卡多绑定了一个ip
用法: 比如给网卡eth0增加别名
ip addr add 3.3.3.3/16 dev eth0 label eth0:1
6.7 删除别名
ip addr del ip/netmask dev eth0 [label eth0:1]
6.8 注意事项
6.8.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:1BOOTPROTO=staticIPADDR= ==》ip地址PREFIX= ==》掩码GATEWAY= ==》网关
设置别名时必须是静态ip,不能是自动获取
3、 重启服务
Centos6: service network restart
Centos7: systemctl restart network
如果不想要这个别名了,直接删除该文件,然后重启服务即可 。
6.8.2 使用命令的方式增加或者删除ip,如果重启network服务,那么操作就失效了
使用命令的方式增加或者删除ip,都是临时的,如果重启network服务,那么操作就失效了。想要永久生效可以修改配置文件/etc/sysconfig/network-scripts/ifcfg-eth*
,这个文件是用来设置网卡参数,这个文件内的所有设置,基本上就是bash的变量设置规则(都应该要大写),否则我们的scropt会误判。
步骤如下:
1) 编辑文件
vim /etc/sysconfig/network-scripts/ifcfg-eth0 至少要有如下几项:
DEVICE=eth0BOOTPROTO=staticIPADDR= ==》ip地址PREFIX= ==》掩码GATEWAY= ==》网关
2)生效:重启服务
Centos6: service network restart
Centos7: systemctl restart network
6.8.3 使用命令的方式增加或者删除路由记录,如果重启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及路由记录的小命令,临时起作用的命令一般用在测试环境中,想要永久生效就需要写在文件里。
参考
ifconfig、route、ip route、ip addr、 ip link 用法