Mặc dù tường lửa nói chung là một công cụ tuyệt vời để định cấu hình tường lửa trên hộp Linux, nhưng đối với trường hợp sử dụng cụ thể này - chuyển tiếp lưu lượng truy cập cho các máy chủ khác - việc sử dụng hơi khó khăn. Tôi khuyên bạn nên tắt nó trên máy chủ của mình và chỉ sử dụng trực tiếp iptables (hoặc nftables).
Tuy nhiên, nếu bạn thực sự muốn sử dụng tường lửa, hãy thử điều này (với quyền root):
1. Tạo vùng tùy chỉnh cho giao diện WireGuard của bạn để chấp nhận tất cả lưu lượng truy cập:
tường lửa-cmd -- Permanent --new-zone=mywg
tường lửa-cmd -- Permanent --zone=mywg --set-target=CHẤP NHẬN
tường lửa-cmd --reload
2. Thêm các quy tắc "rich" vào vùng để từ chối các kết nối gửi đến từ WireGuard đến chính máy chủ:
tường lửa-cmd --zone=mywg --add-rich-rule='rule family="ipv4" priority="30001" giao thức giá trị="tcp" từ chối'
tường lửa-cmd --zone=mywg --add-rich-rule='rule family="ipv4" priority="30002" protocol value="udp" reject'
tường lửa-cmd --zone=mywg --add-rich-rule='rule family="ipv6" priority="30003" giao thức giá trị="tcp" từ chối'
tường lửa-cmd --zone=mywg --add-rich-rule='rule family="ipv6" priority="30004" protocol value="udp" reject'
3. Thêm quy tắc "trực tiếp" để cho phép chuyển tiếp các kết nối IPv4 SSH giữa các máy chủ WireGuard khác và từ chối mọi thứ khác:
tường lửa-cmd --direct --add-rule bộ lọc ipv4 PHÍA TRƯỚC 0 -i wg0 -m state --state ĐÃ THÀNH LẬP, LIÊN QUAN -j CHẤP NHẬN
tường lửa-cmd --direct --add-rule bộ lọc ipv4 PHÍA TRƯỚC 1 -i wg0 -o wg0 -m state --state MỚI -p tcp --dport 22 -j CHẤP NHẬN
tường lửa-cmd --direct --add-rule ipv4 filter FORWARD 2 -i wg0 -j REJECT
tường lửa-cmd --direct --add-rule bộ lọc ipv6 PHÍA TRƯỚC 0 -i wg0 -j TỪ CHỐI
4. Liên kết vùng với giao diện WireGuard của bạn và lưu các thay đổi của bạn:
tường lửa-cmd --zone=mywg --add-interface=wg0
tường lửa-cmd --runtime-to- Permanent
Bạn có thể thêm nhiều quy tắc trực tiếp IPv4 hơn giữa 0 và 2 (đánh số lại TỪ CHỐI
là quy tắc cuối cùng) nếu bạn muốn cho phép các loại lưu lượng khác giữa các máy chủ WireGuard của mình (hoặc chỉ thay thế quy tắc 0 và 1 bằng một quy tắc duy nhất như -i wg0 -o wg0 -J CHẤP NHẬN
nếu bạn muốn cho phép máy chủ chuyển tiếp bất kỳ và tất cả lưu lượng truy cập giữa các máy chủ WireGuard của bạn).
Xem phần Hub and Spoke của cái này Cách sử dụng WireGuard với Firewalld bài viết để được giải thích đầy đủ (Host C là máy chủ của bạn trong bài viết này).