O NGINX SSL não responde pelo IPv6

10

Em um servidor Debian com nginx, não recebo resposta de um servidor web por HTTPS e IPv6. HTTP funciona bem.

  • O netstat reporta a porta 443 escutando o endereço IPv6
  • o firewall está aberto, o ipv6scanner.com reporta a porta 443 aberta
  • localmente (através do terminal), o wget e o curl recebem uma resposta correta; portanto, a configuração do nginx está OK
  • nenhum sinal de erro do nginx error.log
  • não há registro no access.log quando falha, portanto a comunicação provavelmente não está alcançando o servidor da web
  • DNS está bom. A tradução funciona e a conexão não funciona mesmo quando o endereço IP é acessado diretamente

Todas as tentativas de conexão de "fora" (significando fora da rede, da internet) falham (navegador da web, telnet, ipv6-test.com, curvatura ...). Não há resposta alguma.

Pode ser testado em www.ekasparova.eu. Eu não tenho noção. O que mais posso verificar?

editar:

a saída de traceroute6 --mtu www.google.comé a seguinte:

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

Por isso, nunca chega ao fim ...

edit2:

Minha saída ip6tables-save (firewall local):

# 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:

Graças à ajuda de todos, consegui convencer o operador do datacenter de que o problema está em sua infraestrutura. O problema realmente estava na configuração da MTU em um roteador virtual no caminho para a Internet.

j.kaspar
fonte
Fora = Fora da rede em um segmento de LAN separado ou de um computador sentado no mesmo segmento de LAN?
IceMage 16/10
1
@IceMage Outside significa da internet. Fora da rede. Vou editar a questão de esclarecer
j.kaspar
Você configurou um firewall no servidor? Se o servidor estiver executando o Linux, a saída de ip6table-saveseria relevante.
kasperd
@kasperd eu adicionei todas as regras relacionadas com o ICMP para a pergunta
j.kaspar
@ j.kaspar É a saída que ip6tables-saveeu queria ver. Esse comando produzirá as regras completas.
kasperd

Respostas:

19

Você tem um problema no MTU.

Eu testei wget -O /dev/null https://www.ekasparova.euenquanto observava o tráfego com tcpdump. Isto é o que eu vi:

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

Os três primeiros pacotes são o aperto de mão. Ambas as extremidades anunciam o mss 1440que significa que são capazes de receber pacotes com 1440 bytes de carga útil TCP, contando os cabeçalhos e totalizando 1500 bytes de tráfego IP, o que a Ethernet geralmente suporta.

Os próximos 2 pacotes são o cliente hello e a confirmação de que foi recebido pelo servidor.

Os 2 pacotes finais são onde as coisas ficam interessantes. Por padrão, tcpdumpmostra números de sequência relativos, que nesse caso facilitam a leitura da captura. No pacote do servidor, essa é a parte interessante seq 2857:3678. Vimos um salto 1para o 2857qual significa que há uma lacuna de 2856 bytes que o cliente ainda não recebeu. 2856 bytes corresponde a dois pacotes de 1428 bytes. A diferença entre 1440 e 1428 é o tamanho de uma opção de carimbo de data / hora.

Portanto, o servidor enviou um alô para o servidor, dividido em três pacotes. Mas os dois primeiros eram grandes demais para a rede e não foram entregues ao cliente.

No pacote final do cliente para o servidor, vemos isso sack 1 {2857:3678}. Este é um reconhecimento seletivo enviado pelo cliente, informando ao servidor que há uma lacuna nos dados que ele recebeu até agora.

É provável que o servidor continue enviando os dois pacotes perdidos repetidamente. Mas, não importa quantas vezes retransmita os mesmos dois pacotes, eles permanecem grandes demais para a rede. E provavelmente um roteador no caminho envia uma mensagem de erro de volta ao servidor informando que os pacotes são muito grandes e precisam ser retransmitidos em pacotes menores.

Se o servidor recebesse essas mensagens de erro, ele retransmitiria os pacotes menores, conforme necessário. E lembraria do PMTU menor, de modo que, em solicitações subsequentes, não será necessário repetir esta etapa de descoberta.

Uma possível explicação para tudo isso é que você possui um firewall mal configurado que elimina todas as mensagens de erro informando ao servidor que ele precisa retransmitir os dados em pacotes menores.

Kasperd
fonte
1
Interessante. Obrigado! Essas mensagens de erro - acho que é o protocolo ICMP ... Existe uma maneira de testá-lo? O firewall no servidor e o firewall entre o servidor e a Internet devem estar abertos para toda a comunicação ICMP.
j.kaspar
@ j.kaspar Quais são os firewalls? Como eles estão configurados? Como você os testou?
Michael Hampton
@MichaelHampton existe um firewall do iptables instalado diretamente no servidor. O segundo pertence ao datacenter e eu posso gerenciar suas regras. Realmente não sei como testar o ICMP. Mas as regras em ambos estão definidas para qualquer lugar <-> qualquer lugar permitido para ICMP
j.kaspar
1
@ j.kaspar Em um servidor Linux, tente traceroute6 --mtu www.google.comprocurar F=####inseridos nas linhas de saída ou nas linhas de saída em que nenhuma resposta retorne. Pensando bem, basta executá-lo e editar sua pergunta com a saída.
Michael Hampton
@MichaelHampton Done. No entanto, não tenho certeza de como interpretar o resultado. Isso significa que a comunicação não passa no segundo salto?
j.kaspar
1

