MAC Mini 做Wi-Fi與乙太網路橋接

透過無線存取NAS,只能使用單一空間流的速率,無法發揮無線多空間流堆疊起來的速率比1Gbps有線網卡還快的優勢。

只能使用單一空間流,最棒的場景還是使用6GHz頻道,並且開上160MHz。如果有Wi-Fi 7加上6GHz並使用寬度320MHz,單一空間流就能達到驚人的2882Mbps。即使加上其他因素減損一半(把單工無線傳輸切成雙工傳輸時間),仍舊可以吃滿1Gbps有線速率。

不過Wi-Fi 7跟寬度320MHz還是太夢幻了,要換完這些設備,沒個一兩萬跑不掉。更何況Wi-Fi 7還沒實裝,還是老實做個Wi-Fi與乙太網路橋接,省下換設備的錢比較實在。

macOS是支援橋接的,不過在選單中,只有有線介面橋接,沒有原生Wi-Fi與原生LAN橋接的可能。

透過CLI,也只能無線橋接或是有線橋接,做不到有線與無線的橋接。

利用網路分享去做NAT?我NAS的IP不能變,雖然NAT可以讓NAS上網跟正常運作,但我其他設備就存不到NAS了。

之前在Windoows上能輕易使用的橋接,在macOS上就很難做到。不過我大部分都是虛擬機網卡橋接實體網卡,所以這套概念放在macOS上也行的!

macOS的虛擬平臺

我這裡選擇「UTM」,因為是免費的。要付費的「Parallels」就略過。

可參考《UTM — 專為Mac設計的虛擬機,實裝Ubuntu流程》的文章,我也選用Ubuntu 22.04.2 TLS的Ubuntu Server。試過兩個的Ubuntu,只有該文的版本才能順利運作起來。

虛擬機配置都參照即可,唯有千萬不要勾「使用 Apple 的虛擬化技術」,勾了,VM會容易當機,然後要改就只能刪掉重練。

因為要作為網卡橋接器, 所以放了兩張網卡:第一張網卡橋接Wi-Fi(en1),第二張網卡橋接LAN(en0)。

我的虛擬橋接器配置是只有1CPU、768MB Memory、6GB Storage。很多Linux版本建議配置都比這高,只是單純做個橋接,給再多一點都是奢侈。

或者是直接下載已經配置好的虛擬機,解壓縮後匯入到UTM,就能略過以下設定步驟。

安裝好系統後,記得關機,退出映像檔(ISO),再開機,就能讓Ubuntu Server順利運行。

Ubuntu Server的橋接指令

我的目的就只是把虛擬機當做橋接網路卡使用,虛擬機本身沒IP是可以的。但是安裝時是需要的,才能夠更新套件。

Ubuntu Server的網路管理是由Netplan管理,所以,umtui是沒辦法用的。

但是CLI的指令與操作是可以的。

先安裝做橋接要做的套件,指令如下,會需要輸入sudo的密碼

sudo apt install bridge-utils
sudo apt install nano

新增一個名為「auto-bridge.sh」的文件,

sudo nano /home/auto-bridge.sh

文件內容輸入以下:

#!/bin/sh
brctl addbr br0
brctl addif br0 enp0s1
brctl addif br0 enp0s2

ip link set dev br0 up
ip link set dev enp0s2 up
ip addr flush dev enp0s1
ip -6 addr flush dev enp0s1
ip addr flush dev enp0s2
ip -6 addr flush dev enp0s2
ip addr flush dev br0
ip -6 addr flush dev br0
sysctl net.upv6.conf.br0.disable_ipv6=1

exit 0 

意思是新增橋接介面卡,把兩張網卡加入,然後啟用介面卡,接著拿掉各介面卡的IP與IPv6,變成單純的橋接。

Ubuntu Server開機執行

Ubnutu開機後,如果變成一個服務,服務就會自動啟用,然後啟動「/home/auto-bridge.sh」,就能正常橋接。

Ubuntu Server 22.04並沒有rc.local,我們可以新增一個服務,讓其虛擬機開機後會自動執行。

sudo nano /etc/rc.local

輸入內容如下

#!/bin/sh
/home/auto-bridge.sh
exit0

新增一個名為「/etc/systemd/system/rc.local.service」的服務,

sudo nano /etc/systemd/system/rc.local.service

輸入內容如下

[Unit]
Description=/etc/rc.local Compatibility
ConditionPathExists=/etc/rc.local

[Service]
Type=forking
ExecStart=/etc/rc.local start
TimeoutSec=0
StandardOutput=tty
RemainAfterExit=yes
SysVstartPriority=99

[Install]
WantedBy=multi-user.target
Alias=rc-local.service
sudo chmod u+x /etc/rc.local

啟動rc.local服務

sudo systemctl enable rc.local.service
sudo systemctl start rc.local.service

重啟虛擬機

sudo reboot 

開機後,確認rc.local與script是否正常運作

sudo netplan get
ip addr

發表者:JN

嘗試留下一些優質紀錄,自詡造輪子的技術搬運工,身先士卒的踩雷先鋒。

發表留言

使用 WordPress.com 設計專業網站
立即開始使用