หลังจากทดลองใช้ตัวเลือกต่างๆ ฉันตัดสินใจหยุดใช้ NetworkManager และใช้ wg-quick โดยตรงแทน บน Fedora Server มันค่อนข้างง่ายและฉันแค่ต้องลบการเชื่อมต่อ NetworkManager โดยใช้ nmcli คอนเดล wg0
และเปิดใช้บริการ wg-quick โดยใช้ เปิดใช้งาน systemctl -- ตอนนี้ wg-quick@wg0
(ซึ่งอ่านการกำหนดค่าจาก /etc/wireguard/wg0.conf
). การเปลี่ยนมาใช้ wg-quick มีข้อดีดังต่อไปนี้:
- ฉันสามารถระบุที่กำหนดเอง
โพสต์อัพ
คำสั่งเพื่อกำหนดการตั้งค่าการกำหนดเส้นทางที่ซับซ้อนมากขึ้น
- หมายเลขตารางเส้นทาง Wireguard ดูเหมือนจะคงที่
51820
แม้ว่าฉันจะไม่พบเอกสารใด ๆ เกี่ยวกับเรื่องนี้ สิ่งนี้ทำให้ง่ายต่อการตั้งค่ากฎ ip ที่กำหนดเอง
จากนั้นฉันก็ใช้ โพสต์อัพ
สั่งเข้ามา wg0.conf
เพื่อตั้งค่ากฎ ip เพิ่มเติมที่จะทำให้แน่ใจว่าการรับส่งข้อมูลของ Wireguard จะตอบสนองผ่าน Wireguard เช่นกัน มีสองทางเลือกในการบรรลุเป้าหมายนี้:
ตัวเลือกที่ 1: การจับคู่ IP ต้นทาง
กฎ ip ตรงกับแพ็คเกจ Wireguard ตามที่อยู่ IP ต้นทาง (ซึ่งตั้งค่าโดยอัตโนมัติเป็นที่อยู่ IP ที่คำขอเข้ามาในตอนแรก):
[อินเตอร์เฟซ]
ที่อยู่ = 10.139.192.4/24
ที่อยู่ = fd52:30a4:f9e7:647a::4/64
PostUp = กฎ ip -4 เพิ่มจาก 10.139.192.4 ค้นหา 51820
PreDown = ip -4 กฎ del จาก 10.139.192.4 ค้นหา 51820
PostUp = กฎ ip -6 เพิ่มจาก fd52:30a4:f9e7:647a::4 ค้นหา 51820
PreDown = ip -6 กฎ del จาก fd52:30a4:f9e7:647a::4 ค้นหา 51820
ตัวเลือกที่ 2: fwmark
กฎ iptables บางข้อได้รับการกำหนดค่าให้ตั้งค่า เครื่องหมาย
บนบรรจุภัณฑ์ที่ผ่านเข้ามา wg0
:
iptables -t mangle -A INPUT -j CONNMARK -i wg0 --set-mark 1
ip6tables -t mangle -A INPUT -j CONNMARK -i wg0 --set-mark 1
iptables -t mangle -A OUTPUT -j CONNMARK -m connmark --mark 1 --restore-mark
ip6tables -t mangle -A OUTPUT -j CONNMARK -m connmark --mark 1 --restore-mark
แล้วนี้ เครื่องหมาย
จับคู่ตามกฎ IP:
กฎ PostUp = ip -4 เพิ่ม fwmark 1 ค้นหา 51820
PreDown = กฎ ip -4 del fwmark 1 ค้นหา 51820
กฎ PostUp = ip -6 เพิ่ม fwmark 1 ค้นหา 51820
PreDown = กฎ ip -6 del fwmark 1 ค้นหา 51820
สามารถดูรายละเอียดเพิ่มเติมเกี่ยวกับโซลูชันนี้ได้ ที่นี่.