(อ้างอิงจากความยอดเยี่ยมของ Chrispus Kamau ไวร์การ์ด VPN แบบฝึกหัดสำหรับ การตั้งค่าทั่วไป และ การตั้งค่าแบบเชื่อมโยงดูเหมือนว่าฉันอาจมีวิธีแก้ปัญหา (ยังไม่ทดลอง!) ในรูปแบบที่แสดงให้เห็นว่าสามารถจัดการการตั้งค่าที่ค่อนข้างผิดปกติ/ซับซ้อนได้อย่างไร หรืออย่างน้อยก็ให้แนวคิดแก่คุณ ขอบคุณมาก CK!)
ทาง: https://github.com/iamckn/chained-wireguard-ansible
มันทำงานอย่างไร:
การกำหนดค่าประตู
กำหนดค่าอินเทอร์เฟซ VPN ของเกต (wg0
).
ไฟล์: /etc/wireguard/wg0.conf
#เซิร์ฟเวอร์
[อินเทอร์เฟซ] # ประตู
คีย์ส่วนตัว = GATE_PRIVATE_KEY
ที่อยู่ = 10.100.100.1/24
ListenPort = 53701
SaveConfig = เท็จ
#ลูกค้า
[เพียร์] #คนกลาง
PublicKey = MIDDLEMAN_PUBLIC_KEY
PresharedKey = MIDDLEMAN_PRESHARED_KEY
IP ที่อนุญาต = 10.0.0.0/8
การกำหนดค่าไฟร์วอลล์ คำสั่ง:
# ติดตามการเชื่อมต่อ VPN
## ติดตามห่วงโซ่อินพุต
iptables -A INPUT -m conntrack --ctstate ที่เกี่ยวข้อง ก่อตั้ง -j ยอมรับ
## ติดตามห่วงโซ่ไปข้างหน้า
iptables -A FORWARD -m conntrack --ctstate ที่เกี่ยวข้อง ก่อตั้ง -j ยอมรับ
# อนุญาตการเชื่อมต่อ WireGuard / การรับส่งข้อมูล VPN บนพอร์ตการรับฟัง
iptables -A INPUT -p udp -m udp --dport 53701 -m conntrack --ctstate ใหม่ -j ยอมรับ
# อนุญาตการรับส่งข้อมูล DNS แบบเรียกซ้ำทั้ง TCP และ UDP
iptables -A INPUT -s 10.100.100.0/24 -p tcp -m tcp --dport 53 -m conntrack --ctstate ใหม่ -j ยอมรับ
iptables -A INPUT -s 10.100.100.0/24 -p udp -m udp --dport 53 -m conntrack --ctstate NEW -j ยอมรับ
# อนุญาตการส่งต่อแพ็กเก็ตที่อยู่ในอุโมงค์ VPN
iptables -A FORWARD -i wg0 -o wg0 -m conntrack --ctstate ใหม่ -j ยอมรับ
# ตั้งค่า NAT
iptables -t nat -A โพสต์ -s 10.100.100.0/24 -o enp7s0 -j MASQUERADE
เปิดอินเทอร์เฟซ VPN ของเกทและเปิดใช้งานบริการ WireGuard เพื่อรีสตาร์ทโดยอัตโนมัติเมื่อบูต:
wg-เร่งขึ้น wg0
systemctl เปิดใช้งาน wg-quick@wg0
การกำหนดค่าคนกลาง
กำหนดค่าอินเทอร์เฟซที่หันไปทางประตูของคนกลาง (ประตู0
). ที่นี่พ่อค้าคนกลางทำหน้าที่เป็นลูกค้า
ไฟล์: /etc/wireguard/gate0.conf
[เฟซ] #คนกลาง
คีย์ส่วนตัว = MIDDLEMAN_PRIVATE_KEY
ที่อยู่ = 10.100.100.2/32
DNS = 10.100.100.1
SaveConfig = เท็จ
# เพื่อน
[เพียร์] # ประตู
PublicKey = GATE_PUBLIC_KEY
PresharedKey = MIDDLEMAN_PRESHARED_KEY
ปลายทาง = GATE_PUBLIC_IP:53701
IP ที่อนุญาต = 0.0.0.0/0
#PersistentKeepalive = 21
กำหนดค่าอินเทอร์เฟซที่ติดต่อกับลูกค้าของคนกลาง (wg0
). ที่นี่พ่อค้าคนกลางทำหน้าที่เป็นเซิร์ฟเวอร์
ไฟล์: /etc/wireguard/wg0.conf
#เซิร์ฟเวอร์
[เฟซ] #คนกลาง
คีย์ส่วนตัว = MIDDLEMAN_PRIVATE_KEY
ที่อยู่ = 10.200.200.1/24
ListenPort = 53701
SaveConfig = เท็จ
#ลูกค้า
[เพียร์] #พีซี
PublicKey = CLIENT_PUBLIC_KEY
PresharedKey = CLIENT_PRESHARED_KEY
IP ที่อนุญาต = 10.200.200.2/32
การกำหนดค่าไฟร์วอลล์ คำสั่ง:
iptables -A INPUT -m conntrack --ctstate ที่เกี่ยวข้อง ก่อตั้ง -j ยอมรับ
iptables -A FORWARD -m conntrack --ctstate ที่เกี่ยวข้อง ก่อตั้ง -j ยอมรับ
iptables -A INPUT -p udp -m udp --dport 53701 -m conntrack --ctstate ใหม่ -j ยอมรับ
iptables -A INPUT -s 10.200.200.0/24 -p tcp -m tcp --dport 53 -m conntrack --ctstate ใหม่ -j ยอมรับ
iptables -A INPUT -s 10.200.200.0/24 -p udp -m udp --dport 53 -m conntrack --ctstate NEW -j ยอมรับ
iptables -A FORWARD -i wg0 -o wg0 -m conntrack --ctstate ใหม่ -j ยอมรับ
iptables -t nat -A POSTROUTING -s 10.200.200.0/24 -o enp41s0 -j MASQUERADE
# ตั้งค่าเครือข่าย VPN NAT
iptables -t nat -A POSTROUTING -s 10.200.200.0/24 -j SNAT --to-source 10.100.100.2
กำหนดค่าการกำหนดเส้นทางนโยบายบนพ่อค้าคนกลางเพื่อกำหนดเส้นทางการรับส่งข้อมูลจากไคลเอ็นต์ไปยังเกต
echo "1 คนกลาง" >> /etc/iproute2/rt_tables
# ส่งต่อการรับส่งข้อมูลทั้งหมดไปที่ประตู
เส้นทาง ip เพิ่ม 0.0.0.0/0 dev gate0 คนกลางตาราง
# หรือส่งต่อการรับส่งข้อมูลไปยัง 4.2.2.2 (เช่น) ไปยังประตูเท่านั้น
#ip เส้นทางเพิ่ม 4.2.2.2/32 dev gate0 คนกลางตาราง
กฎ ip เพิ่มจากคนกลางการค้นหา 10.200.200.0/24
เปิดอินเทอร์เฟซ WireGuard ของคนกลางและเปิดใช้งานบริการ WireGuard เพื่อรีสตาร์ทโดยอัตโนมัติเมื่อบูต:
wg-ประตูขึ้นอย่างรวดเร็ว0
systemctl เปิดใช้งาน wg-quick@gate0
wg-เร่งขึ้น wg0
systemctl เปิดใช้งาน wg-quick@wg0
การกำหนดค่าไคลเอนต์
ไฟล์: /etc/wireguard/vpn0.conf
[อินเตอร์เฟซ]
คีย์ส่วนตัว = CLIENT_PRIVATE_KEY
ที่อยู่ = 10.200.200.2/32
DNS = 10.200.200.1
# เพื่อน
[เพียร์] #คนกลาง
PublicKey = MIDDLEMAN_PUBLIC_KEY
PresharedKey = CLIENT_PRESHARED_KEY
ปลายทาง = MIDDLEMAN_PUBLIC_IP:53701
IP ที่อนุญาต = 0.0.0.0/0
#PersistentKeepalive = 21
ในที่สุดเปิดใช้งาน WireGuard บนไคลเอนต์