Ombi hufika likielekezwa kwa IP ya handaki na kutoka kwenye kontena hiyo hiyo likielekezwa kwa huduma jirani. Kati ya matukio hayo mawili DNAT iliandika upya lengwa, na pakiti ikaacha kuwa ingizo kwa kontena ya VPN. Sasa ni trafiki inayopelekwa, inayohukumiwa na kanuni nyingine. Mabadiliko hayo yanafafanua kwa nini kanuni ya firewall inayoonekana sahihi kwa anwani ya handaki haina athari kwenye muunganisho uliotafsiriwa.

Fuatilia pakiti baada ya tafsiri

Chukua bwawa la wateja 10.90.0.0/24 na anwani ya handaki 10.90.0.1. Kontena mbili ziko kwenye daraja moja: 192.0.2.2 inaendesha VPN na 192.0.2.3 inaendesha programu. Mteja anajiunga na 10.90.0.1:8080, na kanuni ya DNAT katika nafasi ya majina ya kontena ya VPN inaiandika upya kuwa anwani na mlango halisi wa programu. Kisha njia inatuma pakiti juu ya daraja. Anwani hizo ni za mfano, si mapishi ya usambazaji.

Mlango ambao programu husikiliza kwa kweli unaweza kutofautiana na mlango wowote uliochapishwa kwenye mwenyeji. Soma msikilizaji ndani ya kontena badala ya kudhani kwamba namba zote mbili zinalingana.

Ruhusa ni ya njia ya upelekaji

Kontena ya VPN inahitaji upelekaji wa IP na uamuzi wa upelekaji uliofinya kwa bwawa la wateja, anwani ya programu na mlango uliokusudiwa. Majibu yaliyoimarishwa yanahitaji ruhusa yao wenyewe. Kanuni inayolingana na anwani ya awali ya handaki haitalingana baada ya DNAT, kwa sababu lengwa tayari limebadilika. Ruhusa ya INPUT ni ndoano isiyofaa kwa trafiki ambayo haielekezwi tena kwa mwenyeji huyu.

Weka wigo mwembamba: kipimo kimoja cha chanzo, lengwa moja, huduma moja. Kanuni ya upelekaji iliyolegea ni rahisi kuandika na ngumu zaidi kuitetea baadaye.

docker exec vpn-container ip route get 192.0.2.3
docker exec vpn-container iptables -t nat -S
docker exec vpn-container iptables -S FORWARD

Minyororo ya Docker si minyororo ya kontena yako

Kanuni ndani ya nafasi ya majina ya kontena si kanuni za mwenyeji wa Docker. Trafiki inapovuka kutoka kiolesura cha handaki kwenda darajani, firewall ya daraja kwenye mwenyeji inaweza kufanya uamuzi mwingine. Kwa backend ya iptables ya Docker, minyororo ya upelekaji iliyoandikwa na sehemu za ulinganifu baada ya DNAT ni mahali uamuzi huo unapoonekana.

Rejea ya firewall ya Docker inaeleza minyororo hiyo na ulinganifu baada ya DNAT. Usirekebishe ukubalifu unaokosekana kwa kuzima usimamizi wa firewall wa Docker au kufanya kila mnyororo ulegee, kwa sababu hiyo huondoa mpaka unaojaribu kutumia.

Fanya njia ya kurudi kuwa chaguo la makusudi

Ikiwa anwani ya chanzo itahifadhiwa, programu inaona 10.90.0.x na lazima ielekeze majibu kurudi kupitia kontena ya VPN. Vinginevyo lango lake la kawaida la Docker litayatuma kwa mwenyeji, ambaye hamiliki handaki. Njia mbadala ni tafsiri nyembamba ya chanzo kwenye kontena ya VPN, inayorahisisha jibu lakini inamficha mteja kutoka kwa programu. Chagua kwa makusudi na uandike ulichochagua.

Jaribu muunganisho mpya ulioruhusiwa kutoka kwa mteja wa kawaida, kisha thibitisha kwamba milango isiyohusiana inabaki imefungwa. Pakiti inapotoweka, chunguza nafasi ya majina ya VPN, nafasi ya majina ya programu na kumbukumbu ya programu yenyewe. Ping kwa lango la daraja si jaribio la ukubalifu kwa huduma.

Weka kanuni katika usanidi wa uanzishaji unaotumika wa kontena, kwa sababu hariri za mwingiliano hutoweka inapoundwa upya. Kuchapisha mlango wa mwenyeji ni njia nyingine ya kufichua na hakihitajiki kwa sababu tu huduma inafikiwa kupitia handaki.

Makala zinazohusiana