「WireGuard」:修訂間差異
跳至導覽
跳至搜尋
(未顯示同一使用者於中間所作的 9 次修訂) | |||
第14行: | 第14行: | ||
=== Site-to-site === | === Site-to-site === | ||
這邊假設的環境是: | |||
* VPN A的內網在<code>192.168.0.0/24</code>,對外IP是<code>1.2.3.4</code>。 | |||
* VPN B的內網在<code>192.168.1.0/24</code>,對外IP是<code>5.6.7.8</code>。 | |||
先設定系統,先在<code>/etc/sysctl.d/99-net.conf</code>內設定允許IP forwarding: | |||
<syntaxhighlight lang="ini"> | |||
net.ipv4.ip_forward=1 | |||
net.ipv6.conf.all.forwarding=1 | |||
</syntaxhighlight> | |||
接著執行生效: | |||
<syntaxhighlight lang="bash"> | |||
sudo sysctl -p /etc/sysctl.d/99-net.conf | |||
</syntaxhighlight> | |||
先產生對應的Private Key與Public Key: | |||
<syntaxhighlight lang="bash"> | |||
wg genkey | sudo tee /etc/wireguard/wg.key | wg pubkey | sudo tee /etc/wireguard/wg.pub; sudo chmod 600 /etc/wireguard/wg.key | |||
</syntaxhighlight> | |||
接下是<code>/etc/wireguard/wg.conf</code>,在<code>Interface</code>這段都是放自己的資訊,<code>Peer</code>這段都是放對方的資訊(<code>PublicKey</code>可以從對方機器上的<code>/etc/wireguard/wg.pub</code>取得): | |||
<syntaxhighlight lang="ini"> | |||
[Interface] | |||
PostUp = wg set %i private-key /etc/wireguard/%i.key | |||
Address = 192.168.0.200 | |||
ListenPort = 51820 | |||
[Peer] | |||
PublicKey = G9colAlX0xdAO+v8Nme4JobfprXWB442WEOChvQjx3c= | |||
AllowedIPs = 192.168.1.0/24 | |||
Endpoint = 5.6.7.8:51820 | |||
</syntaxhighlight> | |||
另外一邊則會是: | |||
<syntaxhighlight lang="ini"> | |||
[Interface] | |||
PostUp = wg set %i private-key /etc/wireguard/%i.key | |||
Address = 192.168.1.200 | |||
ListenPort = 51820 | |||
[Peer] | |||
PublicKey = yTC1O+ckZ9tcKAsDpDnx0XQmTg06rJa3z8xk8mEFUy0= | |||
AllowedIPs = 192.168.0.0/24 | |||
Endpoint = 1.2.3.4:51820 | |||
</syntaxhighlight> | |||
然後設定開機跑起來並且設定啟動,兩台機器都要跑: | |||
<syntaxhighlight lang="bash"> | |||
sudo systemctl enable --now wg-quick@wg | |||
</syntaxhighlight> | |||
接著就可以用ping測試跨網段時是否通了(先在wireguard主機上面測,再到其他機器上面測試): | |||
<syntaxhighlight lang="bash"> | |||
ping 192.168.0.1 | |||
ping 192.168.1.1 | |||
</syntaxhighlight> | |||
再來設定[[iptables]]防火牆,預設阻擋,後續再開放對應的連線: | |||
<syntaxhighlight lang="bash"> | |||
sudo iptables -A FORWARD -i wg -j DROP | |||
</syntaxhighlight> | |||
然後可以用iptables-persistent把這組iptables設定在開機時自動套用: | |||
<syntaxhighlight lang="bash"> | |||
sudo apt install -y iptables-persistent | |||
</syntaxhighlight> | |||
== 外部連結 == | == 外部連結 == |
於 2023年6月26日 (一) 09:22 的最新修訂
WireGuard是一套VPN軟體。
安裝
在Ubuntu 22.04上可以直接安裝:
sudo apt install -y wireguard
設定
設定檔都在/etc/wireguard
下。
Site-to-site
這邊假設的環境是:
- VPN A的內網在
192.168.0.0/24
,對外IP是1.2.3.4
。 - VPN B的內網在
192.168.1.0/24
,對外IP是5.6.7.8
。
先設定系統,先在/etc/sysctl.d/99-net.conf
內設定允許IP forwarding:
net.ipv4.ip_forward=1
net.ipv6.conf.all.forwarding=1
接著執行生效:
sudo sysctl -p /etc/sysctl.d/99-net.conf
先產生對應的Private Key與Public Key:
wg genkey | sudo tee /etc/wireguard/wg.key | wg pubkey | sudo tee /etc/wireguard/wg.pub; sudo chmod 600 /etc/wireguard/wg.key
接下是/etc/wireguard/wg.conf
,在Interface
這段都是放自己的資訊,Peer
這段都是放對方的資訊(PublicKey
可以從對方機器上的/etc/wireguard/wg.pub
取得):
[Interface]
PostUp = wg set %i private-key /etc/wireguard/%i.key
Address = 192.168.0.200
ListenPort = 51820
[Peer]
PublicKey = G9colAlX0xdAO+v8Nme4JobfprXWB442WEOChvQjx3c=
AllowedIPs = 192.168.1.0/24
Endpoint = 5.6.7.8:51820
另外一邊則會是:
[Interface]
PostUp = wg set %i private-key /etc/wireguard/%i.key
Address = 192.168.1.200
ListenPort = 51820
[Peer]
PublicKey = yTC1O+ckZ9tcKAsDpDnx0XQmTg06rJa3z8xk8mEFUy0=
AllowedIPs = 192.168.0.0/24
Endpoint = 1.2.3.4:51820
然後設定開機跑起來並且設定啟動,兩台機器都要跑:
sudo systemctl enable --now wg-quick@wg
接著就可以用ping測試跨網段時是否通了(先在wireguard主機上面測,再到其他機器上面測試):
ping 192.168.0.1
ping 192.168.1.1
再來設定iptables防火牆,預設阻擋,後續再開放對應的連線:
sudo iptables -A FORWARD -i wg -j DROP
然後可以用iptables-persistent把這組iptables設定在開機時自動套用:
sudo apt install -y iptables-persistent
外部連結
- 官方網站 (英文)