ip命令是一个新网络命令行工具,它用于在LInux系统中分配一个IP地址给一个网络接口或者配置/更新有用的网络变量。它是iproute软件包的组成部分,并且提供了若干网络管理任务,诸如开启或关闭网络接口,分配和移除IP地址和路由,管理ARP缓存等。
[root@rockygu ~]# dnf whatprovides "ip"
Last metadata expiration check: 2:42:10 ago on Mon 01 Aug 2022 07:45:22 PM CST.
iproute-5.15.0-4.el8.x86_64 : Advanced IP routing and network device configuration tools
Repo : @System
Matched from:
Filename : /usr/sbin/ip
Provide : /sbin/ip
ip命令非常类似于老的ifconfig命令,但由于添加了更多功能和能力,它要强大得多。ifconfig命令在所有现代Linux发行版中已经被启用并且被ip命令替代。然而,ifconfig命令对于大部分linux发行版仍然可用。
注意:在进行任何更改前请备份配置文件。
要在Linux中配置静态IP地址,你需要更新或编辑网络配置文件来分配一个静态IP地址给系统。你必须是一个用su命令从终端或者命令提示的超级用户。
对于RHEL/CentOS/Fedora和Rocky Linux/AlmaLinux
用编辑器打开并且编辑网络配置文件。例如,分配IP地址给enp3s0接口。
[root@rockygu ~]# vim /etc/sysconfig/network-scripts/ifcfg-enp3s0
输出结果:
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=enp3s0
UUID=aed3f17e-747c-4a13-b421-407bb0a57f69
DEVICE=enp3s0
IPADDR=192.168.3.30
PREFIX=24
ONBOOT=yes
在设置了配置后,重启网络服务。
[root@localhost network-scripts]# systemctl restart NetworkManager.service
以下命令将用
[root@localhost ~]# ip addr add 192.168.3.31 dev enp3s0
于立即分配一个IP地址给一个特定接口(enp3s0)。
[root@localhost ~]# ip addr show enp3s0
2: enp3s0: mtu 1500 qdisc mq state UP group default qlen 1000
link/ether c4:00:ad:54:a3:23 brd ff:ff:ff:ff:ff:ff
inet 192.168.3.30/24 brd 192.168.3.255 scope global noprefixroute enp3s0
valid_lft forever preferred_lft forever
inet 192.168.3.31/32 scope global enp3s0
valid_lft forever preferred_lft forever
inet6 fe80::53ff:e021:58e4:1629/64 scope link noprefixroute
valid_lft forever preferred_lft forever
要获取如IP地址、MAC地址信息的网卡接口的信息,使用以下命令。
[root@localhost ~]# ip addr show
1: lo: mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: enp3s0: mtu 1500 qdisc mq state UP group default qlen 1000
link/ether c4:00:ad:54:a3:23 brd ff:ff:ff:ff:ff:ff
inet 192.168.3.30/24 brd 192.168.3.255 scope global noprefixroute enp3s0
valid_lft forever preferred_lft forever
inet 192.168.3.31/32 scope global enp3s0
valid_lft forever preferred_lft forever
inet6 fe80::53ff:e021:58e4:1629/64 scope link noprefixroute
valid_lft forever preferred_lft forever
...
8: eno1: mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 00:19:0f:3d:c9:3d brd ff:ff:ff:ff:ff:ff
inet 192.168.50.74/24 brd 192.168.50.255 scope global noprefixroute dynamic eno1
valid_lft 86072sec preferred_lft 86072sec
inet6 fe80::755d:a1a5:8380:e9f9/64 scope link noprefixroute
valid_lft forever preferred_lft forever
...
以下命令将从指定接口(enp3s0)移除一个分配的IP地址。
[root@localhost ~]# ip addr del 192.168.3.30/24 dev enp3s0
[root@localhost ~]# ip addr show enp3s0
2: enp3s0: mtu 1500 qdisc mq state UP group default qlen 1000
link/ether c4:00:ad:54:a3:23 brd ff:ff:ff:ff:ff:ff
inet 192.168.3.31/32 scope global enp3s0
valid_lft forever preferred_lft forever
inet6 fe80::53ff:e021:58e4:1629/64 scope link noprefixroute
valid_lft forever preferred_lft forever
接口名称(enp3s0)的"up"标记将启用一个网络接口。例如,以下命令将激活enp3s0网卡接口。
[root@localhost ~]# ip link set enp3s0 down
[root@localhost ~]# ip addr show enp3s0
2: enp3s0: mtu 1500 qdisc mq state DOWN group default qlen 1000
link/ether c4:00:ad:54:a3:23 brd ff:ff:ff:ff:ff:ff
接口名称(enp3s0)的"down"标记禁用一个网络接口。例如,以下命令将禁用enp3s0网络接口。
[root@localhost ~]# ip link set enp3s0 up
[root@localhost ~]# ip addr show enp3s0
2: enp3s0: mtu 1500 qdisc mq state UP group default qlen 1000
link/ether c4:00:ad:54:a3:23 brd ff:ff:ff:ff:ff:ff
inet 192.168.3.30/24 brd 192.168.3.255 scope global noprefixroute enp3s0
valid_lft forever preferred_lft forever
inet6 fe80::53ff:e021:58e4:1629/64 scope link noprefixroute
valid_lft forever preferred_lft forever
输入以下命令检测系统的路由表信息。
[root@localhost ~]# ip route show
default via 192.168.50.1 dev eno1 proto dhcp metric 100
192.168.3.0/24 dev enp3s0 proto kernel scope link src 192.168.3.30 metric 101
192.168.50.0/24 dev eno1 proto kernel scope link src 192.168.50.74 metric 100
192.168.122.0/24 dev virbr0 proto kernel scope link src 192.168.122.1
你为什么需要添加静态路由或者手动路由,因为那些流量一定不通过默认网关。我们需要添加静态路由使得流量从最佳路径到达目的地。
[root@localhost ~]# ip route add 10.30.40.0/24 via 192.168.3.254 dev enp3s0
[root@localhost ~]# ip route show
default via 192.168.50.1 dev eno1 proto dhcp metric 100
10.30.40.0/24 via 192.168.3.254 dev enp3s0
192.168.3.0/24 dev enp3s0 proto kernel scope link src 192.168.3.30 metric 101
192.168.50.0/24 dev eno1 proto kernel scope link src 192.168.50.74 metric 100
192.168.122.0/24 dev virbr0 proto kernel scope link src 192.168.122.1
要移除分配的静态路由,只要输入以下命令。
[root@localhost ~]# ip route del 10.30.40.0/24
[root@localhost ~]# ip route show
default via 192.168.50.1 dev eno1 proto dhcp metric 100
192.168.3.0/24 dev enp3s0 proto kernel scope link src 192.168.3.30 metric 101
192.168.50.0/24 dev eno1 proto kernel scope link src 192.168.50.74 metric 100
192.168.122.0/24 dev virbr0 proto kernel scope link src 192.168.122.1
在系统重启后,所有以上路由将丢失。要添加永久静态路由,编辑文件/etc/sysocnfig/network-scripts/route-enp3s0。
[root@localhost network-scripts]# cat route-enp3s0
10.30.40.0/24 via 192.168.3.254 dev enp3s0
接着,在使用命令输入所有细节后,重启网络服务。
[root@localhost network-scripts]# systemctl restart NetworkManager
[root@localhost network-scripts]# ip route show
default via 192.168.50.1 dev eno1 proto dhcp metric 100
10.30.40.0/24 via 192.168.3.254 dev enp3s0
192.168.3.0/24 dev enp3s0 proto kernel scope link src 192.168.3.30 metric 101
192.168.50.0/24 dev eno1 proto kernel scope link src 192.168.50.74 metric 100
192.168.122.0/24 dev virbr0 proto kernel scope link src 192.168.122.1
能够全局地或者为接口特定配置文件指定默认网关。默认网关地优势是如果我们在系统中有多块网卡。你可以用以下命令立即添加默认网关。
[root@localhost network-scripts]# ip route add default via 192.168.3.254
[root@localhost network-scripts]# ip route show
default via 192.168.3.254 dev enp3s0
default via 192.168.50.1 dev eno1 proto dhcp metric 100
10.30.40.0/24 via 192.168.3.254 dev enp3s0
192.168.3.0/24 dev enp3s0 proto kernel scope link src 192.168.3.30 metric 101
192.168.50.0/24 dev eno1 proto kernel scope link src 192.168.50.74 metric 100
192.168.122.0/24 dev virbr0 proto kernel scope link src 192.168.122.1
用以下命令可以删除默认网关。
[root@localhost network-scripts]# ip route del default via 192.168.3.254
[root@localhost network-scripts]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.50.1 0.0.0.0 UG 100 0 0 eno1
10.30.40.0 192.168.3.254 255.255.255.0 UG 0 0 0 enp3s0
192.168.3.0 0.0.0.0 255.255.255.0 U 101 0 0 enp3s0
192.168.50.0 0.0.0.0 255.255.255.0 U 100 0 0 eno1
192.168.122.0 0.0.0.0 255.255.255.0 U 0 0 0 virbr0