NGINX SSL이 IPv6을 통해 응답하지 않습니다


10

nginx가 설치된 데비안 서버에서 HTTPS 및 IPv6을 통해 웹 서버에서 응답이 없습니다. HTTP는 잘 작동합니다.

  • netstat, IPv4 주소에서 포트 443 수신 대기
  • 방화벽이 열려 있고 ipv6scanner.com이 포트 443을보고 함
  • 로컬 (터미널을 통해) wget 및 curl이 올바른 응답을 수신하므로 nginx 구성이 정상입니다.
  • nginx error.log에서 오류의 흔적이 없습니다.
  • 액세스 실패시 access.log에 레코드가 없으므로 통신이 웹 서버에 도달하지 않았을 수 있습니다.
  • DNS는 괜찮습니다. IP 주소에 직접 액세스 한 경우에도 번역이 작동하고 연결이 작동하지 않습니다

"외부"(네트워크 외부, 인터넷)를 통한 모든 연결 시도는 실패합니다 (웹 브라우저, 텔넷, ipv6-test.com, curl ...). 전혀 응답이 없습니다.

www.ekasparova.eu에서 테스트 할 수 있습니다. 나는 단서가 없다. 다른 무엇을 확인할 수 있습니까?

편집하다:

출력은 traceroute6 --mtu www.google.com다음과 같습니다.

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

그래서 결코 끝나지 않습니다 ...

edit2 :

내 ip6tables-save 출력 (로컬 방화벽) :

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

모든 사람의 도움 덕분에 데이터 센터 운영자에게 문제가 인프라에 있음을 확신시킬 수있었습니다. 문제는 실제로 인터넷 경로의 가상 라우터에서 MTU 설정에있었습니다.


외부 = 별도의 LAN 세그먼트 또는 동일한 LAN 세그먼트에있는 컴퓨터에서 네트워크 외부?
— IceMage

1
@IceMage Outside는 인터넷을 의미합니다. 네트워크 외부. 명확하게하기 위해 질문을 편집하겠습니다
— j.kaspar

서버에서 방화벽을 구성 했습니까? 서버가 Linux를 실행중인 경우 출력 ip6table-save이 관련됩니다.
— kasperd

@kasperd 나는 모든 ICMP 관련 규칙을 질문에 추가했습니다
— j.kaspar

@ j.kaspar ip6tables-save보고 싶었던 결과입니다 . 이 명령은 완전한 규칙을 출력합니다.
— kasperd

답변:


19

MTU 문제가 있습니다.

로 wget -O /dev/null https://www.ekasparova.eu트래픽을 관찰하면서 테스트 했습니다 tcpdump. 이것이 내가 본 것입니다 :

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

처음 3 개의 패킷은 핸드 셰이크입니다. 양쪽 끝은 mss 14401440 바이트의 TCP 페이로드로 패킷을 수신 할 수 있으며 헤더를 계산하며 총 1500 바이트의 IP 트래픽까지 계산합니다. 이는 이더넷이 일반적으로 지원하는 것입니다.

다음 2 개의 패킷은 클라이언트 hello이며 서버에서 수신 한 승인입니다.

마지막 2 개의 패킷은 흥미로운 것들입니다. 기본적 tcpdump으로 상대 시퀀스 번호가 표시되며이 경우 캡처를보다 쉽게 ​​읽을 수 있습니다. 서버의 패킷에서 이것은 흥미로운 부분 seq 2857:3678입니다. 우리는에서 점프를 참조 1하는 2857클라이언트가 아직받지 않은 2856 바이트의 간격이 어떤 의미합니다. 2856 바이트는 1428 바이트의 두 패킷에 해당합니다. 1440과 1428의 차이점은 타임 스탬프 옵션의 크기입니다.

따라서 서버는 서버 hello를 3 개의 패킷으로 분할하여 보냈습니다. 그러나 처음 두 가지는 네트워크에 비해 너무 커서 클라이언트에게 전달되지 않았습니다.

클라이언트에서 서버로의 마지막 패킷에서 우리는 이것을 볼 수 sack 1 {2857:3678}있습니다. 이것은 지금까지 수신 한 데이터에 차이가 있음을 서버에 알리기 위해 클라이언트가 보낸 선택적 승인입니다.

서버가 두 개의 손실 된 패킷을 계속해서 계속 전송하는 것 같습니다. 그러나 동일한 두 패킷을 몇 번이나 재전송하더라도 네트워크에 비해 너무 큽니다. 그리고 경로상의 라우터가 서버에 오류 메시지를 보내서 패킷이 너무 커서 더 작은 패킷으로 재전송해야한다는 것을 알려줍니다.

서버가 이러한 오류 메시지를 수신하면 필요에 따라 더 작은 패킷을 재전송합니다. 그리고 후속 요청에서이 발견 단계를 반복 할 필요가없는 더 작은 PMTU를 기억합니다.

이 모든 것에 대한 가능한 설명은 서버가 더 작은 패킷으로 데이터를 재전송해야한다는 것을 알려주는 모든 오류 메시지를 삭제하는 방화벽이 잘못 구성되어 있다는 것입니다.


1
흥미 롭군 감사합니다! 이러한 오류 메시지-ICMP 프로토콜 인 것 같습니다. 테스트 방법이 있습니까? 모든 ICMP 통신을 위해서는 서버의 방화벽과 서버와 인터넷 사이의 방화벽이 열려 있어야합니다.
— j.kaspar

@ j.kaspar 방화벽은 무엇입니까? 그것들은 어떻게 구성됩니까? 어떻게 테스트 했습니까?
— Michael Hampton

@MichaelHampton 서버에 직접 iptables 방화벽이 설치되어 있습니다. 두 번째는 데이터 센터에 속하며 규칙을 관리 할 수 ​​있습니다. 나는 ICMP를 테스트하는 방법을 정말로 모른다. 그러나 둘 다에 대한 규칙은 ICMP에 허용되는 어디에서나 <-> 어딘가로 설정됩니다
— j.kaspar

1
@ j.kaspar Linux 서버 에서 출력 라인 또는 응답이 전혀없는 출력 라인 traceroute6 --mtu www.google.com에 F=####삽입되어 있는지 확인하십시오. 두 번째 생각에, 그것을 실행하고 출력으로 질문을 편집하십시오.
— Michael Hampton

@MichaelHampton 님. 그러나 결과를 해석하는 방법을 잘 모르겠습니다. 통신이 두 번째 홉을 전혀 통과하지 못한다는 것을 의미합니까?
— j.kaspar

1

@kasperd가 MTU 문제라는 데 동의합니다. 예를 들어, 기본적으로 wget -6 -O/dev/null http://www.ekasparova.eu작동하지 않습니다 ( https://www.babysoul.cz/동일한 IP로 짧은 경로 재 지정 되지만 다음 큰 패킷에서는 중단됨). 그런 다음 호스트의 MSS를 강제로 줄였습니다.

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

그 후 wget정상적으로 작동합니다. 따라서 MTU 문제입니다. mtr -6 -n --psize 1410 www.ekasparova.eu(작동하는) 출력을 비교하면 mtr -6 -n --psize 1411 www.ekasparova.eu문제가 호스트 2a04:f310:100:3:f816:3eff:fea3:4553또는 업스트림에 있음을 나타냅니다. 2a04:f310:100::125

해결 방법으로 수행 할 수있는 작업 (업스트림에 문의하는 것 제외) :

