Vraag NGINX SSL reageert niet via IPv6


Op een Debian-server met nginx krijg ik geen reactie van een webserver via HTTPS en IPv6. HTTP werkt prima.

  • netstat meldt poort 443 luistert op het IPv6-adres
  • firewall is open, ipv6scanner.com meldt poort 443 open
  • lokaal (over terminal) wget en curl ontvangen een correct antwoord, dus de nginx-configuratie is OK
  • geen teken van een fout van nginx error.log
  • geen record in access.log als het faalt, dus de communicatie bereikt waarschijnlijk niet de webserver
  • DNS is prima. Vertaling werkt en de verbinding werkt niet, zelfs als het IP-adres rechtstreeks wordt gebruikt

Elke poging om te verbinden van "buiten" (betekent buiten het netwerk, van het internet) mislukt (webbrowser, telnet, ipv6-test.com, krullen ...). Er is helemaal geen reactie.

Het kan worden getest op www.ekasparova.eu. Ik heb geen idee. Wat kan ik nog meer controleren?

Bewerk:

de uitvoer van traceroute6 --mtu www.google.com is als volgt:

traceroute to www.google.com (2a00:1450:4014:800::2004), 30 hops max, 65000 byte packets
1  * F=1500 * *
2  * * *
~
30  * * *

Dus het bereikt nooit het einde ...

edit2:

Mijn IP6tables-save output (lokale firewall):