Concordo com @kasperd que é um problema de MTU. Por exemplo, por padrão wget -6 -O/dev/null http://www.ekasparova.eu, não funcionaria (seria redirecionado rapidamente para o https://www.babysoul.cz/mesmo IP, mas continuaria no próximo pacote maior). Então forcei o MSS reduzido para o seu host:

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

e depois disso wgetfunciona normalmente. Então, é problema de MTU. Comparar a saída de mtr -6 -n --psize 1410 www.ekasparova.eu(que funciona) com mtr -6 -n --psize 1411 www.ekasparova.euindica que o problema está no seu host 2a04:f310:100:3:f816:3eff:fea3:4553ou no upstream em2a04:f310:100::125

O que você poderia fazer como solução alternativa (além de entrar em contato com o upstream):

Teste em qual tamanho de pacote ele quebra (ou seja, wget -6 -O/dev/null http://v6.testmyipv6.com/MTUtest/1500.datprovavelmente não funcionará para você enquanto deveria, mas wget -6 -O/dev/null http://v6.testmyipv6.com/MTUtest/1000.datfuncionará bem) e, em seguida:

  • (pior) prenda seu MSS para a rota IPv6 padrão (como fiz acima). Observe que isso funcionará apenas para TCP; por exemplo, pacotes DNS UDP ainda estarão quebrados ou
  • (melhor) reduza sua interface MTU (por exemplo ifconfig eth0 mtu 1200). Isso deve funcionar para todos os pacotes. O problema é que, se algo no caminho tiver MTU ainda mais baixo, você não poderá se comunicar com eles. A redução do MTU resultará em um desempenho um pouco menor (não muito importante, a menos que você seja um site grande normalmente)
  • (melhor) tente se a remoção do firewall IPv6 (seu e no seu upsteam) ajuda; e quando descobrir, tente reuni-lo passo a passo sem interromper a descoberta do PMTU, até encontrar uma linha problemática. O problema é que isso requer mais trabalho e cooperação do seu ISP (e a abertura do firewall pode torná-lo vulnerável por algum tempo).
Matija Nalis
fonte
Reduzir o MSS na rota padrão não é uma má sugestão. É algo que venho fazendo em ambientes de produção para solucionar problemas de MTU nas redes de outras pessoas. Eu não vou tão baixo quanto 1000 embora. 1220 é pequeno o suficiente para manter o pacote completo dentro dos 1280 bytes que o IPv6 garante para trabalhar de ponta a ponta. No entanto, o problema em questão não teria sido atenuado pela redução do MSS na rota padrão, pois afeta apenas o tamanho dos pacotes em uma direção.
kasperd
Pode-se alterar o MSS em trânsito (deve ser possível fazê-lo ip6tables). Você não deve fazer isso, mas acontece que prender o MSS em trânsito a um máximo de 1220 é uma solução muito eficiente para problemas de MTU. E isso pode ser feito no ponto de extremidade ou em qualquer roteador intermediário, e atenuará os problemas de MTU do TCP nas duas direções.
kasperd
A redução do MTU em um nó de extremidade influenciará o MSS de saída e também limitará os pacotes enviados, mesmo que você tenha recebido um MSS mais alto. Portanto, uma MTU mais baixa em um nó de extremidade pode atenuar os problemas de MTU para TCP nas duas direções. No entanto, apenas ajuda para o UDP em uma direção. E reduzir o MTU nos roteadores entre eles pode atenuar o problema do MTU ou introduzir novos problemas, dependendo das circunstâncias. Portanto, reduzir o MSS é a única mitigação que pode ajudar sem a introdução potencial de novos problemas no MTU.
kasperd
O @kasperd não deve reduzir o MSS de um lado para o tráfego que flui nos dois sentidos, pois é negociado (como um MSS inferior) para toda a sessão TCP durante o handshake de 3 vias? Quanto à redução do MTU e à quebra dos UDPs de entrada, embora seja verdade que isso não resolverá o problema, ele não deve criar problemas adicionais, pois esses UDPs grandes demais não funcionariam de qualquer maneira (como o upstream interrompido os descartaria) .
Matija Nalis 17/10/1918
1
Não. O MSS é negociado independentemente para as duas direções. Cada lado sabe o máximo que está disposto a enviar e diz ao outro lado o máximo que está disposto a receber. Quando você define, advmssvocê influencia apenas o tamanho dos segmentos que você receberá, e não os segmentos que você enviará. O máximo que você deseja enviar não é comunicado - porque não há necessidade disso. Ambos derivam seu valor padrão do MTU, um dos dois pode ser substituído advmss. Não sei como uma entrada de roteamento substituirá a outra, mas se houver, gostaria de aprender.
kasperd