NGINX SSL tidak merespons melalui IPv6

10

Pada server Debian dengan nginx, saya tidak mendapat respons dari server web melalui HTTPS dan IPv6. HTTP berfungsi dengan baik.

  • netstat melaporkan port 443 mendengarkan pada alamat IPv6
  • firewall terbuka, ipv6scanner.com melaporkan port 443 terbuka
  • secara lokal (over terminal) wget dan curl menerima respons yang benar, sehingga konfigurasi nginx OK
  • tidak ada tanda kesalahan dari nginx error.log
  • tidak ada catatan di access.log ketika gagal, jadi komunikasi mungkin tidak mencapai server web
  • DNS baik-baik saja. Penerjemahan berfungsi, dan koneksi tidak berfungsi bahkan ketika alamat IP diakses secara langsung

Setiap upaya untuk terhubung dari "luar" (artinya di luar jaringan, dari internet) gagal (browser web, telnet, ipv6-test.com, curl ...). Tidak ada jawaban sama sekali.

Itu dapat diuji di www.ekasparova.eu. Saya tidak tahu apa-apa. Apa lagi yang bisa saya periksa?

edit:

output dari traceroute6 --mtu www.google.comadalah sebagai berikut:

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

Jadi tidak pernah mencapai akhir ...

edit2:

Output ip6tables-save saya (firewall lokal):

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

Terima kasih atas bantuan semua orang, saya dapat meyakinkan operator pusat data bahwa masalahnya ada di infrastruktur mereka. Masalahnya sebenarnya adalah pengaturan MTU pada router virtual di jalur ke internet.

j.kaspar
sumber
Outside = Di luar jaringan pada segmen LAN yang terpisah, atau dari komputer yang duduk di segmen LAN yang sama?
IceMage
1
@IceMage Luar artinya dari internet. Di luar jaringan. Saya akan mengedit pertanyaan untuk mengklarifikasi
j.kaspar
Sudahkah Anda mengkonfigurasi firewall di server? Jika server menjalankan Linux, maka output ip6table-saveakan relevan.
kasperd
@kasperd Saya menambahkan semua aturan terkait icmp ke pertanyaan
j.kaspar
@ j.kaspar Ini hasil yang ip6tables-saveingin saya lihat. Perintah itu akan menampilkan aturan lengkap.
kasperd

Jawaban:

19

Anda memiliki masalah MTU.

Saya menguji wget -O /dev/null https://www.ekasparova.eusambil mengamati lalu lintas dengan tcpdump. Inilah yang saya lihat:

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 paket pertama adalah jabat tangan. Kedua ujung mengumumkan mss 1440yang berarti mereka mampu menerima paket dengan 1440 byte payload TCP, menghitung header juga total hingga 1500 byte lalu lintas IP, yang biasanya didukung oleh Ethernet.

2 paket berikutnya adalah halo klien dan pengakuan diterima oleh server.

2 paket terakhir adalah hal yang menarik. Secara default tcpdumpmenunjukkan nomor urut relatif, yang dalam hal ini membuat tangkapan lebih mudah dibaca. Dalam paket dari server ini adalah bagian yang menarik seq 2857:3678. Kita melihat melompat dari 1ke 2857mana berarti ada kesenjangan dari 2856 byte yang klien belum menerima. 2856 byte sesuai dengan dua paket 1428 byte. Perbedaan antara 1440 dan 1428 adalah ukuran opsi cap waktu.

Jadi, server mengirim server halo dibagi menjadi 3 paket. Tetapi dua yang pertama terlalu besar untuk jaringan dan tidak dikirim ke klien.

Dalam paket akhir dari klien ke server kita melihat ini sack 1 {2857:3678}. Ini adalah pengakuan selektif yang dikirim oleh klien yang memberi tahu server bahwa ada kesenjangan dalam data yang telah diterimanya sejauh ini.