어떤 패킷 크기가 깨지는 지 테스트하십시오 (예 : wget -6 -O/dev/null http://v6.testmyipv6.com/MTUtest/1500.dat작동하지 않지만 제대로 작동 할 wget -6 -O/dev/null http://v6.testmyipv6.com/MTUtest/1000.dat것임).

  • (나쁘게) 기본 IPv6 경로에 대해 MSS를 고정하십시오 (위와 같이). TCP에서만 작동합니다. 예를 들어 UDP DNS 패킷이 여전히 손상되었거나
  • (더 나은) 인터페이스 MTU를 줄이십시오 (예 :) ifconfig eth0 mtu 1200. 모든 패킷에서 작동합니다. 문제는 도중에 MTU가 더 낮아지면 그들과 통신 할 수 없다는 것입니다. MTU를 낮추면 성능이 다소 저하됩니다 (일반적으로 큰 사이트가 아닌 한 큰 문제는 아닙니다)
  • (최상의) IPv6 방화벽을 제거하는 것이 도움이되는지 시도하십시오. 그리고 문제가 발견되면 문제가있는 회선을 찾을 때까지 PMTU 검색을 중단하지 않고 단계별로 다시 연결하십시오. 문제는 ISP로부터 더 많은 작업과 협력이 필요하다는 것입니다 (방화벽을 열면 당분간 취약해질 수 있습니다).

기본 경로에서 MSS를 줄이는 것은 나쁜 제안이 아닙니다. 다른 사람들의 네트워크에서 MTU 문제를 해결하기 위해 프로덕션 환경에서 내가 한 일입니다. 그래도 1000만큼 낮아지지는 않습니다. 1220은 IPv6이 종단 간 작동을 보장하는 1280 바이트 내에 전체 패킷을 보관할 수있을 정도로 작습니다. 그러나 기본 경로에서 MSS를 줄임으로써 한 방향으로 만 패킷 크기에만 영향을 미치므로 문제의 문제는 완화되지 않았습니다.
— kasperd

운송 중에 MSS를 엉망으로 만들 수 있습니다 (와 관련이있을 수 있음 ip6tables). 그렇게해서는 안되지만 전송 중에 MSS를 최대 1220으로 클램핑하는 것이 MTU 문제에 대한 매우 효과적인 해결 방법입니다. 그리고 엔드 포인트 또는 라우터 사이에서 수행 될 수 있으며 TCP의 MTU 문제를 양방향으로 완화 할 수 있습니다.
— kasperd

끝점에서 MTU를 낮추면 발신 MSS에 영향을 미치며 더 높은 MSS를 수신 한 경우에도 보내는 패킷이 제한됩니다. 따라서 끝점에서 MTU를 낮추면 TCP의 MTU 문제를 양방향으로 완화 할 수 있습니다. 그러나 UDP는 한 방향으로 만 도움이됩니다. 또한 라우터간에 MTU를 줄이면 상황에 따라 MTU 문제를 완화하거나 새로운 MTU 문제를 일으킬 수 있습니다. 따라서 MSS를 줄이는 것은 새로운 MTU 문제를 일으킬 가능성이없는 한 가지 완화 방법입니다.
— kasperd

@kasperd는 3way 핸드 셰이크 동안 전체 TCP 세션에 대해 (낮은 MSS로) 협상되기 때문에 한 쪽에서 MSS를 낮추면 두 가지 방식으로 트래픽 흐름이 작동하지 않아야합니까? MTU를 낮추고 들어오는 UDP를 깨는 것에 관해서는 문제가 해결되지는 않지만 너무 큰 UDP는 작동하지 않기 때문에 추가 문제를 일으키지 않아야합니다 (분열 된 업스트림은 어쨌든 떨어질 것입니다) .
— Matija Nalis

1
MSS는 두 방향에 대해 독립적으로 협상됩니다. 각 측은 그들이 기꺼이 보내고 자하는 최대치를 알고 있고, 다른 쪽 끝에는 기꺼이받을 최대치를 알려줍니다. 설정 advmss하면 전송하려는 세그먼트가 아닌 수신 할 세그먼트의 크기에만 영향을줍니다. 보내려는 최대 값은 전달되지 않습니다. 필요하지 않기 때문입니다. 둘 다 MTU에서 기본값을 가져 오며 둘 중 하나를로 재정의 할 수 있습니다 advmss. 라우팅 항목이 다른 항목을 재정의하는 방법을 모르지만 방법이 있으면 배우고 싶습니다.
— kasperd
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.