# Generated by ip6tables-save v1.6.0 on Wed Oct 17 06:25:40 2018
*filter
:INPUT DROP [32:9320]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [0:0]
:ufw6-after-forward - [0:0]
:ufw6-after-input - [0:0]
:ufw6-after-logging-forward - [0:0]
:ufw6-after-logging-input - [0:0]
:ufw6-after-logging-output - [0:0]
:ufw6-after-output - [0:0]
:ufw6-before-forward - [0:0]
:ufw6-before-input - [0:0]
:ufw6-before-logging-forward - [0:0]
:ufw6-before-logging-input - [0:0]
:ufw6-before-logging-output - [0:0]
:ufw6-before-output - [0:0]
:ufw6-logging-allow - [0:0]
:ufw6-logging-deny - [0:0]
:ufw6-reject-forward - [0:0]
:ufw6-reject-input - [0:0]
:ufw6-reject-output - [0:0]
:ufw6-skip-to-policy-forward - [0:0]
:ufw6-skip-to-policy-input - [0:0]
:ufw6-skip-to-policy-output - [0:0]
:ufw6-track-forward - [0:0]
:ufw6-track-input - [0:0]
:ufw6-track-output - [0:0]
:ufw6-user-forward - [0:0]
:ufw6-user-input - [0:0]
:ufw6-user-limit - [0:0]
:ufw6-user-limit-accept - [0:0]
:ufw6-user-logging-forward - [0:0]
:ufw6-user-logging-input - [0:0]
:ufw6-user-logging-output - [0:0]
:ufw6-user-output - [0:0]
-A INPUT -j ufw6-before-logging-input
-A INPUT -j ufw6-before-input
-A INPUT -j ufw6-after-input
-A INPUT -j ufw6-after-logging-input
-A INPUT -j ufw6-reject-input
-A INPUT -j ufw6-track-input
-A INPUT -j LOG --log-prefix "[IPTABLES] " --log-tcp-options
-A INPUT -j LOG --log-prefix "[IPTABLES] " --log-tcp-options
-A FORWARD -j ufw6-before-logging-forward
-A FORWARD -j ufw6-before-forward
-A FORWARD -j ufw6-after-forward
-A FORWARD -j ufw6-after-logging-forward
-A FORWARD -j ufw6-reject-forward
-A FORWARD -j ufw6-track-forward
-A FORWARD -j LOG --log-prefix "[IPTABLES] " --log-tcp-options
-A FORWARD -j LOG --log-prefix "[IPTABLES] " --log-tcp-options
-A OUTPUT -j ufw6-before-logging-output
-A OUTPUT -j ufw6-before-output
-A OUTPUT -j ufw6-after-output
-A OUTPUT -j ufw6-after-logging-output
-A OUTPUT -j ufw6-reject-output
-A OUTPUT -j ufw6-track-output
-A ufw6-after-input -p udp -m udp --dport 137 -j ufw6-skip-to-policy-input
-A ufw6-after-input -p udp -m udp --dport 138 -j ufw6-skip-to-policy-input
-A ufw6-after-input -p tcp -m tcp --dport 139 -j ufw6-skip-to-policy-input
-A ufw6-after-input -p tcp -m tcp --dport 445 -j ufw6-skip-to-policy-input
-A ufw6-after-input -p udp -m udp --dport 546 -j ufw6-skip-to-policy-input
-A ufw6-after-input -p udp -m udp --dport 547 -j ufw6-skip-to-policy-input
-A ufw6-after-logging-forward -m limit --limit 3/min --limit-burst 10 -j LOG --log-prefix "[UFW BLOCK] "
-A ufw6-after-logging-input -m limit --limit 3/min --limit-burst 10 -j LOG --log-prefix "[UFW BLOCK] "
-A ufw6-before-forward -m rt --rt-type 0 -j DROP
-A ufw6-before-forward -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A ufw6-before-forward -p ipv6-icmp -m icmp6 --icmpv6-type 1 -j ACCEPT
-A ufw6-before-forward -p ipv6-icmp -m icmp6 --icmpv6-type 2 -j ACCEPT
-A ufw6-before-forward -p ipv6-icmp -m icmp6 --icmpv6-type 3 -j ACCEPT
-A ufw6-before-forward -p ipv6-icmp -m icmp6 --icmpv6-type 4 -j ACCEPT
-A ufw6-before-forward -p ipv6-icmp -m icmp6 --icmpv6-type 128 -j ACCEPT
-A ufw6-before-forward -p ipv6-icmp -m icmp6 --icmpv6-type 129 -j ACCEPT
-A ufw6-before-forward -j ufw6-user-forward
-A ufw6-before-input -i lo -j ACCEPT
-A ufw6-before-input -m rt --rt-type 0 -j DROP
-A ufw6-before-input -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A ufw6-before-input -m conntrack --ctstate INVALID -j ufw6-logging-deny
-A ufw6-before-input -m conntrack --ctstate INVALID -j DROP
-A ufw6-before-input -p ipv6-icmp -m icmp6 --icmpv6-type 1 -j ACCEPT
-A ufw6-before-input -p ipv6-icmp -m icmp6 --icmpv6-type 2 -j ACCEPT
-A ufw6-before-input -p ipv6-icmp -m icmp6 --icmpv6-type 3 -j ACCEPT
-A ufw6-before-input -p ipv6-icmp -m icmp6 --icmpv6-type 4 -j ACCEPT
-A ufw6-before-input -p ipv6-icmp -m icmp6 --icmpv6-type 128 -j ACCEPT
-A ufw6-before-input -p ipv6-icmp -m icmp6 --icmpv6-type 129 -j ACCEPT
-A ufw6-before-input -p ipv6-icmp -m icmp6 --icmpv6-type 133 -m hl --hl-eq 255 -j ACCEPT
-A ufw6-before-input -p ipv6-icmp -m icmp6 --icmpv6-type 134 -m hl --hl-eq 255 -j ACCEPT
-A ufw6-before-input -p ipv6-icmp -m icmp6 --icmpv6-type 135 -m hl --hl-eq 255 -j ACCEPT
-A ufw6-before-input -p ipv6-icmp -m icmp6 --icmpv6-type 136 -m hl --hl-eq 255 -j ACCEPT
-A ufw6-before-input -p ipv6-icmp -m icmp6 --icmpv6-type 141 -m hl --hl-eq 255 -j ACCEPT
-A ufw6-before-input -p ipv6-icmp -m icmp6 --icmpv6-type 142 -m hl --hl-eq 255 -j ACCEPT
-A ufw6-before-input -s fe80::/10 -p ipv6-icmp -m icmp6 --icmpv6-type 130 -j ACCEPT
-A ufw6-before-input -s fe80::/10 -p ipv6-icmp -m icmp6 --icmpv6-type 131 -j ACCEPT
-A ufw6-before-input -s fe80::/10 -p ipv6-icmp -m icmp6 --icmpv6-type 132 -j ACCEPT
-A ufw6-before-input -s fe80::/10 -p ipv6-icmp -m icmp6 --icmpv6-type 143 -j ACCEPT
-A ufw6-before-input -p ipv6-icmp -m icmp6 --icmpv6-type 148 -m hl --hl-eq 255 -j ACCEPT
-A ufw6-before-input -p ipv6-icmp -m icmp6 --icmpv6-type 149 -m hl --hl-eq 255 -j ACCEPT
-A ufw6-before-input -s fe80::/10 -p ipv6-icmp -m icmp6 --icmpv6-type 151 -m hl --hl-eq 1 -j ACCEPT
-A ufw6-before-input -s fe80::/10 -p ipv6-icmp -m icmp6 --icmpv6-type 152 -m hl --hl-eq 1 -j ACCEPT
-A ufw6-before-input -s fe80::/10 -p ipv6-icmp -m icmp6 --icmpv6-type 153 -m hl --hl-eq 1 -j ACCEPT
-A ufw6-before-input -p ipv6-icmp -m icmp6 --icmpv6-type 144 -j ACCEPT
-A ufw6-before-input -p ipv6-icmp -m icmp6 --icmpv6-type 145 -j ACCEPT
-A ufw6-before-input -p ipv6-icmp -m icmp6 --icmpv6-type 146 -j ACCEPT
-A ufw6-before-input -p ipv6-icmp -m icmp6 --icmpv6-type 147 -j ACCEPT
-A ufw6-before-input -s fe80::/10 -d fe80::/10 -p udp -m udp --sport 547 --dport 546 -j ACCEPT
-A ufw6-before-input -d ff02::fb/128 -p udp -m udp --dport 5353 -j ACCEPT
-A ufw6-before-input -d ff02::f/128 -p udp -m udp --dport 1900 -j ACCEPT
-A ufw6-before-input -j ufw6-user-input
-A ufw6-before-output -o lo -j ACCEPT
-A ufw6-before-output -m rt --rt-type 0 -j DROP
-A ufw6-before-output -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A ufw6-before-output -p ipv6-icmp -m icmp6 --icmpv6-type 1 -j ACCEPT
-A ufw6-before-output -p ipv6-icmp -m icmp6 --icmpv6-type 2 -j ACCEPT
-A ufw6-before-output -p ipv6-icmp -m icmp6 --icmpv6-type 3 -j ACCEPT
-A ufw6-before-output -p ipv6-icmp -m icmp6 --icmpv6-type 4 -j ACCEPT
-A ufw6-before-output -p ipv6-icmp -m icmp6 --icmpv6-type 128 -j ACCEPT
-A ufw6-before-output -p ipv6-icmp -m icmp6 --icmpv6-type 129 -j ACCEPT
-A ufw6-before-output -p ipv6-icmp -m icmp6 --icmpv6-type 133 -m hl --hl-eq 255 -j ACCEPT
-A ufw6-before-output -p ipv6-icmp -m icmp6 --icmpv6-type 136 -m hl --hl-eq 255 -j ACCEPT
-A ufw6-before-output -p ipv6-icmp -m icmp6 --icmpv6-type 135 -m hl --hl-eq 255 -j ACCEPT
-A ufw6-before-output -p ipv6-icmp -m icmp6 --icmpv6-type 134 -m hl --hl-eq 255 -j ACCEPT
-A ufw6-before-output -p ipv6-icmp -m icmp6 --icmpv6-type 141 -m hl --hl-eq 255 -j ACCEPT
-A ufw6-before-output -p ipv6-icmp -m icmp6 --icmpv6-type 142 -m hl --hl-eq 255 -j ACCEPT
-A ufw6-before-output -s fe80::/10 -p ipv6-icmp -m icmp6 --icmpv6-type 130 -j ACCEPT
-A ufw6-before-output -s fe80::/10 -p ipv6-icmp -m icmp6 --icmpv6-type 131 -j ACCEPT
-A ufw6-before-output -s fe80::/10 -p ipv6-icmp -m icmp6 --icmpv6-type 132 -j ACCEPT
-A ufw6-before-output -s fe80::/10 -p ipv6-icmp -m icmp6 --icmpv6-type 143 -j ACCEPT
-A ufw6-before-output -p ipv6-icmp -m icmp6 --icmpv6-type 148 -m hl --hl-eq 255 -j ACCEPT
-A ufw6-before-output -p ipv6-icmp -m icmp6 --icmpv6-type 149 -m hl --hl-eq 255 -j ACCEPT
-A ufw6-before-output -s fe80::/10 -p ipv6-icmp -m icmp6 --icmpv6-type 151 -m hl --hl-eq 1 -j ACCEPT
-A ufw6-before-output -s fe80::/10 -p ipv6-icmp -m icmp6 --icmpv6-type 152 -m hl --hl-eq 1 -j ACCEPT
-A ufw6-before-output -s fe80::/10 -p ipv6-icmp -m icmp6 --icmpv6-type 153 -m hl --hl-eq 1 -j ACCEPT
-A ufw6-before-output -j ufw6-user-output
-A ufw6-logging-allow -m limit --limit 3/min --limit-burst 10 -j LOG --log-prefix "[UFW ALLOW] "
-A ufw6-logging-deny -m conntrack --ctstate INVALID -m limit --limit 3/min --limit-burst 10 -j RETURN
-A ufw6-logging-deny -m limit --limit 3/min --limit-burst 10 -j LOG --log-prefix "[UFW BLOCK] "
-A ufw6-skip-to-policy-forward -j DROP
-A ufw6-skip-to-policy-input -j DROP
-A ufw6-skip-to-policy-output -j ACCEPT
-A ufw6-track-output -p tcp -m conntrack --ctstate NEW -j ACCEPT
-A ufw6-track-output -p udp -m conntrack --ctstate NEW -j ACCEPT
-A ufw6-user-input -p tcp -m tcp --dport 20 -j ACCEPT
-A ufw6-user-input -p tcp -m tcp --dport 21 -j ACCEPT
-A ufw6-user-input -p tcp -m tcp --dport 25 -j ACCEPT
-A ufw6-user-input -p tcp -m tcp --dport 53 -j ACCEPT
-A ufw6-user-input -p tcp -m tcp --dport 80 -j ACCEPT
-A ufw6-user-input -p tcp -m tcp --dport 110 -j ACCEPT
-A ufw6-user-input -p tcp -m tcp --dport 143 -j ACCEPT
-A ufw6-user-input -p tcp -m tcp --dport 587 -j ACCEPT
-A ufw6-user-input -p tcp -m tcp --dport 993 -j ACCEPT
-A ufw6-user-input -p tcp -m tcp --dport 995 -j ACCEPT
-A ufw6-user-input -p tcp -m tcp --dport 8080 -j ACCEPT
-A ufw6-user-input -p tcp -m tcp --dport 8081 -j ACCEPT
-A ufw6-user-input -p tcp -m tcp --dport 10000 -j ACCEPT
-A ufw6-user-input -p udp -m udp --dport 53 -j ACCEPT
-A ufw6-user-input -p tcp -m multiport --dports 29799:29899 -j ACCEPT
-A ufw6-user-input -p udp -m udp --dport 25 -j ACCEPT
-A ufw6-user-input -p tcp -m tcp --dport 8082 -j ACCEPT
-A ufw6-user-limit -m limit --limit 3/min -j LOG --log-prefix "[UFW LIMIT BLOCK] "
-A ufw6-user-limit -j REJECT --reject-with icmp6-port-unreachable
-A ufw6-user-limit-accept -j ACCEPT
COMMIT
# Completed on Wed Oct 17 06:25:40 2018

