使用 ip 命令你可以调整 Linux 系统的 ip 地址, 控制网卡和路由。修改是立即生效的,你不需要重启系统。 ip 命令可以做的不仅如此,但是这篇文章我们就关注最主要的功能。
IP 命令还有很多子命令,每一个子命令都是工作在一个对象上的,例如 IP 地址个路由。而且还有很多选项如此多的功能供你选择
我们关注的对象有:
- IP 地址
- 连接(Link)
- 路由(Route)
显然,首先你需要知道你要做什么,查找你的电脑有哪些 IP 你使用 IP 命令操作相应的对象,默认行为是 show 它可以显示 IP 列表。 你可以省略 show 或者 地址(address) 的缩写 addr 甚至 a。
下面的命令是等价的
ip address show
ip addr show
ip addr
ip a
如果你想限制只显示IPv4输出,你可以使用 -4 选项
ip -4 addr
同理,你可以使用 -6 选项,只输出 IPv6 信息
ip -6 addr
如果你只想显示指定网卡的信息,你可以使用 show 和 dev 选项,并且指定网卡名称,如下所示
ip show dev eth0
ip show dev enp0s3
当然你也可以使用 -4 或者 -6 标志 过滤输出你感兴趣的信息 如果你想查看在网卡 enp0s3 上的 IPv4 信息,你可以输入 下面的命令
ip -4 addr show dev enp0s3
你可以使用 add 和 dev 选项添加一个 IP 到指定的网卡,你需要告知 IP 命令哪一个 IP 需要添加到哪一个网卡
例如我们添加 IP 地址 192.168.178.2 到 网卡 enp0s3。我们必须要提供 CIDR 子网掩码。 我们可以使用下面的命令
ip addr add 192.168.178.2/24 dev enp0s3
我们可以使用下面的命令查看操作是否成功
ip -4 addr show dev enp0s3
新的 IP 已经添加到了指定的网卡,我们可以登陆到另一台主机,然后使用下面的命令验证
ping 192.168.178.2
删除 IP 地址,命令和添加 IP 地址很像,你只需要使用 del 替换 add,例如下面:
ip addr del 192.168.178/24 dev enp0s3
同样的,你可以使用下面的命令校验
ip -4 addr show dev enp0s3
使用 route 对象,你可以查看和操作路由。路由定义了网路如何经过不同的网卡分发到不同的 IP 地址。
如果目的主机和设备在同一个网络,可以直接发包
如果在不同的网络就需要经过网关和路由
查看你主机的路由信息,使用下面的命令
ip route
或者
ip ro
如果你关注指定的路由的详细信息,你可以使用 list 选项和 IP 地址范围命令如下:
ip route list 192.168.178.2/24
我们添加一个网卡,可以使用下面的命令:
ip link show
我们添加一个新的路由到这个新的网卡,首先,使用下面的命令绑定 IP:
ip addr add 192.168.178.2/24 dev enp0s3
一个默认的路由已经添加了到新的网卡,我们使用 delete 选项,就像下面,去删除默认的路由
ip route delete default via 192.168.178.2 dev enp0s3
现在我们就可以使用 add 选项添加一个新的路由。新的网卡就会处理 192.168.178.2/24 IP 范围的网络分发。 我们给他 metric 100;因为它是仅有的路由。命令如下:
ip route add 192.168.178.2/24 dev enp0s3 metric 100
现在,我们可以使用下面的命令进行验证:
ip route