[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

NAT in consumenten routers (was Re: pingen van imap in Evolution)



On 08/14/2011 11:26 PM, Frank Voncken wrote:

Hoi,

> Dat zou een verklaring kunnen zijn (al snap ik niet zo heel erg veel
> van). Zou het wellicht helpen als ik een andere router neem dan de
> consumer-grade? Of lekker rommelen in de Ubee-modem van Ziggo? Of zit ik
> eraan vast?

Even een heel lang verhaal over de NAT:

Doorgaans krijgt een router/modem het externe ip-adres. De computers die
je er op aansluit krijgen een ip-adres uit een private range. De router
vertaalt de verbindingen van/naar buiten steeds van het externe ip-adres
naar het interne van de computer die iets wil en terug (om precies te
zijn: poort op extern adres naar intern adres + poort). Dat proces het
NAT (Network Address Translation).

De router houdt een tabel bij van welke poort op het externe adres bij
welke poort op welke interne computer hoort. Dat is de 'NAT-table'. Die
NAT-table kan vrij groot worden. Zo heeft de laptop waar ik nu op zit te
typen, zonder dat ik veel bijzonders doe, zo een 30-40 verbindingen op
staan. Als ik even web surf worden er zo honderden verbindingen
opgebouwd en weer afgebroken. Als ik ga spelen met iets als bittorrent,
dan kan ik zo tientallen honderden verbindingen per seconde opbouwen en
makkelijk per computer honderden tot duizenden verbindingen open hebben
staan.

Nu zijn er soorten verbindingen die geopend worden en kort daarna meteen
weer afgesloten worden (bijvoorbeeld POP en HTTP) maar er zijn ook
verbindingen die na het openen uren tot dagen open kunnen blijven zonder
dat er verkeer overheen gaat (bijvoorbeeld IMAP, SSH en XMPP). Die
laatsten openen een verbinding en laten die slapen totdat een van de
partijen iets te melden heeft.

Nu is het de vraag wat de router doet als de NAT-table te groot wordt en
welke mechanismes de router heeft om de NAT-table weer op te ruimen.
Gooit de router verbindingen uit de lijst als er te lang niets op
gebeurt (Een zogenaamde 'NAT-timeout')? Welke verbindingen worden
weggegooid als de tabel te groot dreigt te worden? De oudste? Degene
waar het langst geen verkeer overheen is gegaan? Enfin, als de NAT-table
niet groot genoeg is (bijvoorbeeld om geheugen uit te sparen) en/of als
de router gare of te agressieve logica gebruikt bij het opschonen van de
NAT-table, dan worden de 'slapende' verbindingen ceremonieloos de nek
omgedraaid.

Bij dat de nek omdraaien omdraaien hebben de computer in het interne
netwerk en de server aan de andere kant geen idee dat ze geen contact
meer met elkaar hebben. Ze komen daar pas achter, als ze zelf iets te
melden hebben en daar dan een TCP-error of time out op volgt. Voor jouw
IMAP zou dat dan betekenen dat de computer thuis denkt dat de
IMAP-server nog steeds aan de lijn hangt en de mail doorstuurt totdat
'ie zelf wat wil versturen. Dan volgt er in het beste geval een
TCP-error, in het slechtste wacht 'ie dan eerst nog totdat 'ie een TCP
time-out heeft. Dan pas weet de computer dat er iets mis is met de IMAP
verbinding en probeert 'ie opnieuw verbinding te maken. Al die tijd
komen nieuwe berichten van de server niet aan, de server kan die pas
versturen nadat de computer opnieuw verbinding heeft gemaakt. Al met al
geen goede gebruikerservaring.

Ik heb geen overzicht van welke modems fatsoenlijk NAT doen en welke
niet. Maar ik zie wel regelmatig NAT-problemen bij consumenten
apparatuur. Daarbij heb ik ook gezien dat 'kwaliteitsproducten' met een
verkeerde firmware versie problemen konden hebben. Doorgaans kan je bij
consumentenproducten niets veranderen aan de NAT-instellingen. Naar mijn
mening is NAT door een consumentenproduct een gok.

Zelf heb ik een oplossing gezocht waarbij mijn ADSL-modem niets geen NAT
doet (ook niet stiekem) en laat ik de NAT door een Debian router doen.
Dat bevalt prima en daarmee zijn we zijn eindelijk weer on-topic.

Wat de beste manier is om te voorkomen dat je een gare NAT hebt als je
niet je eigen router wilt draaien en/of als je bij Ziggo zit? Werkelijk
geen idee.

Ik denk eigenlijk dat het praktischer is om niet te proberen de router
te maken, maar om een mail client te zoeken die een optie heeft om
'keep-alive packets' te versturen tegen een NAT time-out. Ik weet dat
sommige XMPP programma's dat kunnen en dat scheelt een hoop (maar niet
alle) gedonder.


groet,

Winfried


Reply to: