ตั้งแต่ WireGuard แกนหลักในอนาคต Linux 5.6 ฉันจึงตัดสินใจลองดูว่าจะผสาน VPN นี้เข้ากับระบบของฉันได้อย่างไรให้ดีที่สุด .
Оборудование
- Raspberry Pi 3 พร้อมโมดูล LTE และที่อยู่ IP สาธารณะ จะมีเซิร์ฟเวอร์ VPN ที่นี่ (ต่อไปนี้จะเรียกว่าข้อความ เอดจ์วอล์คเกอร์)
- โทรศัพท์ Androidซึ่งจำเป็นต้องใช้ VPN สำหรับการสื่อสารทั้งหมด
- สมุดบันทึก Linuxซึ่งควรใช้ VPN ภายในเครือข่ายเท่านั้น
อุปกรณ์ทุกเครื่องที่เชื่อมต่อกับ VPN จะต้องสามารถเชื่อมต่อกับอุปกรณ์อื่น ๆ ทั้งหมดได้ ตัวอย่างเช่น โทรศัพท์ควรจะสามารถเชื่อมต่อกับเว็บเซิร์ฟเวอร์บนแล็ปท็อปได้ หากอุปกรณ์ทั้งสองเป็นส่วนหนึ่งของเครือข่าย VPN หากการตั้งค่าค่อนข้างง่าย คุณก็สามารถพิจารณาการเชื่อมต่อเดสก์ท็อปกับ VPN (ผ่านอีเทอร์เน็ต) ได้
เมื่อพิจารณาว่าการเชื่อมต่อแบบมีสายและไร้สายมีความปลอดภัยน้อยลงเรื่อยๆ เมื่อเวลาผ่านไป (, и ), ฉันกำลังพิจารณาอย่างจริงจังที่จะใช้ WireGuard สำหรับอุปกรณ์ทุกเครื่องของฉัน ไม่ว่าอุปกรณ์เหล่านั้นจะทำงานในสภาพแวดล้อมใดก็ตาม
การติดตั้งซอฟต์แวร์
WireGuard ให้ สำหรับการแจกจ่ายส่วนใหญ่ Linux, Windows и macOSใบสมัครสำหรับ Android และ iOS นั้นเผยแพร่ผ่านทางแอปสโตร์
ฉันใช้ Fedora เวอร์ชันล่าสุด Linux 31 และก่อนติดตั้ง ผมขี้เกียจเกินกว่าจะอ่านคู่มือ ผมเลยแค่หาแพ็กเกจเอาเอง wireguard-toolsติดตั้งแล้วจึงไม่เข้าใจว่าทำไมไม่มีอะไรทำงาน การตรวจสอบเพิ่มเติมพบว่าฉันไม่ได้ติดตั้งแพ็คเกจดังกล่าว wireguard-dkms (พร้อมไดรเวอร์เครือข่าย) แต่ไม่ได้อยู่ในพื้นที่เก็บข้อมูลของการแจกจ่ายของฉัน
หากฉันได้อ่านคำแนะนำ ฉันจะได้ดำเนินการตามขั้นตอนที่ถูกต้อง:
$ sudo dnf copr enable jdoss/wireguard
$ sudo dnf install wireguard-dkms wireguard-tools ฉันติดตั้งการกระจาย Raspbian Buster บน Raspberry Pi ของฉันแล้ว มีแพ็คเกจอยู่แล้ว wireguardติดตั้ง:
$ sudo apt install wireguardบนโทรศัพท์ Android ฉันติดตั้งแอปพลิเคชันแล้ว จากแค็ตตาล็อกอย่างเป็นทางการของ Google App Store
การติดตั้งกุญแจ
เพื่อตรวจสอบความถูกต้องของโหนด Wireguard ใช้ระบบคีย์ส่วนตัว/คีย์สาธารณะแบบง่ายในการตรวจสอบสิทธิ์โหนด VPN คุณสามารถสร้างคีย์ VPN ได้อย่างง่ายดายด้วยคำสั่งต่อไปนี้:
$ 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สิ่งนี้ทำให้เรามีคู่คีย์สามคู่ (หกไฟล์) เราจะไม่อ้างถึงไฟล์ในการกำหนดค่า แต่คัดลอกเนื้อหาที่นี่: แต่ละคีย์จะมีหนึ่งบรรทัดใน base64
การสร้างไฟล์กำหนดค่าสำหรับเซิร์ฟเวอร์ VPN (Raspberry Pi)
การกำหนดค่าค่อนข้างง่าย ฉันสร้างไฟล์ต่อไปนี้ /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หมายเหตุสองสามข้อ:
- ในตำแหน่งที่เหมาะสมคุณจะต้องแทรกบรรทัดจากไฟล์ด้วยปุ่ม
- VPN ของฉันกำลังใช้แบนด์ภายใน
10.200.200.0/24 - สำหรับทีม
PostUp/PostDownฉันมีอินเทอร์เฟซเครือข่ายภายนอก wwan0 คุณอาจมีอินเทอร์เฟซอื่น (เช่น eth0)
เครือข่าย VPN สามารถยกระดับได้อย่างง่ายดายด้วยคำสั่งต่อไปนี้:
$ sudo wg-quick up wg0 รายละเอียดเล็กๆ น้อยๆ อย่างหนึ่ง: เป็นเซิร์ฟเวอร์ DNS ที่ฉันใช้ dnsmasq เชื่อมโยงกับอินเทอร์เฟซเครือข่าย br0ฉันก็เพิ่มอุปกรณ์ด้วย wg0 ไปยังรายการอุปกรณ์ที่อนุญาต ใน DNSmasq ทำได้โดยการเพิ่มบรรทัดใหม่ที่มีอินเทอร์เฟซเครือข่ายลงในไฟล์กำหนดค่า /etc/dnsmasq.confตัวอย่างเช่น:
interface=br0
interface=wg0นอกจากนี้ ฉันได้เพิ่มกฎ iptable เพื่ออนุญาตการรับส่งข้อมูลไปยังพอร์ตการฟัง UDP (51280):
$ sudo iptables -I INPUT -p udp --dport 51820 -j ACCEPTตอนนี้ทุกอย่างทำงานได้แล้ว เราสามารถตั้งค่าการเปิดอุโมงค์ VPN อัตโนมัติได้:
$ sudo systemctl enable wg-quick@wg0.serviceการกำหนดค่าไคลเอ็นต์บนแล็ปท็อป
สร้างไฟล์กำหนดค่าบนแล็ปท็อป /etc/wireguard/wg0.conf ด้วยการตั้งค่าเดียวกัน:
[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หมายเหตุ:
- แทนที่จะเป็น edgewalker คุณต้องระบุ IP สาธารณะหรือโฮสต์เซิร์ฟเวอร์ VPN
- โดยการตั้งค่า
AllowedIPsบน10.200.200.0/24เราใช้ VPN เพื่อเข้าถึงเครือข่ายภายในเท่านั้น การรับส่งข้อมูลไปยังที่อยู่ IP/เซิร์ฟเวอร์อื่นๆ ทั้งหมดจะยังคงผ่านช่องทางเปิด "ปกติ" นอกจากนี้ยังจะใช้เซิร์ฟเวอร์ DNS ที่กำหนดค่าไว้ล่วงหน้าบนแล็ปท็อป
สำหรับการทดสอบและการเปิดตัวอัตโนมัติ เราใช้คำสั่งเดียวกัน wg-quick и systemd:
$ sudo wg-quick up wg0
$ sudo systemctl enable wg-quick@wg0.serviceการตั้งค่าไคลเอ็นต์สำหรับ Android-โทรศัพท์
สำหรับโทรศัพท์ Android เราสร้างไฟล์การกำหนดค่าที่คล้ายกันมาก (ขอเรียกว่า...) 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 ต่างจากการกำหนดค่าบนแล็ปท็อป โทรศัพท์ต้องใช้เซิร์ฟเวอร์ VPN ของเราเป็นเซิร์ฟเวอร์ DNS (line DNS) และยังส่งผ่านการรับส่งข้อมูลทั้งหมดผ่านอุโมงค์ VPN (AllowedIPs = 0.0.0.0/0).
แทนที่จะคัดลอกไฟล์ไปยังอุปกรณ์เคลื่อนที่ คุณสามารถแปลงเป็นโค้ด QR ได้:
$ sudo apt install qrencode
$ qrencode -t ansiutf8 < mobile.confโค้ด QR จะถูกแสดงผลบนหน้าจอคอนโซลในรูปแบบ ASCII สามารถสแกนได้จากแอปพลิเคชัน Android VPN และกำหนดค่าอุโมงค์ VPN โดยอัตโนมัติ
เอาท์พุต
การตั้งค่า WireGuard วิเศษอย่างเหลือเชื่อเมื่อเทียบกับ OpenVPN.
ที่มา: will.com
