Dit document leidt u door de stappen die worden vereist om problemen te verlichten die met de fragmentatie van een pakket kunnen voorkomen. Een voorbeeld van een fragmentatieprobleem is de mogelijkheid om een netwerkbron te pingelen, maar het onvermogen om verbinding te maken met dezelfde bron met een specifieke toepassing, zoals E-mail of databases.
Voordat u deze configuratie uitvoert, moet aan de volgende vereisten worden voldaan:
Connectiviteit tussen VPN-peers
Dit document is niet beperkt tot specifieke software- en hardware-versies.
Het netwerk in dit document is als volgt opgebouwd:
Deze configuratie kan ook worden gebruikt in combinatie met deze hardware- en softwareversies:
IOS-routers
PIX/ASA security apparaten
Raadpleeg Cisco Technical Tips Conventions (Conventies voor technische tips van Cisco) voor meer informatie over documentconventies.
IP ondersteunt een maximale lengte van 65.536 bytes voor een IP-pakket, maar de meeste datalink-laagprotocollen ondersteunen een veel kleinere lengte, genaamd een maximum-transmissie-eenheid (MTU). Gebaseerd op de ondersteunde MTU kan het nodig zijn om een IP-pakket te splitsen (fragment) om het over een bepaald mediatype op de datalink-laag te verzenden. De bestemming moet de fragmenten vervolgens weer in het oorspronkelijke, volledige IP-pakket monteren.
Wanneer u een VPN gebruikt om gegevens tussen twee VPN-peers te beveiligen, wordt extra overhead toegevoegd aan de oorspronkelijke gegevens, wat kan vereisen dat fragmentatie optreedt. Deze tabel bevat velden die mogelijk aan de beveiligde gegevens moeten worden toegevoegd om een VPN-verbinding te ondersteunen. Merk op dat er meerdere protocollen nodig kunnen zijn, waardoor de grootte van het oorspronkelijke pakket toeneemt. Als u bijvoorbeeld een L2L DMVPN IPSEC-verbinding tussen twee Cisco-routers gebruikt, waar u een GRE-tunnel hebt geïmplementeerd, hebt u deze extra overhead nodig: ESP, GRE en de externe IP-header. Als u een IPSec softwareclient verbinding met een VPN-gateway hebt wanneer het verkeer door een adresapparaat gaat, hebt u deze extra overhead nodig voor Network Address Translation- Traversal (NAT-T), evenals de externe IP-header voor de verbinding van de tunnelmodus.
Wanneer de bron een pakket naar een bestemming verzendt, plaatst het een waarde in het veld besturingsvlaggen van de IP-kopregels die de fragmentatie van het pakket door tussenapparaten beïnvloedt. De controlevlag is drie beetjes lang, maar slechts worden de eerste twee gebruikt in fragmentatie. Als het tweede bit op 0 is ingesteld, mag het pakket gefragmenteerd zijn; als het op 1 is ingesteld, mag het pakket niet gefragmenteerd zijn. Het tweede bit wordt vaak het don't fragment (DF) bit genoemd. Het derde bit geeft aan wanneer de fragmentatie optreedt, of dit gefragmenteerde pakket het laatste fragment is (ingesteld op 0) of dat er meer fragmenten (ingesteld op 1) zijn waaruit het pakket bestaat.
Er zijn vier gebieden die problemen kunnen veroorzaken wanneer fragmentatie nodig is:
Extra overhead in CPU-cycli en geheugen is vereist voor de twee apparaten die fragmentatie en hermontage uitvoeren.
Als één fragment op de manier naar de bestemming wordt gelaten vallen, kan het pakket niet worden opnieuw geassembleerd en het volledige pakket moet worden gefragmenteerd en opnieuw worden verzonden. Dit leidt tot extra doorvoerproblemen, vooral in situaties waar het verkeer in kwestie tarief-beperkt is, en de bron verzendt verkeer boven de toelaatbare grens.
Het filteren van pakketten en stateful firewalls kunnen problemen opleveren bij het verwerken van de fragmenten. Wanneer fragmentatie optreedt, bevat het eerste fragment een buitenste IP-header, de binnenste header, zoals TCP, UDP, ESP en anderen, en een deel van de payload. De volgende fragmenten van het originele pakket gaan een externe IP-header en de voortzetting van de payload aan. Het probleem met dit proces is dat bepaalde firewalls de interne headerinformatie in elk pakket moeten zien om intelligente filterbeslissingen te nemen; als die informatie ontbreekt, kunnen ze per ongeluk alle fragmenten laten vallen, behalve de eerste.
De bron in de IP-header van het pakket kan het derde controlebit zo instellen dat het niet fragmenteert. Dit betekent dat als een intermediair apparaat het pakket ontvangt en moet fragmenteren, het intermediair apparaat het niet kan fragmenteren. In plaats daarvan, laat vallen het middenapparaat het pakket.
De meeste netwerken gebruiken Ethernet, met een standaard MTU waarde van 1.500 bytes, die typisch voor IP pakketten wordt gebruikt. Om te weten te komen of fragmentatie optreedt of nodig is maar niet kan worden gedaan (DF bit is ingesteld), breng eerst uw VPN sessie omhoog. Dan kunt u elk van deze vier procedures gebruiken om fragmentatie te ontdekken.
Pingel een apparaat dat zich aan de andere kant bevindt. Dit is onder de aanname dat pingen is toegestaan door de tunnel. Als dit succesvol is, probeer dan toegang te krijgen tot een applicatie over hetzelfde apparaat; als een Microsoft E-mail of Remote Desktop server bijvoorbeeld via de tunnel is, open Outlook en probeer uw E-mail te downloaden, of probeer naar Remote Desktop naar de server. Als dit niet werkt en u de juiste naamresolutie hebt, is er een goede kans dat fragmentatie het probleem is.
Van een Windows-apparaat gebruik dit: C:\> ping -f -l packet_size_in_bytes target_IP_address.
De optie -f wordt gebruikt om aan te geven dat het pakket niet kan worden gefragmenteerd. De optie -1 wordt gebruikt om de lengte van het pakket te specificeren. Probeer dit eerst met een pakketgrootte van 1.500. Bijvoorbeeld, ping -f -l 1500 192.168.100. Als fragmentatie vereist is maar niet kan worden uitgevoerd, ontvangt u een bericht zoals dit: Pakketten moeten worden gefragmenteerd maar PDF-set.
Voor Cisco-routers voert u de opdracht debug ip icmp uit en gebruikt u de uitgebreide ping-opdracht. Als u ICMP ziet:dst (x.x.x.x) fragmentatie nodig en PDF-set, onbereikbaar verzonden naar y.y.y.y, waar x.x.x.x een doelapparaat is, en y.y.y.y uw router is, vertelt een tussenapparaat u dat fragmentatie nodig is, maar omdat u het DF-bit in het echoverzoek instelt, kan een tussenapparaat het niet fragmenteren om het door te sturen naar de volgende hop. In dit geval, verlaag geleidelijk de MTU grootte van de pings tot je er een vindt die werkt.
Gebruik in Cisco security applicaties een opnamefilter.
ciscoasa (config)#access-list buitenkant_testvergunning TCP elke host 172.22.1.1 eq 80
Opmerking: wanneer u de bron als een willekeurige bron verlaat, kan de beheerder alle netwerkadresvertalingen (NAT) controleren.
ciscoasa(config)#access-list buitenkant_testvergunning TCP host 172.22.1.1 eq 80 elke
Opmerking: wanneer u de bron- en doelinformatie omkeert, kan terugkeerverkeer worden opgenomen.
ciscoasa (config)# neemt access-list voor de buitenkant van de interface op.
De gebruiker moet een nieuwe sessie starten met applicatie X. Nadat de gebruiker een nieuwe applicatie X sessie gestart heeft, moet de ASA beheerder de opdracht show capture external_interface uitgeven.
Er zijn verschillende manieren waarop je problemen met fragmentatie kunt oplossen. Deze worden in deze paragraaf besproken.
De statische MTU-instelling kan problemen met fragmentatie oplossen.
MTU-wijziging op de router:
Merk op dat als u handmatig de MTU op het apparaat instelt, het het apparaat, dat fungeert als een VPN-gateway, vertelt om ontvangen pakketten te fragmenteren voordat het beschermt en ze over de tunnel verstuurt. Dit is verkieslijker dan het hebben van de router het verkeer beschermen en dan het fragmenteren, maar het apparaat fragmenteert het.
Waarschuwing: Als u de MTU-grootte wijzigt op een apparaatinterface, zorgt dit ervoor dat alle tunnels die op die interface worden afgesloten, worden afgebroken en opnieuw worden gebouwd.
Voor Cisco-routers gebruikt u de ip-opdracht om de MTU-grootte aan te passen op de interface waar VPN is beëindigd:
router (config)# interface type [slot_#/] port_# router (config-if)# ip mtu MTU_size_in_bytes
MTU-wijziging op de ASA/PIX:
Voor ASA/PIX-apparaten gebruikt u de opdracht mtucommand om de MTU-grootte in globale configuratiemodus aan te passen. Standaard is de MTU ingesteld op 1500. Als u bijvoorbeeld een interface had op uw beveiligingsapparaat met de naam Buiten (waar de VPN is beëindigd), en u hebt bepaald (via de maatregelen in het gedeelte Discover Fragmentation) dat u 1380 als fragmentgrootte wilt gebruiken, gebruikt u deze opdracht:
security appliance (config)# mtu Outside 1380
De maximale TCP-segmentgrootte kan problemen met fragmentatie oplossen.
Opmerking: deze functie werkt alleen met TCP; andere IP-protocollen moeten een andere oplossing gebruiken om IP-fragmentatieproblemen op te lossen. Zelfs als u de ip-muis op de router instelt, heeft dit geen invloed op wat de twee eindhosts binnen de TCP-handdruk met TCP-MSS onderhandelen.
MSS-wijziging op de router:
Fragmentation komt met TCP-verkeer voor omdat TCP-verkeer normaal wordt gebruikt om grote hoeveelheden gegevens te transporteren. TCP ondersteunt een functie genaamd TCP maximum segmentgrootte (MSS) die de twee apparaten in staat stelt om een geschikte grootte te onderhandelen voor TCP verkeer. De waarde MSS wordt statisch op elk apparaat geconfigureerd en vertegenwoordigt de buffergrootte die voor een verwacht pakket moet worden gebruikt. Wanneer twee apparaten TCP-verbindingen tot stand brengen, vergelijken ze de lokale MSS-waarde met de lokale MTU-waarde binnen de handdruk met drie richtingen; welke lager is wordt naar de externe peer verzonden. De twee peers gebruiken vervolgens de onderste van de twee uitgewisselde waarden. U kunt deze functie als volgt configureren:
Voor Cisco-routers gebruikt u de opdracht TCP-aanpassing op de interface waarop de VPN is beëindigd.
router (config)# interface type [slot_#/] port_# router (config-if)# ip tcp adjust-mss MSS_Size_in_bytes
MSS-wijziging op de ASA/PIX:
Gebruik de opdracht Systeemverbinding in de globale configuratiemodus om er zeker van te zijn dat de maximale TCP-segmentgrootte de door u ingestelde waarde niet overschrijdt en dat het maximum niet kleiner is dan een opgegeven grootte. Als u de standaardinstelling wilt herstellen, gebruikt u het formulier van deze opdracht. De standaard maximale waarde is 1380 bytes. De minimale optie is standaard uitgeschakeld (ingesteld op 0).
Zo wijzigt u de standaard maximale MSS-limiet:
security appliance (config)# sysopt connection tcp-mss MSS_size_in_bytes
Opmerking: als u de maximale grootte instelt op meer dan 1380, kunnen pakketten gefragmenteerd worden, afhankelijk van de MTU-grootte (standaard 1500). Grote aantallen fragmenten kunnen de prestaties van het security apparaat beïnvloeden wanneer het de Frag Guard-functie gebruikt. Als u de minimumgrootte instelt, voorkomt het dat de TCP-server veel kleine TCP-datapakketten naar de client kan verzenden en de prestaties van de server en het netwerk kan beïnvloeden.
Om de minimum MSS limiet te veranderen, doe dit:
security appliance (config)# sysopt connection tcp-mss minimum MSS_size_in_bytes
security applicatie (configuratie)# sysverbinding tcp-mss minimum MSS_size_in_bytes
Opmerking: Raadpleeg de MPF-configuratie om pakketten toe te staan die de MSS-sectie van het document PIX/ASA 7.X-probleem overschrijden: MSS overschreden - HTTP-clients kunnen niet naar bepaalde websites bladeren voor meer informatie om de overschreden MSS-pakketten met een andere methode toe te staan.
PMTUD kan problemen met fragmentatie oplossen.
Het belangrijkste probleem met TCP MSS is dat de beheerder moet weten welke waarde om op uw router te vormen om het voorkomen van fragmentatie te voorkomen. Dit kan een probleem zijn als er meer dan één pad bestaat tussen u en de externe VPN-locatie, of, wanneer u uw eerste query doet, vindt u dat de tweede of derde kleinere MTU, in plaats van de kleinste, is gebaseerd op het routeringsbesluit dat binnen uw eerste query wordt gebruikt. Met PMTUD kunt u een MTU-waarde bepalen voor IP-pakketten die fragmentatie voorkomen. Als ICMP-berichten worden geblokkeerd door een router, is het pad MTU gebroken en worden pakketten met de DF-bitset verwijderd. Gebruik de opdracht IP PDF instellen om de PDF-bit te verwijderen en het pakket te fragmenteren en te verzenden. Fragmentation kan de snelheid van pakket vertragen door:sturen op het netwerk, maar de toegangslijsten kunnen worden gebruikt om het aantal pakketten te beperken waarop het DF beetje wordt ontruimd.
Drie problemen kunnen ervoor zorgen dat PMTUD niet werkt:
Een intermediaire router kan het pakket laten vallen en niet met een ICMP- bericht antwoorden. Dit is niet erg gebruikelijk op internet, maar kan ook gewoon zijn in een netwerk waar routers zijn geconfigureerd om niet te reageren met onbereikbare ICMP-berichten.
Een intermediaire router kan met een ICMP onbereikbaar bericht antwoorden, maar op de terugkeerstroom, blokkeert een firewall dit bericht. Dit komt vaker voor.
Het ICMP-onbereikbare bericht keert terug naar de bron, maar de bron negeert het fragmentatiebericht. Dit is het meest ongebruikelijke van de drie kwesties.
Als u het eerste probleem ervaart, kunt u het PDF-bit in de IP-header wissen dat de bron daar geplaatst heeft of handmatig de TCP MSS-grootte aanpassen. Om het DF-bit te wissen, moet een intermediaire router de waarde van 1 naar 0 wijzigen. Normaal wordt dit gedaan door een router in uw netwerk voordat het pakket het netwerk verlaat. Dit is een eenvoudige codeconfiguratie die dit op een IOS-gebaseerde router doet:
Router (config) # access-list ACL_# permit tcp any any Router (config) # route-map route_map_name permit seq# Router (config-route-map) # match ip address ACL_# Router (config-route-map) # set ip df 0 Router (config-route-map) # exit Router (config) # interface type [slot#/]port # Router (config-if) # ip policy router-map route_map_name
PMTUD- en GRE-tunnels
Door gebrek, voert een router geen PMTUD op GRE tunnelpakketten uit die het zelf produceert. Gebruik deze configuratie om PMTUD op GRE-tunnelinterfaces in te schakelen en de router te laten deelnemen aan het MTU-afstemmingsproces voor bron-/doelapparaten voor verkeer dat door de tunnel rijdt:
Router (config) # interfacetunnel tunnel_#
Router (config-if) # tunnelpad-mtu-discovery
De opdracht tunnelpad-mtu-discovery maakt PMTUD mogelijk voor de GRE-tunnelinterface van een router. De optionele age-timer parameter geeft het aantal minuten aan waarna de tunnelinterface de maximale MTU-grootte terugstelt, min 24 bytes voor de GRE-header. Als u oneindig voor de timer opgeeft, wordt de timer niet gebruikt. De min-mtu parameter specificeert het minimumaantal bytes dat uit de MTU-waarde bestaat.
PIX/ASA 7.x - Clear Don't Fragment (DF) voor het verwerken van grote bestanden of pakketten.
U kunt nog steeds geen goede toegang tot het internet, grote bestanden of applicaties door de tunnel, omdat het deze MTU grootte-foutmelding geeft:
PMTU-D packet 1440 bytes greater than effective mtu 1434, dest_addr=10.70.25.1, src_addr=10.10.97.55, prot=TCP
Om dit op te lossen, moet u het DF-bit verwijderen van de buiteninterface van het apparaat. Configureer het PDF-bit beleid voor IPSec-pakketten met de opdracht crypto ipsec PDF-bit in algemene configuratiemodus.
pix(config)# crypto ipsec df-bit clear-df outside
Met de functie PDF-bit met IPSec-tunnels kunt u specificeren of het security apparaat de Don't Fragment (DF) bit van de ingesloten header kan wissen, instellen of kopiëren. Het DF-bit in de IP-header bepaalt of een apparaat een pakket mag fragmenteren.
Gebruik de opdracht crypto ipsec PDF-bit in de globale configuratiemodus om het security apparaat te configureren en het PDF-bit in een ingesloten header op te geven.
Wanneer u het IPSec-verkeer in de tunnelmodus inkapselt, gebruikt u de instelling clear-df voor het PDF-bit. Deze instelling laat het apparaat pakketten verzenden die groter zijn dan de beschikbare MTU-grootte. Ook deze instelling is geschikt als u de beschikbare MTU-grootte niet kent.
Opmerking: Als u nog steeds fragmentatie problemen en gedropte pakketten ervaart, naar keuze, kunt u de MTU-grootte handmatig aanpassen met de opdracht ip mtu-tunnelinterface. In dit geval, fragmenteert de router het pakket alvorens het het beschermt. Deze opdracht kan worden gebruikt in combinatie met PMTUD en/of TCP MSS.
Er is momenteel geen verificatieprocedure beschikbaar voor deze configuratie.
De Output Interpreter Tool (OIT) (alleen voor geregistreerde klanten) ondersteunt bepaalde opdrachten met show. Gebruik de OIT om een analyse te bekijken van de output van de opdracht show.
Veronderstel dat de IPSec-tunnel tussen de router en PIX tot stand is gebracht. Als u coderingsfoutmeldingen ziet dat pakketten worden gedropt, voert u de volgende stappen uit om het probleem op te lossen:
Voer een snuffelspoor van de client naar de server kant om erachter te komen welke de beste MTU is om te gebruiken.
U kunt ook de ping-test gebruiken:
ping -l 1400 192.168.1.1 -f
192.168.1.1 is het IP-adres van de afstandsbediening.
Blijf de waarde van 1400 met 20 verminderen tot er een antwoord is.
Opmerking: de magische waarde, die in de meeste gevallen werkt, is 1300.
Pas de segmentgrootte aan nadat de juiste maximale segmentgrootte is bereikt voor de gebruikte apparaten:
In de PIX-firewall:
sysopt connection tcpmss 1300
Op de router:
ip tcp adjust-mss 1300
Probleem:
U kunt pingen tussen de VPN-netwerken, maar Remote Desktop Protocol (RDP)- en Citrix-verbindingen kunnen niet via de tunnel tot stand worden gebracht.
Oplossing:
Het probleem kan de grootte MTU op PC achter PIX/ASA zijn. Stel de MTU-grootte in op 1300 voor de clientmachine en probeer de Citrix-verbinding via de VPN-tunnel tot stand te brengen.
Revisie | Publicatiedatum | Opmerkingen |
---|---|---|
1.0 |
19-Feb-2009 |
Eerste vrijgave |