syl*_*lye 7 networking ip iproute
我正在研究如何让iproute2命令替换旧的ifconfig
和ifup
ifdown
命令,我发现了一些有趣的东西。
我的网卡设置是:
[16:07:41 root@vm network-scripts ]# cat /etc/sysconfig/network-scripts/ifcfg-eth2
DEVICE=eth2
ONBOOT=no
BOOTPROTO=dhcp
Run Code Online (Sandbox Code Playgroud)
要打开和关闭界面,旧的方法是:
ifup eth2
ifdown eth2
[16:25:10 root@vm network-scripts ]# ip a show eth2
4: eth2: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast state DOWN qlen 1000
link/ether 08:00:27:b8:13:b4 brd ff:ff:ff:ff:ff:ff
[16:25:14 root@vm network-scripts ]# ifup eth2
Determining IP information for eth2... done.
[16:25:22 root@vm network-scripts ]# ip a show eth2
4: eth2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 08:00:27:b8:13:b4 brd ff:ff:ff:ff:ff:ff
inet 192.168.1.4/24 brd 192.168.1.255 scope global eth2
inet6 fe80::a00:27ff:feb8:13b4/64 scope link
valid_lft forever preferred_lft forever
[16:25:26 root@vm-cention network-scripts ]# ifdown eth2
[16:27:51 root@vm-cention network-scripts ]# ip a show eth2
4: eth2: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast state DOWN qlen 1000
link/ether 08:00:27:b8:13:b4 brd ff:ff:ff:ff:ff:ff
Run Code Online (Sandbox Code Playgroud)
要使用iproute2命令来执行此操作,通常我们使用ip link set eth2 up
,但显然iproute2
只能调出网卡的链路层,而不能调出 IP 地址:
[16:36:25 root@vm network-scripts ]# ip link set eth2 up
[16:37:16 root@vm network-scripts ]# ip a show eth2
4: eth2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 08:00:27:b8:13:b4 brd ff:ff:ff:ff:ff:ff
inet6 fe80::a00:27ff:feb8:13b4/64 scope link
valid_lft forever preferred_lft forever
[16:37:20 root@vm network-scripts ]# ping yahoo.com
ping: unknown host yahoo.com
Run Code Online (Sandbox Code Playgroud)
但是传统的ifup
可以做到这一点:
[16:37:39 root@vm network-scripts ]# ifup eth2
Determining IP information for eth2... done.
[16:39:59 root@vm network-scripts ]# ip a show eth2
4: eth2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 08:00:27:b8:13:b4 brd ff:ff:ff:ff:ff:ff
inet 192.168.1.4/24 brd 192.168.1.255 scope global eth2
inet6 fe80::a00:27ff:feb8:13b4/64 scope link
valid_lft forever preferred_lft forever
[16:40:04 root@vm network-scripts ]# ping yahoo.com
PING yahoo.com (98.139.183.24) 56(84) bytes of data.
64 bytes from ir2.fp.vip.bf1.yahoo.com (98.139.183.24): icmp_seq=1 ttl=43 time=243 ms
64 bytes from ir2.fp.vip.bf1.yahoo.com (98.139.183.24): icmp_seq=2 ttl=43 time=341 ms
Run Code Online (Sandbox Code Playgroud)
我认为这是由于ifup
将链路层和 IPv4 地址结合在一起。
所以我的问题是:我们如何使用 iproute2 来启用 IPv4 地址?
旁注:
有趣的是,当iproute2
关闭链路层时,它不会禁用 IPv4 地址:
[16:42:50 root@vm network-scripts ]# ip a show eth2
4: eth2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 08:00:27:b8:13:b4 brd ff:ff:ff:ff:ff:ff
inet 192.168.1.4/24 brd 192.168.1.255 scope global eth2
inet6 fe80::a00:27ff:feb8:13b4/64 scope link
valid_lft forever preferred_lft forever
[16:42:58 root@vm network-scripts ]# ip link set eth2 down
[16:43:04 root@vm network-scripts ]# ip a show eth2
4: eth2: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast state DOWN qlen 1000
link/ether 08:00:27:b8:13:b4 brd ff:ff:ff:ff:ff:ff
inet 192.168.1.4/24 brd 192.168.1.255 scope global eth2
[16:43:09 root@vm network-scripts ]# ping yahoo.com
ping: unknown host yahoo.com
Run Code Online (Sandbox Code Playgroud)
ip
并ifup
用于不同的目的,并且是免费的。ip
不应该用来代替ifup
. 实际上,ifup
在更高的层次上运作。
ifconfig
(传统的、可移植的)和ip
(仅限 Linux,但界面要好得多)是两个用于相同目的的命令。它们用于直接设置接口配置。ip
确实完全取代ifconfig
(和route
一些netstat
),因为它有更好的界面和更广泛的功能,除了ifconfig
保持兼容性。
无论是ip
也不ifconfig
含有或管理持久性配置。他们应用他们在命令行上得到的请求,就是这样。
ifup
和ifdown
用于根据系统配置打开和关闭接口。在某些系统上,此配置保留在 中/etc/network/interfaces
,在其他系统上则保留在/etc/sysconfig/something
. 他们的工作是读取整个配置,包括 IP 地址、路由、DNS 服务器、自定义脚本等……并将其应用到系统中。他们通过调用ip
或来做到这一点(至少在概念上是这样)ifconfig
。
您可以手动执行所有用于调出界面的ip
命令ifup
,但要注意ifup
/ifdown
持久状态信息将与现实不同步。ifup
即使在您使用ip
.
归档时间: |
|
查看次数: |
6661 次 |
最近记录: |