Các thay đổi cấu hình sau sẽ đảm bảo luồng lưu lượng giữa Docker và máy chủ Shorewall. Đã thử nghiệm trên Shorewall 4.5.21.9 nhưng nên áp dụng cho hầu hết các phiên bản gần đây:
/etc/ shorewall / shorewall.conf
Đảm bảo chuyển tiếp IP được bật (hầu hết các mục cấu hình là Có / Không, nhưng mục này là "Bật"):
IP_FORWARDING=On
/ etc / shorewall / masq
Kích hoạt tính năng giả mạo (NAT) cho mạng Docker riêng của bạn (nếu bạn sử dụng một mạng khác, tức là bạn khởi chạy docker với --bip=#.#.#.#/#
, sau đó thay đổi tương ứng). Thay đổi eth0
bất kỳ giao diện nào trên máy chủ có kết nối bên ngoài:
#INTERFACE:DEST SOURCE
eth0 172.17.0.0/16
/ etc / shorewall / giao diện
Thêm một mục giao diện để Shorewall biết dock
khu vực nào liên quan đến:
#ZONE INTERFACE OPTIONS
dock docker0
/ etc / shorewall / khu
Tạo một vùng mới; lưu ý, docker
quá dài và sẽ gây ra lỗi "tên khu vực không hợp lệ".
#ZONE INTERFACE
dock ipv4
/ etc / shorewall / chính sách
Bạn có thể muốn cho phép các container Docker nói chuyện với máy chủ và Internet, vì vậy đây là điểm khởi đầu tốt:
#SOURCE DEST POLICY
# ...(other policies)...
dock all ACCEPT
# ...(other policies, catch-all)...
Bạn cũng có thể cần một tương tự ACCEPT
chính sách đối với lưu lượng từ fw
tới dock
, nếu bạn không đã mở nó lên với fw
tới all
.
Bạn có thể thắt chặt điều này hơn nữa trong các tệp chính sách hoặc quy tắc nếu cần. Ví dụ, ở trên không rõ ràng cho phép lưu lượng truy cập bên ngoài đến được các container Docker của bạn; kiểm tra các khu vực / chính sách / quy tắc khác của bạn cho điều đó.
IP_FORWARDING=Yes
vàIP_FORWARDING=True
làm việc như là tốt. Tôi có nó trên một số bộ định tuyến sản xuất, nhưng câu trả lời của bạn rõ ràng hơn nhiều so với của tôi. Công việc tuyệt vời