Sunucu olarak WireGuard ve Raspberry Pi ile basit bir VPN kurma

Çünkü WireGuard parçası olacak Yaklaşan Linux çekirdeği 5.6 ile birlikte, bu VPN'i sistemime en iyi nasıl entegre edebileceğimi görmeye karar verdim. Raspberry Pi'de LTE yönlendirici/erişim noktası.

Оборудование

  • Raspberry Pi 3, LTE modülü ve genel IP adresiyle. Burada bir VPN sunucusu olacak (bundan sonra metinde adı geçecektir) kenarda yürüyen kimse)
  • Tüm iletişimler için VPN kullanması gereken bir Android telefon
  • Yalnızca ağ içinde VPN kullanması gereken Linux dizüstü bilgisayar

VPN'ye bağlanan her cihazın diğer tüm cihazlara bağlanabilmesi gerekir. Örneğin, her iki cihaz da bir VPN ağının parçasıysa, telefonun dizüstü bilgisayardaki bir web sunucusuna bağlanabilmesi gerekir. Kurulumun oldukça basit olduğu ortaya çıkarsa, masaüstünü VPN'ye (Ethernet aracılığıyla) bağlamayı düşünebilirsiniz.

Kablolu ve kablosuz bağlantıların zaman içinde giderek daha az güvenli hale geldiği göz önüne alındığında (hedefli saldırılar, KRACK WPA2 kırma saldırısı и WPA3'e karşı Dragonblood saldırısı), hangi ortamda olursa olsun tüm cihazlarım için WireGuard'ı kullanmayı ciddi olarak düşünüyorum.

Yazılım kurulumu

WireGuard şunları sağlar: önceden derlenmiş paketler çoğu Linux, Windows ve macOS dağıtımı için. Android ve iOS uygulamaları, uygulama dizinleri aracılığıyla sunulur.

En son Fedora Linux 31 sürümüne sahibim ve kurulumdan önce kılavuzu okuyamayacak kadar tembeldim. Paketleri yeni buldum wireguard-tools, onları yükledim ve sonra neden hiçbir şeyin işe yaramadığını anlayamadım. Daha fazla araştırma, paketin yüklü olmadığını ortaya çıkardı wireguard-dkms (bir ağ sürücüsüyle), ancak dağıtımımın deposunda değildi.

Talimatları okusaydım doğru adımları atardım:

$ sudo dnf copr enable jdoss/wireguard
$ sudo dnf install wireguard-dkms wireguard-tools

Raspberry Pi'mde Raspbian Buster dağıtımı yüklü, orada zaten bir paket var wireguard, yükle:

$ sudo apt install wireguard

Android telefonuma uygulamayı yükledim WireGuardVPN resmi Google App Store kataloğundan.

Anahtarların kurulumu

Eş kimlik doğrulaması için Wireguard, VPN eşlerinin kimliğini doğrulamak için basit bir özel/genel anahtar şeması kullanır. Aşağıdaki komutu kullanarak kolayca VPN anahtarları oluşturabilirsiniz:

$ wg genkey | tee wg-laptop-private.key |  wg pubkey > wg-laptop-public.key
$ wg genkey | tee wg-server-private.key |  wg pubkey > wg-server-public.key
$ wg genkey | tee wg-mobile-private.key |  wg pubkey > wg-mobile-public.key

Bu bize üç anahtar çifti (altı dosya) verir. Yapılandırmalardaki dosyalara başvurmayacağız, ancak içerikleri buraya kopyalayacağız: her anahtar base64'te bir satırdır.

VPN sunucusu için yapılandırma dosyası oluşturma (Raspberry Pi)

Yapılandırma oldukça basit, aşağıdaki dosyayı oluşturdum /etc/wireguard/wg0.conf:

[Interface]
Address = 10.200.200.1/24
ListenPort = 51820
PrivateKey = <copy private key from wg-server-private.key>
PostUp   = iptables -A FORWARD -i %i -j ACCEPT; iptables -t nat -A POSTROUTING -o wwan0 -j MASQUERADE
PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -t nat -D POSTROUTING -o wwan0 -j MASQUERADE

[Peer]
# laptop
PublicKey = <copy public key from wg-laptop-public.key>
AllowedIPs = 10.200.200.2/32

[Peer]
# mobile phone
PublicKey = <copy public key from wg-mobile-public.key>
AllowedIPs = 10.200.200.3/32

Birkaç not:

  • Uygun yerlere, tuşlarla dosyalardan satırlar eklemeniz gerekir.
  • VPN'im dahili bant kullanıyor 10.200.200.0/24
  • Takımlar için PostUp/PostDown Harici ağ arayüzüm wwan0'ım var, sizin farklı bir arayüzünüz olabilir (örneğin, eth0)

VPN ağı aşağıdaki komutla kolayca yükseltilir:

$ sudo wg-quick up wg0

Küçük bir detay: Kullandığım DNS sunucusu olarak dnsmasq bir ağ arayüzüne bağlı br0, cihazları da ekledim wg0 izin verilen cihazlar listesine. Dnsmasq'ta bu, yapılandırma dosyasına yeni bir ağ arayüzü satırı eklenerek yapılır. /etc/dnsmasq.confÖrneğin:

interface=br0
interface=wg0

Ek olarak, UDP dinleme bağlantı noktasına (51280) giden trafiğe izin vermek için bir iptable kuralı ekledim:

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

Artık her şey çalıştığına göre VPN tünelinin otomatik başlatılmasını ayarlayabiliriz:

$ sudo systemctl enable [email protected]

Dizüstü bilgisayarda istemci yapılandırması

Dizüstü bilgisayarda bir yapılandırma dosyası oluşturma /etc/wireguard/wg0.conf aynı ayarlarla:

[Interface]
Address = 10.200.200.2/24
PrivateKey = <copy private key from wg-laptop-private.key>

[Peer]
PublicKey = <copy public key from wg-server-public.key>
AllowedIPs = 10.200.200.0/24
Endpoint = edgewalker:51820

Notlar:

  • Edgewalker yerine genel IP veya VPN sunucusu ana bilgisayarını belirtmeniz gerekir
  • Ayarlayarak AllowedIPs üzerinde 10.200.200.0/24, VPN'i yalnızca dahili ağa erişmek için kullanırız. Diğer tüm IP adreslerine/sunucularına giden trafik "normal" açık kanallardan geçmeye devam edecektir. Ayrıca dizüstü bilgisayardaki önceden yapılandırılmış DNS sunucusunu da kullanacaktır.

Test ve otomatik başlatma için aynı komutları kullanıyoruz wg-quick и systemd:

$ sudo wg-quick up wg0
$ sudo systemctl enable [email protected]

Android telefonda istemci kurma

Bir Android telefon için çok benzer bir yapılandırma dosyası oluşturuyoruz (buna mobile.conf):

[Interface]
Address = 10.200.200.3/24
PrivateKey = <copy private key from wg-mobile-private.key>
DNS = 10.200.200.1
        
[Peer]
PublicKey = <copy public key from wg-server-public.key>
AllowedIPs = 0.0.0.0/0
Endpoint = edgewalker:51820

Dizüstü bilgisayardaki yapılandırmanın aksine, telefonun DNS sunucusu olarak VPN sunucumuzu kullanması gerekir (hat DNS) ve ayrıca tüm trafiği VPN tünelinden geçirin (AllowedIPs = 0.0.0.0/0).

Dosyayı mobil cihazınıza kopyalamak yerine QR koduna dönüştürebilirsiniz:

$ sudo apt install qrencode
$ qrencode -t ansiutf8 < mobile.conf

QR kodu konsola ASCII olarak çıkacaktır. Android VPN uygulamasından taranabilir ve otomatik olarak bir VPN tüneli kuracaktır.

Aviator apk

WireGuard'ı kurmak OpenVPN'e kıyasla gerçekten büyülü.

Kaynak: habr.com

Yorum ekle