龚哥 發表於 2023-4-30 22:37:00

PVE (基于Debian 11) WiFi 折腾

<h1 id="deb-离线安装-wifi-所需软件">deb 离线安装 WiFi 所需软件</h1>
<p>wpasupplicant:WiFi认证工具<br>
iw:据说可以取代iwconfig<br>
wireless-tools :包含iwconfig等命令<br>
net-tools:包含ifconfig等命令<br>
安装方法略过, 记得每个 deb 都有一到两个依赖就行, 先安装依赖.</p>
<h1 id="wpawpa2">WPA、WPA2</h1>
<p>以前的WiFi加密是不安全的WEP,被WPA、WPA2取代,维基百科:</p>
<pre><code>有线等效加密(英语:Wired Equivalent Privacy,缩写:WEP),又称无线加密协议(英语:Wireless Encryption Protocol,缩写:WEP),是个保护无线网络信息安全的体制,于1997年,由IEEE802.11制定与发布。
因为无线网络是用无线电把消息传播出去,它特别容易被窃听。WEP的设计是要提供和传统有线的局域网相当的机密性,而依此命名的。不过密码分析学家已经找出有线等效加密几个弱点,因此在2003年被Wi-Fi Protected Access (WPA)取代,随着2004年发布完整IEEE 802.11i标准,其中所制定的WPA2淘汰了WEP-40与WEP-104。

最初WEP仅适用于802.11a与802.11b,而其后的第一代WPA适用于802.11g。但随着部分厂商升级自家802.11b产品的固件,亦能采用WPA加密。
</code></pre>
<p>所以你看到直接在命令行中提供WiFi SSID和密码就可以连接WiFi的都是过时的教程了,必须要使用到wpa_supplicant:</p>
<pre><code>wpa_supplicant -B -D wext -i wlp15s0 -c /etc/wpa_supplicant.conf
</code></pre>
<p>继续之前,建议先参考文档:<br>
https://linuxcommando.blogspot.com/2013/10/how-to-connect-to-wpawpa2-wifi-network.html<br>
https://juejin.cn/post/7115643955915522078</p>
<h1 id="网络接口问题">网络接口问题</h1>
<p>这是安装完成后默认的网络配置:</p>
<pre><code>cat /etc/network/interfaces
auto lo
iface lo inet loopback

iface wlp15s0 inet manual

auto vmbr0
iface vmbr0 inet static
      address 192.168.0.123/24
      gateway 192.168.0.1
      bridge-ports wlp15s0
      bridge-stp off
      bridge-fd 0

iface enp8s0 inet manual
</code></pre>
<p>这个桥接网络明显是不能使用的,而且会有网段冲突之类的问题,先ifdown掉它,把WiFi连接上再说。<br>
这是可以正常访问网络的网络:</p>
<pre><code># ifconfig
lo: flags=73&lt;UP,LOOPBACK,RUNNING&gt;mtu 65536
      inet 127.0.0.1netmask 255.0.0.0
      inet6 ::1prefixlen 128scopeid 0x10&lt;host&gt;
      looptxqueuelen 1000(Local Loopback)
      RX packets 208bytes 19288 (18.8 KiB)
      RX errors 0dropped 0overruns 0frame 0
      TX packets 208bytes 19288 (18.8 KiB)
      TX errors 0dropped 0 overruns 0carrier 0collisions 0

wlp15s0: flags=4163&lt;UP,BROADCAST,RUNNING,MULTICAST&gt;mtu 1500
      inet 192.168.0.108netmask 255.255.255.0broadcast 192.168.0.255
      ether e4:02:9b:53:4c:7etxqueuelen 1000(Ethernet)
      RX packets 7893bytes 10110738 (9.6 MiB)
      RX errors 0dropped 0overruns 0frame 0
      TX packets 5008bytes 532397 (519.9 KiB)
      TX errors 0dropped 0 overruns 0carrier 0collisions 0
</code></pre>
<p>这是可以正常访问网络的路由:</p>
<pre><code># ip route show
default via 192.168.0.1 dev wlp15s0
192.168.0.0/24 dev wlp15s0 proto kernel scope link src 192.168.0.108
</code></pre>
<h1 id="如何使用-linux-命令行连接到-wpawpa2-wifi-网络">如何使用 Linux 命令行连接到 WPA/WPA2 WiFi 网络</h1>
<p>这一步我们就要先把网络打通,参考文章是:https://linuxcommando.blogspot.com/2013/10/how-to-connect-to-wpawpa2-wifi-network.html</p>
<ol>
<li>首先找到 WiFi 物理网卡名称,常见的有 wlan0,但是我这个叫 wlp15s0。</li>
</ol>
<pre><code># iw dev
phy#0
      Interface wlp15s0
                ifindex 3
                wdev 0x1
                addr e4:02:9b:53:4c:7e