Kemungkinan server terus mengirim dua paket yang hilang berulang-ulang. Tetapi tidak peduli berapa kali ia mentransmisikan kembali dua paket yang sama mereka tetap terlalu besar untuk jaringan. Dan mungkin router di jalur mengirimkan pesan kesalahan kembali ke server yang memberitahukan paket terlalu besar dan perlu dikirim ulang dalam paket yang lebih kecil.

Jika server menerima pesan kesalahan itu, ia akan mengirim ulang paket yang lebih kecil sesuai kebutuhan. Dan itu akan mengingat PMTU yang lebih kecil sehingga pada permintaan berikutnya tidak perlu mengulangi langkah penemuan ini.

Penjelasan yang mungkin untuk semua ini adalah bahwa Anda memiliki firewall yang tidak terkonfigurasi yang menjatuhkan semua pesan kesalahan yang memberitahu server Anda bahwa ia perlu mengirim ulang data dalam paket yang lebih kecil.

kasperd
sumber
1
Menarik. Terima kasih! Pesan-pesan kesalahan itu - saya kira itu adalah protokol ICMP ... Apakah ada cara untuk mengujinya? Firewall di server, dan firewall antara server dan internet, harus terbuka untuk semua komunikasi ICMP.
j.kaspar
@ j.kaspar Apa itu firewall? Bagaimana mereka dikonfigurasi? Bagaimana Anda mengujinya?
Michael Hampton
@MichaelHampton ada iptables firewall yang diinstal langsung di server. Yang kedua milik pusat data dan saya bisa mengatur aturannya. Saya tidak benar-benar tahu cara menguji ICMP. Tetapi aturan pada keduanya diatur ke mana saja <-> di mana saja diizinkan untuk ICMP
j.kaspar
1
@ j.kaspar Pada server Linux, coba traceroute6 --mtu www.google.comdan cari yang F=####dimasukkan ke dalam jalur keluaran, atau jalur keluaran tempat tidak ada respons sama sekali. Setelah dipikir-pikir, jalankan saja dan edit pertanyaan Anda dengan output.
Michael Hampton
@MichaelHampton Selesai. Namun saya tidak yakin bagaimana menafsirkan hasilnya. Apakah itu berarti, bahwa komunikasi sama sekali tidak melewati hop kedua?
j.kaspar
1

Saya setuju dengan @kasperd bahwa ini adalah masalah MTU. Sebagai contoh, secara default wget -6 -O/dev/null http://www.ekasparova.eutidak akan berfungsi (itu akan mendapatkan pengalihan singkat ke https://www.babysoul.cz/pada IP yang sama, tetapi kemudian akan menggantung pada paket berikutnya yang lebih besar). Lalu saya paksa mengurangi MSS untuk host Anda:

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

dan setelah itu wgetberfungsi normal. Jadi, ini masalah MTU. Membandingkan output dari mtr -6 -n --psize 1410 www.ekasparova.eu(yang berfungsi) dengan mtr -6 -n --psize 1411 www.ekasparova.euakan mengindikasikan masalahnya adalah di host Anda 2a04:f310:100:3:f816:3eff:fea3:4553atau hulu di2a04:f310:100::125

Apa yang dapat Anda lakukan sebagai solusi (selain menghubungi bagian hulu):

