Aşağıdaki yapılandırma değişiklikleri, Docker ve Shorewall ana bilgisayarı arasındaki trafik akışını sağlamalıdır. Shorewall 4.5.21.9 üzerinde test edilmiştir, ancak en son sürümler için geçerli olmalıdır:
/etc/shorewall/shorewall.conf
IP yönlendirmenin etkin olduğundan emin olun (çoğu yapılandırma öğesi Evet / Hayır, ancak bu "Açık"):
IP_FORWARDING=On
/ Etc / shorewall / Maske
Özel Docker ağınız için masquerading'i (NAT) etkinleştirin (farklı bir ağ kullanıyorsanız, yani docker'ı başlattıysanız --bip=#.#.#.#/#
, buna göre değiştirin). eth0
Harici bağlantı ile ana makinedeki herhangi bir arayüzle değiştirin :
#INTERFACE:DEST SOURCE
eth0 172.17.0.0/16
/ Etc / shorewall / arayüzleri
Shorewall'ın dock
bölgenin hangi arayüzüyle ilgili olduğunu bilmesi için bir arayüz girişi ekleyin :
#ZONE INTERFACE OPTIONS
dock docker0
/ Etc / shorewall / bölgeleri
Yeni bir bölge oluşturun; not, docker
çok uzun ve "geçersiz bölge adı" hatasına neden olacak.
#ZONE INTERFACE
dock ipv4
/ Etc / shorewall / politika
Muhtemelen Docker kapsayıcılarının ana makine ve Internet ile konuşmasına izin vermek istersiniz , bu nedenle bu iyi bir başlangıç noktasıdır:
#SOURCE DEST POLICY
# ...(other policies)...
dock all ACCEPT
# ...(other policies, catch-all)...
Ayrıca benzer bir gerekebilir ACCEPT
gelen trafik için politikayı fw
için dock
halihazırda bu kadar açık olmasaydı, fw
hiç all
.
Bunu, ilke veya kural dosyalarında gerektiği gibi daha da sıkılaştırabilirsiniz . Örneğin, yukarıdakiler dışarıdaki trafiğin Docker kapsayıcılarınıza ulaşmasına açıkça izin vermez; bunun için diğer bölgelerinizi / politikalarınızı / kurallarınızı kontrol edin.
IP_FORWARDING=Yes
veIP_FORWARDING=True
çalışmak. Birkaç üretim yönlendiricisine sahibim, ancak cevabınız benimkinden çok daha net. Harika iş.