</code></pre>
<ol start="2">
<li>检查无线设备是否已启动</li>
</ol>
<pre><code># ip link show wlp15s0
3: wlp15s0: &lt;BROADCAST,MULTICAST,UP,LOWER_UP&gt; mtu 1500 qdisc noqueue state UP mode DORMANT group default qlen 1000
    link/ether e4:02:9b:53:4c:7e brd ff:ff:ff:ff:ff:ff
</code></pre>
<p>我这里因为已经成功了,所以是UP,应该是DOWN的。可以尝试启动:</p>
<pre><code># ip link set wlp15s0 up
</code></pre>
<p>不过我第一次执行该命令的时候并没有成功,但不影响,继续</p>
<ol start="3">
<li>检查 WiFi 连接状态</li>
</ol>
<pre><code># iw wlp15s0 link
Not connected.
</code></pre>
<ol start="4">
<li>扫描以找出检测到的 WiFi 网络<br>
两种扫描方式:</li>
</ol>
<pre><code># iw wlp15s0 scan | grep SSID
# iwlist wlp15s0 scan | grep ESSID
</code></pre>
<ol start="5">
<li>连接到 WPA/WPA2 WiFi 网络</li>
</ol>
<pre><code># wpa_passphrase {SSID} &gt;&gt; /etc/wpa_supplicant.conf
这里没有任何提示,直接输入 WiFi 密码后回车即可,有回显
</code></pre>
<p>然后我们得到一个 WiFi 配置文件:</p>
<pre><code># cat /etc/wpa_supplicant.conf
# reading passphrase from stdin
network={
      ssid="xxx_5G"
      #psk="88888888"
      psk=a2684d5a639d3c1bc301e40a0d23046b73144094a77876d2d7192739ec0db550
}
</code></pre>
<p>开始尝试连接 WiFi :</p>
<pre><code># wpa_supplicant -B -D wext -i wlp15s0 -c /etc/wpa_supplicant.conf
Successfully initialized wpa_supplicant
ioctl: Invalid argument
ioctl: Invalid argument
</code></pre>
<p>-B表示在后台 运行wpa_supplicant 。<br>
-D指定无线驱动程序。 wext是通用驱动程序。(如果您使用英特尔 wifi:将 wext 替换为 nl80211。<code>wpa_supplicant -h</code>可以查看驱动列表)<br>
-c指定配置文件的路径。<br>
使用iw命令验证您确实已连接到 SSID:</p>
<pre><code># iw wlp15s0 link
Connected to b0:df:c1:87:8e:15 (on wlp15s0)
      SSID: xxx_5G
      freq: 5765
      RX: 17166166 bytes (14387 packets)
      TX: 2820770 bytes (9875 packets)
      signal: -58 dBm
      rx bitrate: 292.5 MBit/s VHT-MCS 7 80MHz VHT-NSS 1
      tx bitrate: 433.3 MBit/s VHT-MCS 9 80MHz short GI VHT-NSS 1

      bss flags:      short-slot-time
      dtim period:    1
      beacon int:   100
</code></pre>
<ol start="6">
<li>通过DHCP获取IP地址</li>
</ol>
<pre><code># dhclient wlp15s0
# ip addr show wlp15s0
3: wlp15s0: &lt;BROADCAST,MULTICAST,UP,LOWER_UP&gt; mtu 1500 qdisc noqueue state UP group default qlen 1000
    link/ether e4:02:9b:53:4c:7e brd ff:ff:ff:ff:ff:ff
    inet 192.168.0.108/24 brd 192.168.0.255 scope global dynamic wlp15s0
       valid_lft 77969sec preferred_lft 77969sec
</code></pre>
<ol start="7">
<li>添加默认路由规则<br>
最后的配置步骤是确保您拥有正确的路由规则。</li>
</ol>
<pre><code>$ ip route show
192.168.1.0/24 dev wlp15s0 proto kernel scope link src 192.168.1.113
</code></pre>
<p>上面的路由表只包含 1 条规则,它将所有发往本地子网 (192.168.1.x) 的流量重定向到wlan0接口。您可能想要添加一个默认路由规则以通过wlan0传递所有其他流量。</p>
<pre><code>$ sudo ip route add default via 192.168.0.1 dev wlp15s0
$ ip route show
default via 192.168.0.1 dev wlp15s0
192.168.0.0/24 dev wlp15s0 proto kernel scope link src 192.168.0.108
</code></pre>
<h1 id="持久化配置">持久化配置</h1>
<p>有人回复:</p>
<pre><code>非常感谢!我的 Linux Mint Debian Edition 笔记本电脑现在已连接 Wi-Fi。很棒的文章!
我只需要将步骤 7 中的路由命令更改为:
sudo route add default gw &lt;gateway&gt; &lt;interface&gt;

此外,路由和 wpa_supplicant 命令不是持久的。对于永久更改,我们必须将它们添加到 /etc/network/interfaces(对于 Debian)的 Wi-Fi 接口部分。我的结果是这样的:

auto &lt;interface&gt;
iface &lt;interface&gt; inet dhcp
wireless-essid &lt;essid&gt;
pre-up wpa_supplicant -B -D wext -i &lt;interface&gt; -c /etc/wpa_supplicant.conf
post-up route add default gw &lt;网关&gt; &lt;接口&gt;
post-down killall -q wpa_supplicant
</code></pre>
<p>我们再看:https://www.linuxbabe.com/command-line/ubuntu-server-16-04-wifi-wpa-supplicant</p>
<ol>
<li>修改服务配置</li>
</ol>
<pre><code># cat /lib/systemd/system/wpa_supplicant.service

Description=WPA supplicant
Before=network.target
After=dbus.service
Wants=network.target
IgnoreOnIsolate=true


Type=dbus
BusName=fi.w1.wpa_supplicant1
#ExecStart=/sbin/wpa_supplicant -u -s -O /run/wpa_supplicant
ExecStart=/sbin/wpa_supplicant -u -s -c /etc/wpa_supplicant.conf -i wlp15s0
Restart=always


WantedBy=multi-user.target
#Alias=dbus-fi.w1.wpa_supplicant1.service
</code></pre>
<ol start="2">
<li>创建dhclient服务<br>
创建文件:</li>
</ol>
<pre><code># vi /etc/systemd/system/dhclient.service

Description= DHCP Client
Before=network.target


Type=forking
ExecStart=/sbin/dhclient wlp15s0 -v
ExecStop=/sbin/dhclient wlp15s0 -r
Restart=always


WantedBy=multi-user.target
</code></pre>
<p>应用:</p>
<pre><code>systemctl enable dhclient.service
</code></pre>
<ol start="3">
<li>配置静态IP<br>
追加配置文件:</li>
</ol>
<pre><code># vi /etc/dhcp/dhclient.conf
interface "wlp15s0" {
   send dhcp-requested-address 192.168.0.123;
}
</code></pre>
<p>不建议这样配置。<br>
确保您的 Ubuntu 系统具有静态 IP 地址的更好方法可能是登录路由器的管理界面并为您的无线网卡的 MAC 地址分配一个静态 IP,如果您的路由器支持此功能。<br>
我们可以查看-v输出:</p>
<pre><code># systemctl status dhclient.service
● dhclient.service - DHCP Client
   Loaded: loaded (/etc/systemd/system/dhclient.service; enabled; vendor preset: enabled)
   Active: active (running) since Mon 2023-05-01 02:24:30 CST; 10min ago
    Process: 801 ExecStart=/sbin/dhclient wlp15s0 -v (code=exited, status=0/SUCCESS)
   Main PID: 818 (dhclient)
      Tasks: 4 (limit: 9351)
   Memory: 6.2M
      CPU: 26ms
   CGroup: /system.slice/dhclient.service
             └─818 /sbin/dhclient wlp15s0 -v

May 01 02:24:30 pve dhclient: DHCPDISCOVER on wlp15s0 to 255.255.255.255 port 67 interval 16
May 01 02:24:30 pve dhclient: DHCPOFFER of 192.168.0.108 from 192.168.0.1
May 01 02:24:30 pve dhclient: DHCPOFFER of 192.168.0.108 from 192.168.0.1
May 01 02:24:30 pve dhclient: DHCPREQUEST for 192.168.0.108 on wlp15s0 to 255.255.255.255 port 67
May 01 02:24:30 pve dhclient: DHCPREQUEST for 192.168.0.108 on wlp15s0 to 255.255.255.255 port 67
May 01 02:24:30 pve dhclient: DHCPACK of 192.168.0.108 from 192.168.0.1
May 01 02:24:30 pve dhclient: DHCPACK of 192.168.0.108 from 192.168.0.1
May 01 02:24:30 pve dhclient: bound to 192.168.0.108 -- renewal in 34589 seconds.
May 01 02:24:30 pve dhclient: bound to 192.168.0.108 -- renewal in 34589 seconds.
May 01 02:24:30 pve systemd: Started DHCP Client.
</code></pre>
<h1 id="apt-update">apt update</h1>
<p>PVE默认安装企业版,我们需要修改为非订阅版本:</p>
<pre><code># vi /etc/apt/sources.list.d/pve-enterprise.list
#deb https://enterprise.proxmox.com/debian/pve bullseye pve-enterprise
deb http://download.proxmox.com/debian/pve bullseye pve-no-subscription
</code></pre>
<h1 id="文档">文档</h1>
<p>https://pve-doc-cn.readthedocs.io/zh_CN/latest/chapter_system_administration/netconfig.html<br>
https://juejin.cn/post/7115643955915522078<br>
https://linuxcommando.blogspot.com/2013/10/how-to-connect-to-wpawpa2-wifi-network.html<br>
https://www.linuxbabe.com/command-line/ubuntu-server-16-04-wifi-wpa-supplicant</p><br><br>
来源:https://www.cnblogs.com/develon/p/17365896.html
頁: [1]
查看完整版本: PVE (基于Debian 11) WiFi 折腾