Tes di mana ukuran paket itu rusak (mis. wget -6 -O/dev/null http://v6.testmyipv6.com/MTUtest/1500.datMungkin tidak akan bekerja untuk Anda sementara itu seharusnya, tetapi wget -6 -O/dev/null http://v6.testmyipv6.com/MTUtest/1000.datakan berfungsi dengan baik), dan kemudian:

  • (lebih buruk) jepit MSS Anda untuk rute IPv6 default (seperti yang saya lakukan di atas). Perhatikan bahwa ini hanya akan berfungsi untuk TCP; misalnya paket DNS UDP masih akan rusak, atau
  • (lebih baik) kurangi MTU antarmuka Anda (misalnya ifconfig eth0 mtu 1200). Ini harus bekerja untuk semua paket. Masalahnya adalah bahwa jika sesuatu di jalan memiliki MTU lebih rendah, Anda tidak akan dapat berkomunikasi dengan mereka. Dan menurunkan MTU akan menghasilkan kinerja yang sedikit lebih rendah (bukan masalah besar kecuali Anda biasanya adalah situs besar)
  • (Terbaik) coba jika menghapus firewall IPv6 (milik Anda, dan pada upsteam Anda) membantu; dan ketika Anda mengetahuinya, cobalah untuk menyatukannya kembali langkah demi langkah tanpa melanggar penemuan PMTU, sampai Anda menemukan baris yang bermasalah. Masalahnya adalah itu membutuhkan lebih banyak kerja dan kerjasama dari ISP Anda (dan membuka firewall mungkin membuat Anda rentan untuk saat ini).
Matija Nalis
sumber
Mengurangi MSS pada rute default bukanlah saran yang buruk. Ini adalah sesuatu yang telah saya lakukan di lingkungan produksi untuk mengatasi masalah MTU di jaringan orang lain. Saya tidak pergi serendah 1000 sekalipun. 1220 cukup kecil untuk menjaga paket penuh dalam 1280 byte yang dijamin IPv6 dari ujung ke ujung. Namun masalah yang dipermasalahkan tidak akan dapat dikurangi dengan mengurangi MSS pada rute default karena hanya mempengaruhi ukuran paket dalam satu arah.
kasperd
Satu dapat memotong-motong MSS dalam perjalanan (harus mungkin dilakukan dengan ip6tables). Anda tidak seharusnya melakukan itu, tetapi ternyata menjepit MSS dalam transit ke maksimum 1220 adalah solusi yang sangat efisien untuk masalah MTU. Dan itu bisa dilakukan di titik akhir atau di antara router mana pun, dan itu akan mengurangi masalah MTU untuk TCP di kedua arah.
kasperd
Menurunkan MTU pada titik akhir akan memengaruhi MSS keluar dan juga akan membatasi paket yang Anda kirim bahkan jika Anda menerima MSS yang lebih tinggi. Dengan demikian MTU yang lebih rendah di titik akhir dapat mengurangi masalah MTU untuk TCP di kedua arah. Namun itu hanya membantu untuk UDP dalam satu arah. Dan mengurangi MTU pada router di antara dapat mengurangi masalah MTU atau memperkenalkan masalah MTU baru tergantung pada keadaan. Jadi mengurangi SPM adalah mitigasi yang dapat membantu tanpa berpotensi menimbulkan masalah MTU baru.
kasperd
@kasperd seharusnya tidak menurunkan MSS di satu sisi bekerja untuk lalu lintas yang mengalir dalam dua arah, karena dinegosiasikan (sebagai MSS yang lebih rendah) untuk seluruh sesi TCP selama jabat tangan 3way? Adapun menurunkan MTU dan itu melanggar UDP yang masuk, sementara memang benar itu tidak akan menyelesaikan masalah, itu tidak seharusnya membuat masalah tambahan karena UDP yang terlalu besar tidak akan berhasil (karena hulu yang rusak akan menjatuhkan mereka juga) .
Matija Nalis
1
Tidak. MSS dinegosiasikan secara independen untuk dua arah. Masing-masing pihak mengetahui jumlah maksimum yang ingin mereka kirim dan memberi tahu pihak lain jumlah maksimum yang bersedia mereka terima. Saat Anda menetapkan advmssAnda hanya memengaruhi ukuran segmen yang akan Anda terima, bukan segmen yang akan Anda kirim. Maksimum yang ingin Anda kirim tidak dikomunikasikan - karena tidak perlu untuk itu. Keduanya mendapatkan nilai default dari MTU, salah satu dari keduanya dapat diganti advmss. Saya tidak tahu cara entri entri untuk menimpa yang lain, tetapi jika ada cara, saya ingin belajar.
kasperd