(Dựa trên tác phẩm xuất sắc của Chrispus Kamau VPN bảo vệ dây hướng dẫn cho Thiết lập điển hình và Thiết lập chuỗi, có vẻ như tôi có thể có một giải pháp (chưa được kiểm tra!) ở định dạng cho biết cách xử lý các thiết lập hơi bất thường/phức tạp—hoặc ít nhất là cung cấp cho bạn một ý tưởng. Cảm ơn CK rất nhiều!)
Qua: https://github.com/iamckn/chained-wireguard-ansible
Làm thế nào nó hoạt động:
Khách hàng (vpn0
) â 10.200.200.0/24
(wg0
) â Người trung gian (cổng0
) â 10.100.100.0/24
(wg0
) Cánh cổng (wg0
) â Internet công cộng
Giả sử rằng Unbound được thiết lập trên cả Middleman và Gate để phân giải DNS cục bộ.
Cấu hình cổng
Định cấu hình giao diện VPN của cổng (wg0
).
Tập tin: /etc/wireguard/wg0.conf
# NGƯỜI PHỤC VỤ
[Giao diện] # Cổng
Khóa riêng tư = GATE_PRIVATE_KEY
Địa chỉ = 10.100.100.1/24
Cổng nghe = 53701
SaveConfig = sai
# KHÁCH HÀNG
[Đồng đẳng] # Trung gian
Khóa công khai = MIDDLEMAN_PUBLIC_KEY
PresharedKey = MIDDLEMAN_PRESHARED_KEY
IP được phép = 10.0.0.0/8
Cấu hình tường lửa. lệnh:
# Theo dõi kết nối VPN
## Theo dõi chuỗi đầu vào
iptables -A INPUT -m conntrack --ctstate LIÊN QUAN, THÀNH LẬP -j CHẤP NHẬN
## Theo dõi chuỗi chuyển tiếp
iptables -A FORWARD -m conntrack --ctstate LIÊN QUAN, THÀNH LẬP -j CHẤP NHẬN
# Cho phép các kết nối WireGuard/lưu lượng truy cập VPN đến trên cổng nghe
iptables -A INPUT -p udp -m udp --dport 53701 -m conntrack --ctstate MỚI -j CHẤP NHẬN
# Cho phép cả lưu lượng DNS đệ quy TCP và UDP
iptables -A INPUT -s 10.100.100.0/24 -p tcp -m tcp --dport 53 -m conntrack --ctstate MỚI -j CHẤP NHẬN
iptables -A INPUT -s 10.100.100.0/24 -p udp -m udp --dport 53 -m conntrack --ctstate MỚI -j CHẤP NHẬN
# Cho phép chuyển tiếp các gói nằm trong đường hầm VPN
iptables -A FORWARD -i wg0 -o wg0 -m conntrack --ctstate MỚI -j CHẤP NHẬN
# Thiết lập NAT
iptables -t nat -A POSTROUTING -s 10.100.100.0/24 -o enp7s0 -j MASQUERADE
Mở giao diện VPN của cổng và cho phép dịch vụ WireGuard tự động khởi động lại khi khởi động:
wg-nhanh lên wg0
kích hoạt systemctl wg-quick@wg0
Cấu hình người trung gian
Định cấu hình giao diện đối mặt với cổng của người trung gian (cổng0
). Ở đây người trung gian đóng vai trò là khách hàng.
Tập tin: /etc/wireguard/gate0.conf
[Giao diện] # Người trung gian
Khóa riêng tư = MIDDLEMAN_PRIVATE_KEY
Địa chỉ = 10.100.100.2/32
DNS = 10.100.100.1
SaveConfig = sai
# ĐỒNG NGHIỆP
[Ngang hàng] # Cổng
Khóa công khai = GATE_PUBLIC_KEY
PresharedKey = MIDDLEMAN_PRESHARED_KEY
Điểm cuối = GATE_PUBLIC_IP:53701
IP được phép = 0.0.0.0/0
#PersistentKeepalive = 21
Định cấu hình giao diện hướng tới khách hàng của người trung gian (wg0
). Ở đây người trung gian đóng vai trò là người phục vụ.
Tập tin: /etc/wireguard/wg0.conf
# NGƯỜI PHỤC VỤ
[Giao diện] # Người trung gian
Khóa riêng tư = MIDDLEMAN_PRIVATE_KEY
Địa chỉ = 10.200.200.1/24
Cổng nghe = 53701
SaveConfig = sai
# KHÁCH HÀNG
[Đồng đẳng] # PC
Khóa công khai = CLIENT_PUBLIC_KEY
PresharedKey = CLIENT_PRESHARED_KEY
IP được phép = 10.200.200.2/32
Cấu hình tường lửa. lệnh:
iptables -A INPUT -m conntrack --ctstate LIÊN QUAN, THÀNH LẬP -j CHẤP NHẬN
iptables -A FORWARD -m conntrack --ctstate LIÊN QUAN, THÀNH LẬP -j CHẤP NHẬN
iptables -A INPUT -p udp -m udp --dport 53701 -m conntrack --ctstate MỚI -j CHẤP NHẬN
iptables -A INPUT -s 10.200.200.0/24 -p tcp -m tcp --dport 53 -m conntrack --ctstate MỚI -j CHẤP NHẬN
iptables -A INPUT -s 10.200.200.0/24 -p udp -m udp --dport 53 -m conntrack --ctstate MỚI -j CHẤP NHẬN
iptables -A FORWARD -i wg0 -o wg0 -m conntrack --ctstate MỚI -j CHẤP NHẬN
iptables -t nat -A POSTROUTING -s 10.200.200.0/24 -o enp41s0 -j MASQUERADE
# Thiết lập chuỗi VPN NAT
iptables -t nat -A POSTROUTING -s 10.200.200.0/24 -j SNAT --to-source 10.100.100.2
Định cấu hình định tuyến chính sách trên người trung gian để định tuyến lưu lượng truy cập từ máy khách đến cổng.
tiếng vang "1 người trung gian" >> /etc/iproute2/rt_tables
# Chuyển tiếp tất cả lưu lượng đến cổng
tuyến đường ip thêm 0.0.0.0/0 bảng dev gate0 người trung gian
# HOẶC chỉ chuyển tiếp lưu lượng tới 4.2.2.2 (ví dụ:), tới cổng
#ip route thêm người trung gian bảng 4.2.2.2/32 dev gate0
thêm quy tắc ip từ người trung gian tra cứu 10.200.200.0/24
Hiển thị giao diện WireGuard của người trung gian và cho phép dịch vụ WireGuard tự động khởi động lại khi khởi động:
wg-lên cổng nhanh0
kích hoạt systemctl wg-quick@gate0
wg-nhanh lên wg0
kích hoạt systemctl wg-quick@wg0
Cấu hình máy khách
Tập tin: /etc/wireguard/vpn0.conf
[Giao diện]
Khóa riêng tư = CLIENT_PRIVATE_KEY
Địa chỉ = 10.200.200.2/32
DNS = 10.200.200.1
# ĐỒNG NGHIỆP
[Đồng đẳng] # Trung gian
Khóa công khai = MIDDLEMAN_PUBLIC_KEY
PresharedKey = CLIENT_PRESHARED_KEY
Điểm cuối = MIDDLEMAN_PUBLIC_IP:53701
IP được phép = 0.0.0.0/0
#PersistentKeepalive = 21
Cuối cùng kích hoạt WireGuard trên máy khách.