Wi-Fi 网络接口 - Linux 命令不起作用

Aru*_*run 2 wifi arch-linux

我正在尝试以下命令:

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)

gro*_*mal 7

你的问题是为什么它不起作用。请记住,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应该处于状态DORMANTUP(取决于您运行命令时是否有流量通过)。对于所有链路层目的,它都已启动,按照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以使用路由器构建所有必要的消息,然后设置链路层。

请注意,无论是iwwpa_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,在幕后做了很多事情