Edit3:

Dankzij de hulp van iedereen kon ik de datacenter-operator overtuigen dat het probleem in hun infrastructuur zit. Het probleem was echt in de MTU-instelling op een virtuele router op het pad naar internet.


8
2017-10-16 18:45


oorsprong


Outside = Buiten het netwerk op een afzonderlijk LAN-segment of vanaf een computer die op hetzelfde LAN-segment zit? - IceMage
@IceMage Outside betekent van internet. Buiten het netwerk. Ik ga de vraag bewerken om te verduidelijken - j.kaspar
Hebt u een firewall op de server geconfigureerd? Als de server Linux gebruikt, dan is de uitvoer van ip6table-save relevant zou zijn. - kasperd
@kasperd Ik heb alle icmp-gerelateerde regels aan de vraag toegevoegd - j.kaspar
@ j.kaspar Het is de uitvoer van ip6tables-save Ik wilde zien. Dat commando zal de volledige regels uitvoeren. - kasperd


antwoorden:


U hebt een MTU-probleem.

ik testte wget -O /dev/null https://www.ekasparova.eu terwijl we het verkeer observeren tcpdump. Dit is wat ik zag:

19:56:57.048361 IP6 2001:db8::1.47386 > 2a04:f310:100:3:f816:3eff:fea3:4553.443: Flags [S], seq 262121609, win 28800, options [mss 1440,sackOK,TS val 298423713 ecr 0,nop,wscale 7], length 0
19:56:57.087457 IP6 2a04:f310:100:3:f816:3eff:fea3:4553.443 > 2001:db8::1.47386: Flags [S.], seq 2396216876, ack 262121610, win 28560, options [mss 1440,sackOK,TS val 82836580 ecr 298423713,nop,wscale 7], length 0
19:56:57.087490 IP6 2001:db8::1.47386 > 2a04:f310:100:3:f816:3eff:fea3:4553.443: Flags [.], ack 1, win 225, options [nop,nop,TS val 298423723 ecr 82836580], length 0
19:56:57.087692 IP6 2001:db8::1.47386 > 2a04:f310:100:3:f816:3eff:fea3:4553.443: Flags [P.], seq 1:322, ack 1, win 225, options [nop,nop,TS val 298423723 ecr 82836580], length 321
19:56:57.126190 IP6 2a04:f310:100:3:f816:3eff:fea3:4553.443 > 2001:db8::1.47386: Flags [.], ack 322, win 232, options [nop,nop,TS val 82836590 ecr 298423723], length 0
19:56:57.141224 IP6 2a04:f310:100:3:f816:3eff:fea3:4553.443 > 2001:db8::1.47386: Flags [P.], seq 2857:3678, ack 322, win 232, options [nop,nop,TS val 82836594 ecr 298423723], length 821
19:56:57.141301 IP6 2001:db8::1.47386 > 2a04:f310:100:3:f816:3eff:fea3:4553.443: Flags [.], ack 1, win 248, options [nop,nop,TS val 298423736 ecr 82836590,nop,nop,sack 1 {2857:3678}], length 0

