Perubahan konfigurasi berikut harus memastikan aliran lalu lintas antara Docker dan host Shorewall. Diuji pada Shorewall 4.5.21.9 tetapi harus berlaku untuk versi terbaru:
/etc/shorewall/shorewall.conf
Pastikan penerusan IP diaktifkan (sebagian besar item konfigurasi Ya / Tidak, tetapi yang ini "Aktif"):
IP_FORWARDING=On
/ etc / shorewall / masq
Aktifkan penyamaran (NAT) untuk jaringan Docker pribadi Anda (jika Anda menggunakan jaringan yang berbeda, yaitu dengan meluncurkan docker --bip=#.#.#.#/#
, lalu ubah sesuai itu). Ubah eth0
ke antarmuka apa pun pada mesin host dengan konektivitas eksternal:
#INTERFACE:DEST SOURCE
eth0 172.17.0.0/16
/ etc / shorewall / interfaces
Tambahkan entri antarmuka sehingga Shorewall tahu antarmuka mana yang dock
terkait dengan zona:
#ZONE INTERFACE OPTIONS
dock docker0
/ etc / shorewall / zona
Buat zona baru; perhatikan, docker
terlalu panjang dan akan menyebabkan kesalahan "nama zona tidak valid".
#ZONE INTERFACE
dock ipv4
/ etc / shorewall / kebijakan
Anda mungkin ingin mengizinkan wadah Docker untuk berbicara dengan mesin host dan Internet, jadi ini adalah titik awal yang baik:
#SOURCE DEST POLICY
# ...(other policies)...
dock all ACCEPT
# ...(other policies, catch-all)...
Anda mungkin juga perlu serupa ACCEPT
kebijakan untuk lalu lintas dari fw
ke dock
, jika Anda tidak sudah membukanya dengan fw
ke all
.
Anda dapat memperketat ini lebih lanjut dalam file kebijakan atau aturan yang diperlukan. Misalnya, hal di atas tidak secara eksplisit mengizinkan lalu lintas luar untuk mencapai wadah Docker Anda; periksa zona / kebijakan / aturan Anda yang lain untuk itu.
IP_FORWARDING=Yes
danIP_FORWARDING=True
bekerja juga. Saya memilikinya di beberapa router produksi, tetapi jawaban Anda jauh lebih jelas daripada saya. Kerja bagus.