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.comF=####삽입되어 있는지 확인하십시오. 두 번째 생각에, 그것을 실행하고 출력으로 질문을 편집하십시오.
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.