De eerste 3 pakketten is de handdruk. Beide uiteinden kondigen aan mss 1440 wat betekent dat ze in staat zijn om pakketten te ontvangen met 1440 bytes aan TCP-payload, tellende headers en in totaal tot 1500 bytes IP-verkeer, wat Ethernet doorgaans ondersteunt.

De volgende 2 pakketten zijn client hallo en bevestiging dat deze door de server is ontvangen.

De laatste 2 pakketten is waar dingen interessant worden. Standaard tcpdump toont relatieve volgnummers, die in dit geval de vastlegging gemakkelijker leesbaar maken. In het pakket van de server is dit het interessante deel seq 2857:3678. We zien een sprong van 1 naar 2857 wat betekent dat er een gat is van 2856 bytes dat de klant nog niet heeft ontvangen. 2856 bytes komt overeen met twee pakketten van 1428 bytes. Het verschil tussen 1440 en 1428 is de grootte van een tijdstempeloptie.

Dus de server stuurde de server hallo verdeeld over 3 pakketten. Maar de eerste twee waren te groot voor het netwerk en werden niet bij de klant afgeleverd.

In het laatste pakket van client naar server zien we dit sack 1 {2857:3678}. Dit is een selectieve bevestiging verzonden door de klant die de server informeert dat er een gat zit in de gegevens die het tot nu toe heeft ontvangen.

