IPtables là tuyến tính và nó đọc các quy tắc từ trên xuống dưới cho đến khi đạt đến mục tiêu CHẤP NHẬN, TỪ CHỐI hoặc THẢO, rồi dừng đọc các quy tắc. Trong trường hợp của bạn, bạn muốn có iptables -I DOCKER-USER -j DROP
là quy tắc cuối cùng trong chuỗi của bạn, nếu không mọi gói tin sẽ bị loại bỏ. Ngoài ra, không cần quy tắc RETURN ở cuối, bởi vì IPtables sẽ ngừng đọc các quy tắc khi đạt đến quy tắc DROP ngay phía trên nó. Các quy tắc IPtables với tun0 trông ổn, nhưng hãy đảm bảo rằng bạn cũng có các quy tắc này:
iptables -t filter -I INPUT 1 -i tun0 -j DOCKER-USER
iptables -t filter -I OUTPUT 2 -o tun0 -j DOCKER-USER
Để thực hành tốt, hãy đảm bảo rằng bạn chấp nhận tất cả lưu lượng truy cập vòng lặp, lưu lượng truy cập này sẽ không bao giờ truy cập internet cũng như không rời khỏi máy:
iptables -t bộ lọc -I INPUT 3 -i tun0 -j CHẤP NHẬN
Hãy xem xét từng yêu cầu của bạn:
- Bất kỳ dịch vụ nào được gán cho nút này đều sử dụng riêng kết nối VPN
Bạn sẽ không sử dụng IPtables để làm điều này. Chạy các lệnh này trên máy chủ:
tuyến ip thêm mặc định qua ${LOCAL_VPN_IP}
Tôi nghĩ OpenVPN thường sử dụng 10.8.0.0/16, vì vậy cổng mặc định có thể là 10.8.0.1 hoặc đại loại như thế. IProute2 (lệnh ip) được tích hợp trong kernel, giống như IPtables.
- Không có rò rỉ (nghĩa là DNS hoặc lưu lượng truy cập khác)
Trước tiên, bạn nên chuyển hướng tất cả lưu lượng truy cập qua VPN bằng cách đặt lưu lượng truy cập này vào cấu hình máy chủ của OpenVPN:
đẩy "chuyển hướng cổng tự động"
Điều này làm cho khách hàng đặt tất cả lưu lượng truy cập của họ thông qua VPN, thậm chí cả DNS, v.v. Nếu máy chủ OpenVPN gặp sự cố, internet sẽ ngừng hoạt động trên các máy khách.
- Nếu VPN bị ngắt kết nối, tất cả lưu lượng truy cập sẽ bị hủy
Xem bước 2
- Cho phép khám phá dịch vụ và kết nối với các vùng chứa khác trong Swarm
Tôi tin rằng OpenVPN thực hiện điều này theo mặc định. Tôi có thể ping/arp từ máy khách này sang máy khách khác trên máy chủ OpenVPN.Bạn chắc chắn sẽ có thể truy cập các dịch vụ trên các máy khách khác.
Tôi hy vọng điều này trả lời câu hỏi của bạn!