搜尋此網誌

2025年10月29日 星期三

Arch 設定 Wifi AP 與 bridge network

緣起:


    我從我姐夫那邊拿到那台桌電時,它有附帶一張音效卡


    但我用不到就是了,所以後來把它拔下來,自己再去買個 M.2 GNFF A E KEY 轉 PCIe,給電腦加上 Wifi 跟藍牙功能比較實用


    想要把 Wifi 設成 AP 模式,給 Steam Deck 連接用,不然每次我想用 Steam Link 連接桌機打遊戲時,都要用轉接線接上 switch hub,限制我只能坐在桌面玩。



用 hostapd 建立 Wifi AP:


    我買的 Wifi 卡是 Intel AX210,原本想啟用 5G頻段的 Wifi AP,但實際在操作時碰上一堆問題,麻煩,所以我最後還是回去 2.4G,80211n 的速度可以來到 600Mbps,40MHz 的 bandwidth,串流 1080p 60fps 已經夠用了。

    安裝 hostapd

sudo pacman -S hostapd

    編輯 /etc/hostapd/hostapd.conf

interface=wlan0
hw_mode=g
#我看我 Wifi Router 的 2.4G 用的是 channel 11,所以這裡就設成 6,不要被它干擾
channel=6
auth_algs=1
ieee80211n=1
wmm_enabled=1

ht_capab=[HT40+,HT40-]

auth_algs=1
wpa=2
ssid=gigabyte-arch-wifi
wpa_passphrase={mypassword}
wpa_key_mgmt=WPA-PSK
wpa_pairwise=CCMP
rsn_pairwise=CCMP

    在啟用 Wifi AP 前,還有一些事情要處理。我網路是由 NetworkManager 管理的,要先解除它對 wlan0 的控制,編輯 /etc/NetworkManager/conf.d/unmanaged.conf,加上

[keyfile]
unmanaged-devices=wlan0

    存檔後重啟 NetworkManager 的服務,這時再啟動 hostapd

sudo hostapd /etc/hostapd/hostapd.conf

    當時在啟動時還有碰到一個問題


    可以下指令來解除

sudo rfkill unblock all

    再接著啟動 hostapd,成功的話可以看到


    這時可以搜到 wifi 了,但沒有 dhcp 的功能,所以要安裝

pacman -S dhcpd

    編輯 /etc/dhcpd.conf,我有線網路的網段是 10.42.1.0,為了不跟它衝突,這裡就設成 10.42.2.0 

default-lease-time 1209600;
max-lease-time 1814400;
ddns-update-style none;
ignore client-updates;
authoritative;
option local-wpad code 252 = text;
# 配置網卡使用的網段,最好不要和其它網卡的網段有所衝突。
subnet 10.42.2.0 netmask 255.255.255.0 {
option routers
10.42.2.1;
#option subnet-mask
#255.255.255.0;
option broadcast-address
10.42.2.255;
option time-offset
0;
# --- 分配的IP地址範圍
range 10.42.2.100 10.42.2.200;
}

    再來固定 wlan0 的 ip 位置

sudo ifconfig wlan0 up 10.42.2.1 netmask 255.255.255.0

    wlan0 啟用 dhcp

sudo dhcpd wlan0

    這樣就能正常連上 wifi,取得 ip 位置了。Steam Deck 連上 Wifi AP後,Steam 偵測到 Steam Deck 跟桌機是處於同個區網,所以可以用區網的速度串流遊戲,不過,Steam Deck 是無法透過 Wifi AP 存取網際網路的,如果想要讓 Steam Deck 能透過這 Wifi AP 來存取網際網路,要再多做 bridge 的設定。


Bridge Network:


    我的桌電是透過有線網路介面 enp5s0 上網,詳細可看這篇,不過呢,現在分享網路的功能改為由 Raspberry Pi 負責了,因為它是 24 小時運作的,功耗也比 N100 低。

    現在,單看桌電上網的部份會是這樣


    我需要建立一個 bridge network 來把桌電的 wlan0 跟 enp5s0 接起來,讓接上 wlan0 的設備也能處於 10.42.1.0 的網段

    安裝工具

sudo pacman -S bridge-utils

    讓 NetworkManager 不要管理 enp5s0 介面,編輯/etc/NetworkManager/conf.d/unmanaged.conf,多個介面可以用 ; 隔開

[keyfile]
unmanaged-devices=wlan0;enp5s0

    建立 bridge,叫 br-wifi-ap,然後把 enp5s0 掛上去,掛上去後會發現 enp5s0 的網路斷開

sudo ip link add br-wifi-ap type bridge
sudo ip link set enp5s0 master br-wifi-ap
sudo ip link set br-wifi-ap up

    把原本 enp5s0 的 IP 改設到 br-wifi-ap

sudo ip addr flush dev enp5s0
sudo ip addr add 10.42.1.5/24 dev br-wifi-ap
sudo ip route add default via 10.42.1.3

    再來編輯 /etc/hostapd/hostapd.conf,加上這行後再啟用 hostapd

bridge=br-wifi-ap

    最後調整一下 /etc/dhcpd.conf,要把網段從 10.42.2.0 改成 10.42.1.0

default-lease-time 1209600;
max-lease-time 1814400;
ddns-update-style none;
ignore client-updates;
authoritative;
option local-wpad code 252 = text;
# 配置網卡使用的網段,最好不要和其它網卡的網段有所衝突。
subnet 10.42.1.0 netmask 255.255.255.0 {
option routers
10.42.1.3;
#option subnet-mask
#255.255.255.0;
option broadcast-address
10.42.1.255;
option time-offset
0;
# --- 分配的IP地址範圍
range 10.42.1.100 10.42.1.200;
}

    把原本在 wlan0 的 dhcpd 服務砍掉 

sudo pkill dhcpd

    換改為在 br-wifi-ap 介面啟動

sudo dhcpd br-wifi-ap

    這樣,連上 wifi AP 後,就能使用網際網路了


NetworkManager 建立永久 bridge:


    用上面方式建立的 bridge 會在重開機後不見,所以要用 nmcli 來建立 bridge,讓它開機時就自動啟用。(我有先重開電腦

    編輯/etc/NetworkManager/conf.d/unmanaged.conf,把 enp5s0 去除,再來建立 bridge,把 enp5s0 加入

# 建立 bridge
nmcli con add type bridge ifname br-wifi-ap con-name br-wifi-ap ipv4.addresses 10.42.1.5/24 ipv4.gateway 10.42.1.3 ipv4.method manual ipv6.method ignore

# 把 enp5s0 加進去
nmcli con add type bridge-slave ifname enp5s0 master br-wifi-ap

    啟用連線

nmcli con up br-wifi-ap
nmcli con up bridge-slave-enp5s0

    這樣就完成了,之後重開機,那個 br-wifi-ap 都會自動啟用,想要開啟電腦的 wifi AP 的話,再自己手動下啟用 hostapd 跟 dhcpd 的指令即可。


沒有留言:

張貼留言