Waarschijnlijk blijft de server de twee verloren pakketten steeds opnieuw verzenden. Maar het maakt niet uit hoe vaak dezelfde twee pakketten opnieuw worden verzonden, ze blijven te groot voor het netwerk. En waarschijnlijk stuurt een router op het pad een foutmelding naar de server met de melding dat de pakketten te groot zijn en opnieuw moeten worden verzonden in kleinere pakketten.

Als de server die foutmeldingen heeft ontvangen, worden de pakketten zo nodig opnieuw verzonden. En het zou de kleinere PMTU onthouden zodat het bij volgende aanvragen niet nodig is om deze ontdekkingsstap te herhalen.

Een mogelijke verklaring voor dit alles is dat je een verkeerd geconfigureerde firewall hebt die alle foutmeldingen verwijdert die je server informeren dat het nodig is om de gegevens opnieuw in kleinere pakketten te verzenden.


17
2017-10-16 19:05



Interessant. Dank je! Die foutmeldingen - ik vermoed dat het ICMP-protocol is ... Is er een manier om het te testen? De firewall op de server en de firewall tussen de server en internet moeten openstaan ​​voor alle ICMP-communicatie. - j.kaspar
@ j.kaspar Wat zijn de firewalls? Hoe zijn ze geconfigureerd? Hoe heb je ze getest? - Michael Hampton♦
@MichaelHampton Er is een firewall van iptables direct op de server geïnstalleerd. De tweede behoort tot het datacenter en ik kan de regels ervan beheren. Ik weet niet echt hoe ik de ICMP moet testen. Maar de regels voor beide zijn overal ingesteld <-> waar dan ook toegestaan ​​voor ICMP - j.kaspar
@ j.kaspar Probeer het op een Linux-server traceroute6 --mtu www.google.com en zoek naar F=#### ingevoegd in de uitvoerlijnen, of uitvoerlijnen waar helemaal geen reactie terugkomt. Bij nader inzien, voer het gewoon uit en bewerk uw vraag met de uitvoer. - Michael Hampton♦
@MichaelHampton gedaan. Ik weet echter niet zeker hoe het resultaat moet worden geïnterpreteerd. Betekent dit dat de communicatie de tweede hop helemaal niet doorgeeft? - j.kaspar


