Een container een eigen adres op het netwerk geven: wat u wint, wat u betaalt
U kunt een container met een eigen adres publiceren in plaats van met een poortnummer. De winst is echt en de prijs ook, en die tweede wordt meestal pas na de bouw ontdekt.
AtlasPVE ·
Dit artikel beantwoordt
- docker container eigen ip adres
- docker macvlan wat is dat
- docker macvlan host bereikt container niet
- docker container niet zichtbaar op netwerk
- docker ip geven in plaats van poort
De standaardopzet is deze: de container deelt het adres van de machine en u bereikt hem via een poortnummer. Het is eenvoudig, het is veilig, en voor het meeste werk is het genoeg.
Er zijn gevallen waarin het niet genoeg is, en die zijn voorspelbaar.
Wanneer een poortnummer niet genoeg is
Twee toepassingen willen hetzelfde nummer. U verplaatst er een naar een ander nummer, en dan dragen de koppelingen die die toepassing zelf maakt dat nummer niet, en wordt het onoverzichtelijk.
De toepassing kondigt zichzelf aan op het netwerk. Printers vinden, mediaspelers vinden, apparaten in het slimme huis vinden: dat werkt met zelfaankondigende berichten. Die berichten overleven de poorttoewijzing niet. De toepassing kondigt zich aan, maar het adres dat zij aankondigt is dat van de machine, en de andere kant bereikt haar niet.
U wilt de toepassing in de apparatenlijst van de router zien. Om haar een vast adres te geven, een aparte firewallregel te schrijven, haar verkeer apart te zien. Met poorttoewijzing bestaat die toepassing voor het netwerk niet; alleen de machine bestaat.
De andere weg: de container een eigen identiteit geven
De container verschijnt op het netwerk met een eigen hardware-adres, krijgt een eigen adres van de router, en staat in de apparatenlijst als een fysiek apparaat.
De eerste reactie hierop is meestal "waarom doet niet iedereen dat zo". Het antwoord zit in de prijs.
Prijs één: de machine bereikt zijn eigen container niet
Dit verrast het meest, en het wordt meestal pas ontdekt als het werk klaar is.
Alle apparaten op het netwerk bereiken die container. De machine die hem draait niet.
De reden is logisch: beide gebruiken dezelfde fysieke interface, en het verkeer komt niet terug van de switch. De machine stuurt het pakket naar buiten, en het pakket keert niet terug naar de eigen kaart.
De gevolgen zijn alledaags: een gezondheidscontrole die op de machine draait bereikt de toepassing niet, een andere container op dezelfde machine kan er niet mee verbinden, een script dat u schreef werkt niet. Dat alles terwijl het netwerk van buitenaf onberispelijk lijkt.
Er is een oplossing, maar het is een extra onderdeel: op de machine een tweede virtuele interface openen die aan dezelfde kaart hangt, en het pad naar het adres van de container daarlangs leiden. Eenmaal geïnstalleerd is het probleem weg, maar omdat het een toevoeging is, snapt niemand het als het wordt vergeten.
Prijs twee: u verbruikt een echt adres
Elke container verbruikt een adres uit uw netwerk. Tien toepassingen betekent tien adressen. Op een klein netwerk bereikt u de grens snel.
Bovendien kan het adres veranderen als het een lening is. Verandert het, dan wijst alles wat eraan vastzat, ook een regel die u schreef, stilletjes naar de verkeerde plek.
Prijs drie: de netwerkkaart en de firewall
De kaart moet meer dan één hardware-adres accepteren. De meeste draadloze verbindingen doen dat niet, en sommige virtuele omgevingen komen met die mogelijkheid uitgeschakeld. Beslis niet zonder te testen.
En uw firewall ziet nu een apparaat op het netwerk dat hij niet kent. Voor u is het een container; voor wie de regels schrijft een gewoon apparaat. Dat is geen probleem, maar als het onuitgesproken blijft, brengt het ooit iemand in verwarring.
Een adres is niet genoeg, er moet ook een naam zijn
Een toepassing met een adres en zonder naam is de helft van de winst. Niemand wil een adres uit het hoofd leren.
Om de naam op het netwerk aan te kondigen moet iets dat werk doen. Het eigen beeldbestand van de toepassing bevat zo'n onderdeel meestal niet, en dat hoeft ook niet: een databasebeeld heeft niets aan te kondigen op een netwerk.
De regel
Een poorttoewijzing geeft een deur een nummer. Een netwerkidentiteit verleent burgerschap.
Verleen burgerschap alleen wanneer het netwerk die toepassing echt als een apparaat moet behandelen. Zo niet, dan is een poortnummer zowel eenvoudiger als veiliger.
Wat Atlas doet
Bij het opzetten raakt Atlas het eigen beeldbestand van de toepassing niet aan. Het opent naast de toepassing een kleine helper, en die helper deelt de netwerkstapel van de toepassing. De helper vraagt het adres aan de router, en de helper kondigt de naam aan op het netwerk.
Die koppeling is bewust en levert twee dingen op. Het beeldbestand van de toepassing hoeft geen adresclient en geen naamaankondiger te bevatten. En omdat de netwerkstapel bij de toepassing hoort, valt de helper vanzelf weg wanneer de toepassing stopt, zodat er geen verweesde container achterblijft.
Voor het probleem dat de machine zijn eigen container niet bereikt, wordt de hierboven beschreven brug geïnstalleerd, en wel als dienst, zodat die zichzelf herbouwt wanneer de machine opnieuw start.
Wat echt het vertellen waard is, is een fout die in die brug bij een test in bedrijf werd gevonden.
De brug opende een pad naar het adres van de container. Maar zij verwijderde het pad van een verdwenen container niet. Na een herstart was het pad van een tijdelijk adres blijven hangen. Het gevolg: neemt later een ander apparaat dat adres, dan wordt het verkeer dat voor dat apparaat bedoeld is naar de brug omgeleid. De fout treft dus niet de container, maar een onschuldige derde op het netwerk.
De correctie was de brug niet langer iets te laten zijn dat alleen paden toevoegt, maar iets dat paden verwijdert die niet meer bij een levende container horen.
De algemene les geldt ook buiten het netwerk: toevoegen is de makkelijke helft. Een pad, een regel, een toewijzing is een bewering die u over de wereld doet. Verandert de wereld, dan wordt een bewering die niemand introk een leugen, en die treft meestal niet u maar iemand die niets met u te maken heeft.
Bronnen
De eigen documentatie van Proxmox. In het Engels, en die heeft over dit onderwerp het laatste woord.