WireGuard 是什麼

Fast, modern, secure VPN tunnel

是一套 VPN 服務,主打比 IPSec、OpenVPN 更快、安全

Linux 需要 Kernel 大於 3.10 以上才能跑 (之後 5.6 就內鍵了)

Windows、MAC、手機 APP 都有支援

架構

Server 端、Client 端都是 CentOS 7 環境

        Server 端
+--------------------------------+
| public  ip 10.10.10.137   eth0 |
| private ip 172.16.33.1/24 wg0  |
+--------------------------------+
            ^
            |
            +
       Client 端
+--------------------------------+
| public  ip 10.10.10.138   eth0 |
| private ip 172.16.33.2/24 wg0  |
+--------------------------------+

Server 端

安裝套件

yum install epel-release https://www.elrepo.org/elrepo-release-7.el7.elrepo.noarch.rpm -y
yum install yum-plugin-elrepo -y
yum install kmod-wireguard wireguard-tools -y

產生 key

mkdir /etc/wireguard
cd /etc/wireguard
wg genkey | tee private.key | wg pubkey > public.key

這兩個 private.key、public.key 內容是會餵給 Server 端 、Client 端的 wireguard 設定檔

設定檔

檔名取成是一個網卡的名稱

vi /etc/wireguard/wg0.conf

[Interface]
Address = 172.16.33.1/24                                    # server 的 private ip (不是 eth0 的)
ListenPort = 51820                                          # server listen udp port
PrivateKey = 0CL7xdjzVkDBoXHRIPdNbMVJJ94GwBcW17c3ZLo48nU=   # server 的 private.key
# 可以讓服務啟動時作什麼動作,這裡就直接給一個 NAT 模式的指令,因為 Client 端是要透過 Server 端上網的
PostUp   = echo 1 > /proc/sys/net/ipv4/ip_forward; iptables -A FORWARD -i wg0 -j ACCEPT; iptables -A FORWARD -o wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
# 可以讓服務停止時作什麼動作
PostDown = echo 0 > /proc/sys/net/ipv4/ip_forward; iptables -D FORWARD -i wg0 -j ACCEPT; iptables -D FORWARD -o wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE

[Peer]
PublicKey = GYBRqjx6ytr4pPyxa8SFDhOrGVM3IPaPZEsFs4v3ck4=    # client 的 public.key
AllowedIPs = 172.16.33.2/32                                 # 給 client 的 private ip (一定要 /32),多 client 就要多個 [Peer]

啟動 wireguard

wg-quick up wg0

systemctl start wg-quick@wg0
systemctl status wg-quick@wg0

停掉 wireguard

wg-quick down wg0

開放防火牆

iptables -I INPUT -p udp --dport 51820 -j ACCEPT

開放 NAT 模式

(已作在設定檔裡了)

 

此時就會綁定一張 wg0 網卡 (Client 端也會)

 

Client 端

安裝套件

(同 Server 端)

產生 key

(同 Server 端)

設定檔

vi /etc/wireguard/wg0.conf

[Interface]
Address = 172.16.33.2/24                                    # client 的 private ip (不是 eth0 的)
PrivateKey = 2J4qIVg1PPpcXijqyT9kB30lyYkP3WpBqbveC4YMJWU=   # client 的 private.key

[Peer]
PublicKey = 8Qc3B/HB7IKBfKOpFTEODawBVAfszskPXuFxaeaZ7wA=    # 取 server 的 public.key
AllowedIPs = 0.0.0.0/0                                      # 允許誰才透過 wg0 出去,這裡代表全部,
                                                            # 假如設置 192.168.33.0/24 就是找 192.168.33.0 網段的就透過 wg0 出去,
                                                            # 其它就是 eth0 出去,
                                                            # 如果一開始是拿同網段的在測試,Clinet 端一啟動就斷線了,就是這原因

Endpoint = 10.10.10.137:51820                               # server 的 public ip (eth0 上的) 
PersistentKeepalive = 15                                    # 保持連線 (秒)

啟動 wireguard

(同 Server 端)

最後

這樣子就可以互 ping 172.16.33.0/24 網段了

Client 端上網也都透過 Server 端 (也可以不用,上面有說明)

其它

如果手機 APP 要用,就用 QR Code 比較方便簡單

另製作一份 key、conf 檔 (參照 Client 端的),再用 qrencode 套件生成條碼

yum install qrencode
qrencode -t ansiutf8 < /etc/wireguard/app.conf

 

最後修改日期: 2021 年 07 月 20 日

作者

留言

撰寫回覆或留言

發佈留言必須填寫的電子郵件地址不會公開。