Linux

Wireguard 通過隧道將多個客戶端連接到伺服器和網際網路(allowedips)

  • February 17, 2021

我最近設置了wireguard並讓它為一個客戶端(筆記型電腦)工作,然後將我的手機添加到組合中,我的筆記型電腦停止連接。如果我將另一個註釋掉,它會起作用。我知道在這兩種情況下都是因為 allowedips 0.0.0.0/0 。問題是我不確定我需要輸入什麼才能使其正常工作。我只嘗試了客戶端的 wg ip,例如 10.0.0.2/24 和 10.0.0.2/32。

理想的目標是能夠為兩個客戶端訪問我的伺服器和隧道流量。我知道我可以通過為每個客戶端創建一個單獨的 wg 介面來做到這一點,但我想知道我是否可以在伺服器上只使用一個 (wg0) 來做到這一點。我在伺服器上執行了一個 adguard DNS 容器,並且在連接單個設備時(另一個在伺服器配置中註釋掉了)。該設備訪問 DNS 並按預期工作,並正在將我的請求重寫到我的伺服器並阻止廣告,我可以將客戶端 ip 視為 wg ip。我並不真正關心這兩個設備的 LAN 訪問,我只想訪問我的伺服器 IP 並將其餘的轉發出去。目前我可以為一個 0.0.0.0/0 的客戶做到這一點

在客戶端上將允許的 ips 更改為 10.0.0.2/32 時,它不起作用。我無法 ping DNS 伺服器 10.0.0.1 適用於每個設備,但不能同時 ping,因為它們與 0.0.0.0/0 重疊。

我的首要任務是轉發兩台設備的所有流量,但如果做不到這一點,我會很高興筆記型電腦可以訪問所有內容並且手機至少可以訪問 10.0.0.1 的伺服器

歡迎對允許的 ips 提供任何幫助或想法。謝謝你的時間

伺服器配置

[Interface]
PrivateKey = xxxxxxxxxxx
Address = 10.0.0.1/24
ListenPort = 55555
PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -A FORWARD -o %i -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE 
PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -D FORWARD -o %i -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE

[Peer]
# Laptop 
PublicKey = xxxxxxx
AllowedIPs = 10.0.0.2/32

# Phone
PublicKey = xxxxxxxx
AllowedIPs = 10.0.0.3/32

筆記型電腦配置

[Interface]
Address = 10.0.0.2/24
PrivateKey = xxxxxx
DNS= 10.0.0.1

[Peer]
PublicKey = xxxxxxxx
Endpoint =  my.dd.ip:55555
AllowedIPs = 0.0.0.0/0

電話配置

[Interface]
Address = 10.0.0.3/24
PrivateKey = xxxxxx
DNS= 10.0.0.1

[Peer]
PublicKey = xxxxxxxx
Endpoint =  my.dd.ip:55555
AllowedIPs = 0.0.0.0/0

另外我應該補充一點,我已經允許在伺服器上轉發 net.ipv4.ip_forward = 1

在伺服器端配置中,您必須[Peer]為每個對等方添加一個塊。

[Interface]
PrivateKey = SERVER%XXXXXXX # PUBLIC SERVER%PPPPPPP
Address = 10.0.0.1/24
ListenPort = 55555
PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -A FORWARD -o %i -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE 
PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -D FORWARD -o %i -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE

# Laptop
[Peer] 
PublicKey = LAPTOP%PPPPPPP
AllowedIPs = 10.0.0.2/32

# Phone
[Peer]
PublicKey = PHONE%PPPPPPP
AllowedIPs = 10.0.0.3/32

筆記型電腦配置

[Interface]
Address = 10.0.0.2/32
PrivateKey = LAPTOP%XXXXXXX 
DNS = 10.0.0.1

[Peer]
PublicKey = SERVER%PPPPPPP
Endpoint =  my.dd.ip:55555
AllowedIPs = 0.0.0.0/0

電話配置

[Interface]
Address = 10.0.0.3/32
PrivateKey = PHONE%XXXXXXX 
DNS = 10.0.0.1

[Peer]
PublicKey = SERVER%PPPPPPP
Endpoint =  my.dd.ip:55555
AllowedIPs = 0.0.0.0/0

引用自:https://serverfault.com/questions/1053724