Ik ben het met @kasperd eens dat het een MTU-probleem is. Bijvoorbeeld standaard wget -6 -O/dev/null http://www.ekasparova.eu zou niet werken (het zou een korte omleiding krijgen naar https://www.babysoul.cz/ op hetzelfde IP, maar dan zou het volgende grotere pakket blijven hangen). Toen forceerde ik MSS voor je host:

ip -6 ro add 2a04:f310:100:3:f816:3eff:fea3:4553 advmss 1000 via $MY_GW

en daarna wget werkt normaal. Het is dus MTU-probleem.  Output van vergelijken mtr -6 -n --psize 1410 www.ekasparova.eu (die werkt) met mtr -6 -n --psize 1411 www.ekasparova.eu zou aangeven dat het probleem bij je gastheer is 2a04:f310:100:3:f816:3eff:fea3:4553 of het is stroomopwaarts bij 2a04:f310:100::125

Wat je zou kunnen doen als een tijdelijke oplossing (afgezien van contact met je upstream):

Test met welke pakketgrootte het breekt (d.w.z. wget -6 -O/dev/null http://v6.testmyipv6.com/MTUtest/1500.dat werkt waarschijnlijk niet voor u terwijl het zou moeten, maar wget -6 -O/dev/null http://v6.testmyipv6.com/MTUtest/1000.dat werkt prima) en vervolgens:

  • (erger) klem uw MSS vast voor standaard IPv6-route (zoals ik hierboven deed). Merk op dat dit alleen voor TCP zal werken; UDP-DNS-pakketten zullen bijvoorbeeld nog steeds worden verbroken, of
  • (beter) reduceer je interface MTU (bijvoorbeeld ifconfig eth0 mtu 1200). Dit zou voor alle pakketten moeten werken. Probleem is dat als iets onderweg nog een lagere MTU heeft, u niet met hen kunt communiceren. En het verlagen van MTU zal resulteren in iets lagere prestaties (niet zo erg, tenzij je meestal een grote site bent)
  • (beste) probeer als het verwijderen van de IPv6-firewall (die van jou en bij je upsteam) helpt; en wanneer je erachter komt dat dit het geval is, probeer het stap voor stap weer samen te stellen zonder de ontdekking van PMTU te onderbreken, totdat je een probleemlijn vindt. Probleem is dat er meer werk en samenwerking van uw ISP vereist is (en het openen van een firewall maakt u mogelijk kwetsbaar voor de tijd).

1
2017-10-17 09:23



Het reduceren van MSS op de standaardroute is geen slechte suggestie. Het is iets dat ik in productieomgevingen heb gedaan om MTU-problemen in andermans netwerken te omzeilen. Ik ga echter niet zo laag als 1000. 1220 is klein genoeg om het volledige pakket binnen de 1280 bytes te houden, wat IPv6 garandeert om end-to-end te werken. Het probleem in kwestie zou echter niet zijn verzacht door het verminderen van MSS op de standaardroute omdat het alleen pakketgrootten in één richting beïnvloedt. - kasperd
Men kan de MSS op doorgang vermalen (zou mogelijk moeten zijn ip6tables). Dat wordt u niet verondersteld, maar het blijkt dat het vastzetten van de MSS op doorreis tot maximaal 1220 een zeer efficiënte oplossing is voor MTU-problemen. En het kan worden gedaan op elk eindpunt of een tussenliggende router, en het zal de MTU-problemen voor TCP in beide richtingen verminderen. - kasperd
Het verlagen van de MTU op een eindpunt heeft invloed op de uitgaande MSS en het beperkt ook de pakketten die u verzendt, zelfs als u een hogere MSS hebt ontvangen. Dus een lagere MTU op een eindpunt kan de MTU-problemen voor TCP in beide richtingen verminderen. Het helpt echter alleen voor UDP in één richting. En het verminderen van de MTU op routers ertussen kan het MTU-probleem verminderen of nieuwe MTU-problemen introduceren, afhankelijk van de omstandigheden. Dus het verminderen van MSS is de enige beperking die kan helpen zonder mogelijk nieuwe MTU-problemen te introduceren. - kasperd
@kasperd mag de MSS aan één kant niet verlagen voor verkeer dat in beide richtingen stroomt, omdat er onderhandeld wordt (als een lagere MSS) voor hele TCP-sessie tijdens 3way-handshake? Wat betreft het verlagen van MTU en het verbreken van binnenkomende UDP's, terwijl het waar is, zal het het probleem niet oplossen, het zou geen extra problemen moeten veroorzaken, omdat die te grote UDP's toch niet zouden werken (omdat zijn stroomafwaartse stroom toch zou verdwijnen) . - Matija Nalis
Nee. MSS wordt onafhankelijk onderhandeld voor de twee richtingen. Elke partij kent het maximum dat ze bereid zijn te verzenden en vertelt het andere uiteinde het maximum dat ze bereid zijn te ontvangen. Wanneer je instelt advmss je hebt alleen invloed op de grootte van de segmenten die je ontvangt, niet de segmenten die je gaat verzenden. Het maximum dat je bereid bent te verzenden, wordt niet gecommuniceerd - omdat dat niet nodig is. Beide ontlenen hun standaardwaarde aan de MTU, een van de twee kan worden overschreven advmss. Ik weet niet hoe een routing-item de andere kan overschrijven, maar als er een manier is, zou ik het leuk vinden om te leren. - kasperd