我正在尝试以下命令:
ip link set dev wlp3s0 down
Run Code Online (Sandbox Code Playgroud)
关闭界面“wlp3s0”(在我的情况下是Wi-Fi),它可以工作。但是当我尝试使用以下命令恢复界面时:
ip link set dev wlp3s0 up
Run Code Online (Sandbox Code Playgroud)
接口“wlp3s0”没有恢复。
事实上,我必须使用“GNOME 网络管理器”的 GUI 按钮(当我单击音量控制图标时位于下方)关闭 Wi-Fi,然后手动再次连接到它,这会自动完成这项工作。
为什么恢复网络接口的命令不起作用(在我的情况下恰好是“wlp3s0”)?
我正在使用:4.7.1-1-ARCH #1 SMP PREEMPT x86_64 系统。拱形Linux。
笔记:
我一直在 Internet 上搜索此问题,有些帖子表明这可能是硬件问题。我的无线驱动芯片组信息如下:
$ lspci | grep -i wireless
03:00.0 Network controller: Qualcomm Atheros QCA9565 / AR9565 Wireless Network Adapter (rev 01)
Run Code Online (Sandbox Code Playgroud)
你的问题是为什么它不起作用。请记住,OSI 网络系统由几个层组成:物理层(电缆/无线电)、链路(以太网/802.11)、网络(IP)、传输层(TCP),以及一些经常错位在一起的更高层。当你这样做时。
ip link set dev wlp3s0 down
Run Code Online (Sandbox Code Playgroud)
它确实降低了链路层(OSI 链路层)。这意味着所有更高层也将被关闭:IP 被遗忘,任何 TCP 连接都被破坏。
ip link set dev wlp3s0 up
Run Code Online (Sandbox Code Playgroud)
是否会启动链路层(假设不涉及加密,请参阅下面的额外加密说明)。运行后你应该看到:
$ ip link show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: wlp3s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DORMANT group default qlen 1000
link/ether 00:22:43:1b:ae:46 brd ff:ff:ff:ff:ff:ff
Run Code Online (Sandbox Code Playgroud)
wlp3s0
应该处于状态DORMANT
或UP
(取决于您运行命令时是否有流量通过)。对于所有链路层目的,它都已启动,按照ip
您的要求进行操作。
现在您有了链路层连接,您需要使用 DHCP 客户端从附近的 DHCP 服务器(通常是家庭路由器)获取 IP。Archdhcpcd
用作 DCHP 客户端。
dhcpcd wlp3s0
Run Code Online (Sandbox Code Playgroud)
会给你一个 IP(并占用你当前的终端,因为它没有在没有-b
标志的守护进程模式下运行)。
大多数无线连接并不简单,它们使用 WEP 或 WPA/WPA2。在这种情况下,要建立链路层,比普通的工作还多:
ip link set dev wlp3s0 up
Run Code Online (Sandbox Code Playgroud)
iw
可以通过指定某个接口使用的密钥来处理 WEP 加密。之后ip link set
就能建立链路层连接。
WPA(和 WPA2)需要更多涉及密钥协商的过程。使用 WPA 时wpa_supplicant
,它会回绕ip
以使用路由器构建所有必要的消息,然后设置链路层。
请注意,无论是iw
或wpa_suppicant
将不能为你提供一个IP。
还,
ip link set dev wlp3s0 down
Run Code Online (Sandbox Code Playgroud)
很乐意丢弃配置iw
或建立的链路层连接wpa_supplicant
,这是因为丢弃链路层不涉及任何加密功能。它只是告诉路由器:我不再和你说话了,忘记我吧。
现在,networkmanager
是一个更高的包装器。它ip
用于普通连接、wpa_supplicant
加密连接,并dhcpcd
在建立dhcpcd
链路层时自动运行(或它自己的内置 DHCP 客户端,如果找不到)。
换句话说networkmanager
,在幕后做了很多事情。
归档时间: |
|
查看次数: |
9316 次 |
最近记录: |