У меня проблема с подключением к Интернету с конкретным провайдером DSL, и после многих исследований все свелось к следующему.
Допустим, есть два провайдера A и B, подключенные через PPPoE (в Ubuntu 14.04, идентичные варианты конфигурации, одинаковый стандартный MTU 1492)
Провайдер: A
ppp0 Link encap:Point-to-Point Protocol
inet addr:192.168.100.1 P-t-P:192.168.100.2 Mask:255.255.255.255
UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1492 Metric:1
RX packets:422406 errors:0 dropped:0 overruns:0 frame:0
TX packets:383588 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:3
RX bytes:410702336 (410.7 MB) TX bytes:76099873 (76.0 MB)
Провайдер: B
ppp0 Link encap:Point-to-Point Protocol
inet addr:192.168.200.1 P-t-P:192.168.200.2 Mask:255.255.255.255
UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1492 Metric:1
RX packets:3519252 errors:0 dropped:0 overruns:0 frame:0
TX packets:2547278 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:3
RX bytes:4506505131 (4.5 GB) TX bytes:337199879 (337.1 MB)
Вот выдержки из tcpdump от обоих поставщиков:
Провайдер: A (Успешно Попытка подключения IMAP)
10:58:33.085863 IP provider-1.example.com.56892 > imap.example.net.imaps: Flags [SEW], seq 3899194038, win 8192, options [**mss 1452**,nop,wscale 8,nop,nop,sackOK], length 0
10:58:33.133981 IP imap.example.net.imaps > provider-1.example.com.56892: Flags [S.E], seq 2576858288, ack 3899194039, win 29200, options [mss 1452,nop,nop,sackOK,nop,wscale 9], length 0
10:58:33.134472 IP provider-1.example.com.56892 > imap.example.net.imaps: Flags [.], ack 1, win 516, length 0
10:58:33.134989 IP provider-1.example.com.56892 > imap.example.net.imaps: Flags [P.], seq 1:156, ack 1, win 516, length 155
10:58:33.244366 IP imap.example.net.imaps > provider-1.example.com.56892: Flags [.], ack 156, win 60, length 0
10:58:33.252382 IP imap.example.net.imaps > provider-1.example.com.56892: Flags [.], seq 1:1453, ack 156, win 60, length 1452
10:58:33.253614 IP imap.example.net.imaps > provider-1.example.com.56892: Flags [.], seq 1453:2905, ack 156, win 60, length 1452
10:58:33.254268 IP provider-1.example.com.56892 > imap.example.net.imaps: Flags [.], ack 2905, win 516, length 0
10:58:33.255073 IP imap.example.net.imaps > provider-1.example.com.56892: Flags [.], seq 2905:4357, ack 156, win 60, length 1452
10:58:33.255392 IP imap.example.net.imaps > provider-1.example.com.56892: Flags [P.], seq 4357:4996, ack 156, win 60, length 639
10:58:33.255778 IP provider-1.example.com.56892 > imap.example.net.imaps: Flags [.], ack 4996, win 516, length 0
10:58:33.277521 IP provider-1.example.com.56892 > imap.example.net.imaps: Flags [P.], seq 156:282, ack 4996, win 516, length 126
10:58:33.344742 IP imap.example.net.imaps > provider-1.example.com.56892: Flags [P.], seq 4357:4996, ack 156, win 60, length 639
10:58:33.345176 IP provider-1.example.com.56892 > imap.example.net.imaps: Flags [.], ack 4996, win 516, options [nop,nop,sack 1 {4357:4996}], length 0
10:58:33.392306 IP imap.example.net.imaps > provider-1.example.com.56892: Flags [P.], seq 4996:5047, ack 282, win 60, length 51
10:58:33.425148 IP provider-1.example.com.56892 > imap.example.net.imaps: Flags [.], ack 5047, win 515, length 0
Провайдер: B (Неудачный Попытка подключения IMAP)
10:11:45.242953 IP provider-2.example.com.44741 > imap.example.net.imaps: Flags [SEW], seq 3877989337, win 8192, options [**mss 1460**,nop,wscale 8,nop,nop,sackOK], length 0
10:11:45.264231 IP imap.example.net.imaps > provider-2.example.com.44741: Flags [S.], seq 3355386868, ack 3877989338, win 29200, options [mss 1460,nop,nop,sackOK,nop,wscale 9], length 0
10:11:45.264962 IP provider-2.example.com.44741 > imap.example.net.imaps: Flags [.], ack 1, win 513, length 0
10:11:45.271981 IP provider-2.example.com.44741 > imap.example.net.imaps: Flags [P.], seq 1:156, ack 1, win 513, length 155
10:11:45.294039 IP imap.example.net.imaps > provider-2.example.com.44741: Flags [.], ack 156, win 60, length 0
10:11:45.300146 IP imap.example.net.imaps > provider-2.example.com.44741: Flags [P.], seq 4381:4996, ack 156, win 60, length 615
10:11:45.300727 IP provider-2.example.com.44741 > imap.example.net.imaps: Flags [.], ack 1, win 513, options [nop,nop,sack 1 {4381:4996}], length 0
10:11:55.293705 IP imap.example.net.imaps > provider-2.example.com.44741: Flags [F.], seq 4996, ack 156, win 60, length 0
10:11:55.294414 IP provider-2.example.com.44741 > imap.example.net.imaps: Flags [.], ack 1, win 513, options [nop,nop,sack 1 {4381:4996}], length 0
Я обнаружил, что если вручную установить значение TCP MSS на 1452, используя mss clmaping на Linux Box для провайдера B (который находится на 1460, можно увидеть на выходе tcpdump), тогда соединение устанавливается успешно.
Мои вопросы: почему с одним провайдером tcp устанавливает значение mss равным 1452 (что также кажется правильным для PPPoE с MTU 1492), а другой - нет. Машины идентичны и из одного образа с одинаковым ядром и одинаковыми версиями ОС. Насколько я понимаю, все идентично. Может ли провайдер контролировать это или где мне еще искать?
Я действительно хотел бы знать, что я перепробовал все, прежде чем менять это вручную.