Wireguard:wireguard on LXC (Go版本安裝)

建立 LXC 並在第一個畫面取消勾選非特權

apt update && apt upgrade -y && apt-get install libmnl-dev libelf-dev build-essential pkg-config

開啟 TUN/TAP >>> 點我前往

並建立開機自啟動後配置轉發服務:

echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf
echo "net.ipv6.conf.all.forwarding=1" >> /etc/sysctl.conf
sysctl -p

建立Golang環境並編譯 Wireguard-Go 模組:

wget -O /tmp/golang.tar.gz https://dl.google.com/go/go1.12.4.linux-amd64.tar.gz
tar -C /usr/local -xvzf /tmp/golang.tar.gz
export PATH=$PATH:/usr/local/go/bin
mkdir -p /tmp/gobuild/ && cd /tmp/gobuild/
git clone https://git.zx2c4.com/wireguard-go
cd wireguard-go
export GOPATH="/tmp/gobuild/"
go build -v -o "wireguard-go"
cp wireguard-go /usr/sbin/wireguard-go

安裝 Wireguard 工具:

mkdir -p /tmp/build/ && cd /tmp/build/
git clone https://git.zx2c4.com/WireGuard
cd WireGuard/src/tools
make && make install

執行:

export WG_I_PREFER_BUGGY_USERSPACE_TO_POLISHED_KMOD=1
wireguard-go wg

建立目錄:

mkdir -p /etc/wireguard/ && cd /etc/wireguard/

生成 WG Key

cd /etc/wireguard
wg genkey | tee sprivatekey | wg pubkey > spublickey
wg genkey | tee cprivatekey | wg pubkey > cpublickey

建立 Server 端設置:

echo "[Interface]
PrivateKey = $(cat sprivatekey)
Address = 10.0.100.1/24 
PostUp   = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -A FORWARD -o wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o venet0 -j MASQUERADE
PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -D FORWARD -o wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o venet0 -j MASQUERADE
ListenPort = 6666
MTU = 1420

[Peer]
PublicKey = $(cat cpublickey)
AllowedIPs = 10.0.100.2/32" | sed '/^#/d;/^\s*$/d' > wg0.conf

建立用戶端設置:

echo "[Interface]
PrivateKey = $(cat cprivatekey)
Address = 10.0.100.2/24
DNS = 8.8.8.8
MTU = 1420

[Peer]
PublicKey = $(cat spublickey)
Endpoint = 你的服務IP:6666
AllowedIPs = 0.0.0.0/0, ::0/0
PersistentKeepalive = 30" | sed '/^#/d;/^\s*$/d' > wg-client.conf

啟用服務:

wg-quick up wg0

會大概像這樣:

選配:產生 QR code 供用戶端使用:

apt install qrencode
qrencode -t ansiutf8 < wg-client.conf

建立開機自啟動:

systemctl enable wg-quick@wg0

清理辣雞:

rm -rf /tmp/gobuild/
rm -rf /tmp/build/
rm -f /tmp/golang.tar.gz

<注意:GW Port轉發需要開啟 TCP/UDP,只開TCP不會通>

部分參考來源: 極光星空


遇到 /usr/bin/wg-quick: line 31: resolvconf: command not found 錯誤解決方法:

ln -s /usr/bin/resolvectl /usr/local/bin/resolvconf
阅读剩余
THE END