Тест на анонимность 2ip по SoftEther VPN выдает VPN fingerprint
Делаю тест на анонимность 2ip.ru выдает VPN fingerprint MTU 1349 MTU, отключил ускорение UDP по рекомендации на форуме SoftEther VPN, после выдает VPN fingerprint MTU 1317.
Т.е. шило на мыло.
Zemb
22.04.18 19:27:54 MSK

Повторяй, пока не запомнишь: VPN ≠ anonymity
beastie ★★★★★
( 22.04.18 19:52:19 MSK )
Ответ на: комментарий от beastie 22.04.18 19:52:19 MSK

А сколько повторять надо? Ну так, в среднем.
entefeed ☆☆☆
( 22.04.18 20:02:22 MSK )
Ответ на: комментарий от beastie 22.04.18 19:52:19 MSK
VPN ≠ anonymity Ты видно не внимательно читал, вопрос задан был не про анонимность.
Zemb
( 23.04.18 01:19:01 MSK ) автор топика
Задача еще актуальна
Zemb
( 23.04.18 12:38:03 MSK ) автор топика
Ответ на: комментарий от Zemb 23.04.18 12:38:03 MSK
выкрути mtu в конфиге клиента, что тебе мешает?
anonymous
( 23.04.18 12:46:50 MSK )
Ответ на: комментарий от anonymous 23.04.18 12:46:50 MSK
Т.е. ты имеешь ввиду поставить значение 1317 MTU?
Zemb
( 23.04.18 12:52:47 MSK ) автор топика
Ответ на: комментарий от Zemb 23.04.18 12:52:47 MSK

Подправить значение MTU, чтобы на выходе получалось желаемое.
mogwai ★★★★
( 23.04.18 12:54:05 MSK )
Ответ на: комментарий от Zemb 23.04.18 12:52:47 MSK
Сделать такое, чтобы тестом не опредялялось.
anonymous
( 23.04.18 12:56:30 MSK )
Ответ на: комментарий от beastie 22.04.18 19:52:19 MSK
не = в том случае если есть утечка днс, а если таковой нет и взят например отсюда http://dnsrec.meo.ws/ ? поясните ваше утверждение. http://imgsharing.ru/47eb73a2.png
anonymous
( 23.04.18 13:06:38 MSK )
Ответ на: комментарий от anonymous 23.04.18 12:46:50 MSK
В конфиге нет ничего связанное с MTU, полез в конфиг на сервер нашел uint NatMtu 1500, заменил на 1317. 2ip.ru выдает как прежде fingerprint 1317.
Zemb
( 23.04.18 13:45:06 MSK ) автор топика
Ответ на: комментарий от mogwai 23.04.18 12:54:05 MSK
Можно конкретнее, изменения в конфиге ни к чему не привели
Zemb
( 23.04.18 18:59:25 MSK ) автор топика
Ответ на: комментарий от beastie 22.04.18 19:52:19 MSK

Тут в соседних темах особо наивные считают иначе, даже ip свои пишут для ФСБ, считая, что vpn их спрячет, если они сами вдруг понадобятся. Это похоже на самовнушение вида «я в домике», только они об этом не догадываются.
grem ★★★★★
( 23.04.18 19:23:42 MSK )
При установлении tcp соединения, во время хендшейка, определяется mss для пакетов: MSS = MTU — загаловки tcp + ip. Полезная нагрузка должна нарезаться на MSS. Для чего это сделано — для того чтоб пакеты не сегментировались. Например стандартный mtu 1500, по размеру это похоже стандартный payload для фрейма эзернета, следовательно при MTU 1500 — 20 байт (заголовок ip) — 20 байт (заголовок tcp) = 1460 байт MSS, место для полезной нагрузки и тогда один пакет tcp влезет в один фрейм ethernet’а. А если используется тоннель то он тоже должен добавить служебных данных, потому и MSS=1500-20-20-X, где X размер в байтах служебных данных туннеля.
Выход только один, сегментировать пакеты. В случае openvpn на клиенте и сервере нужно его запускать с флагом —mssfix 0 , беда в том, что в nm-applet так сделать нельзя, может уже что исправили(?), но можно просто поправить код и пересобрать.
anonymous
( 23.04.18 19:28:22 MSK )
Ответ на: комментарий от Zemb 23.04.18 01:19:01 MSK
Ты видно не внимательно читал, вопрос задан был не про анонимность.
Заголовок «Тест на анонимность»
Видимо мы все «не внимательно» читаем.
Не понятно что вас парит? Ви таки наркотики/педофилию/etc продавать собрались? Для этого «вроде» есть tor.
Серьезно, огромное кол-во международных компаний выпускают свои филиалы только через свою точку доступа. Типа головная компания в германии, филиал в россии, российский филиал идет через тунель в германию и в инет выходит через их ip. Это стандартная практика.
Падумаешь какой-то mtu. вам пишет об этом только сайт, подчеркиваю только сайт, на который вы зашли, а оно вам не пофигу, если вы не педо-некро-терро-фил?
Также выше написали про возможность фраг-дефраг, это возможно, но нужно ли?
anc ★★★★★
( 25.04.18 08:11:45 MSK )
Ответ на: комментарий от anc 25.04.18 08:11:45 MSK
Ви таки наркотики/педофилию/etc продавать собрались?
Почему у людей только в эту сторону ассоциации работают в первую очередь? Есть же ещё много чего, за что можно отвечать перед законом. Почему сразу такая жесть как наркота/педофилия/продажи обязательно чего то там.
anonymous
( 25.04.18 08:30:04 MSK )
Ответ на: комментарий от anonymous 25.04.18 08:30:04 MSK
Есть же ещё много чего, за что можно отвечать перед законом.
Да наверное, это просто самое распространенное, т.е. не более чем мем. И тащето там etc было. Я хз за что еще сажают.
ЗЫ А не, к etc еще тероров можно добавить
anc ★★★★★
( 25.04.18 08:37:57 MSK )
Последнее исправление: anc 25.04.18 08:41:58 MSK (всего исправлений: 2)
Ответ на: комментарий от Zemb 23.04.18 18:59:25 MSK

Если вы будете выставлять MSS 1460 (MTU 1500), то у вас будет фрагментация пакетов, и VPN будет работать медленнее, чем мог бы. Все эти тесты «на анонимность» от 2ip и whoer — туфта. Говорю вам, как автор теста на MTU, после которого они появились на этих сервисах: https://habr.com/post/216295/
ValdikSS ★★★★★
( 03.05.18 19:40:34 MSK )
Ответ на: комментарий от ValdikSS 03.05.18 19:40:34 MSK

Ну почему все туфта?
Весьма хорош тест на VPN, со сравнением опроса по двум каналам (ICMP и XMLHttpRequest).
aidaho ★★★★★
( 02.06.18 15:55:02 MSK )
Ответ на: комментарий от aidaho 02.06.18 15:55:02 MSK
все эти проверки на анонимность (а потом в конце проценты), никакого отношения к ней не имеют.
anonymous
( 03.06.18 05:55:05 MSK )
Ответ на: комментарий от anonymous 03.06.18 05:55:05 MSK

Я ничего не говорил про анонимность.
IPsec & path MTU discovery: фича али баг?
IPsec – это широко распространённая технология для построения VPN туннелей между площадками. Path MTU discovery (PMTUD) – функциональность, позволяющая хостам и узлам VPN определить минимальный MTU вдоль пути следования пакета, чтобы затем привести локальное значение MTU в соответствие с реалиями транзитной сети. Возможно ли использовать эти две технологии в одной связке? Безусловно, Cisco даже опубликовала заметку, пошагово описывающую происходящее при таком взаимодействии. Однако вопрос о том, стоит ли использовать эти две технологии в одной связке, остаётся открытым, несмотря на кажущуюся простоту.
IPsec VPN, очевидно, ориентирована на безопасность трафика, обеспечивая конфиденциальность и целостность транзитных данных, а также доступность такого канала связи. Как правило, туннель пролегает поверх интернета, а значит, он должен успешно противостоять повышенному вниманию со стороны злоумышленников в любой форме: цена атаки должна быть существенно выше стоимости ожидаемого результата. Если посмотреть внимательно на описание работы PMTUD поверх IPsec, то можно заметить занятную особенность – решение, влияющее на защищённую сущность (значение MTU для IPsec туннеля), основано на обратной связи совершенно неизвестного происхождения (ICMP fragmentation needed откуда-то из транзитной сети). Возможно ли создать такой ICMP пакет, который снизит значение MTU для IPsec туннеля до неприемлемого уровня?
Ниже схема для тестирования этой гипотезы:

Большинство маршрутизаторов используют довольно стандартный для эмуляторов образ IOS – 15.2(4)M11 (шасси Cisco 7200). Исключением является VPN4 – это более свежая платформа CSR1000v с версией прошивки IOS XE 16.9.3 – на него-то мы и будем смотреть наиболее пристально. Attacker является простой человеческой виртуалкой с Ubuntu, которую мы сможем использовать для свои грязных делишек. На обоих узлах VPN активен PMTUD; MTU отличается от обычного только на канале между VPN2 и ISP – так мы сможем проверить работу PMTUD до того, как начнём что-либо портить. Ниже настройки каждого из узлов:
H1#show run | section router|interface interface Loopback0 ip address 1.1.1.1 255.255.255.255 interface FastEthernet0/0 ip address 192.168.12.1 255.255.255.0 router ospf 1 network 0.0.0.0 255.255.255.255 area 0
VPN2#show run | section router|ip route|crypto|interface crypto isakmp policy 10 authentication pre-share crypto isakmp key cisco address 0.0.0.0 crypto ipsec transform-set SET esp-aes mode tunnel crypto ipsec profile PROFILE set transform-set SET interface Loopback0 ip address 2.2.2.2 255.255.255.255 interface Tunnel0 ip address 192.168.24.2 255.255.255.0 ip ospf mtu-ignore tunnel source FastEthernet0/1 tunnel mode ipsec ipv4 tunnel destination 192.168.34.4 tunnel path-mtu-discovery tunnel protection ipsec profile PROFILE interface FastEthernet0/0 ip address 192.168.12.2 255.255.255.0 interface FastEthernet0/1 ip address 192.168.23.2 255.255.255.0 ip mtu 1400 ip ospf shutdown router ospf 1 network 0.0.0.0 255.255.255.255 area 0 ip route 192.168.34.4 255.255.255.255 192.168.23.3
ISP#show run | section interface interface Loopback0 ip address 3.3.3.3 255.255.255.255 interface FastEthernet0/0 ip address 192.168.100.3 255.255.255.0 interface FastEthernet0/1 ip address 192.168.23.3 255.255.255.0 ip mtu 1400 interface FastEthernet1/0 ip address 192.168.34.3 255.255.255.0
VPN4#show run | section router|ip route|interface|crypto crypto isakmp policy 10 authentication pre-share crypto isakmp key cisco address 0.0.0.0 crypto ipsec transform-set SET esp-aes mode tunnel crypto ipsec profile PROFILE set transform-set SET interface Loopback0 ip address 4.4.4.4 255.255.255.255 interface Tunnel0 ip address 192.168.24.4 255.255.255.0 ip ospf mtu-ignore tunnel source GigabitEthernet2 tunnel mode ipsec ipv4 tunnel destination 192.168.23.2 tunnel path-mtu-discovery tunnel protection ipsec profile PROFILE interface GigabitEthernet1 ip address 192.168.45.4 255.255.255.0 interface GigabitEthernet2 ip address 192.168.34.4 255.255.255.0 ip ospf shutdown router ospf 1 network 0.0.0.0 255.255.255.255 area 0 ip route 192.168.23.2 255.255.255.255 192.168.34.3
H5#show run | section router|interface interface Loopback0 ip address 5.5.5.5 255.255.255.255 interface FastEthernet0/0 ip address 192.168.45.5 255.255.255.0 router ospf 1 network 0.0.0.0 255.255.255.255 area 0
root@Attacker# tunctl -t tap0 root@Attacker# ifconfig tap0 192.168.100.10/24 up root@Attacker# ip route add 192.168.34.0/24 via 192.168.100.3
Зачем понадобился ip ospf mtu-ignore на туннеле? PMTUD – фича однонаправленная, поэтому вполне вероятен следующий сценарий: один из узлов VPN уже снизил локальное значение MTU, тогда как другому узлу ещё только предстоит познать эту радость. Если в этой ситуации сбросить соседство OSPF, то оно, к сожалению, самостоятельно не восстановится из-за несовпадения MTU в DBD сообщениях.
Перед тем, как издеваться над VPN4, запустим перехват пакетов между ISP и VPN4 – это будет наша маленькая эмуляция разведки злоумышлеником; нас интересуют только ICMP сообщения. PMTUD использует пакеты с выставленным битом DF:
H5#ping 1.1.1.1 source 5.5.5.5 size 1400 df-bit Type escape sequence to abort. Sending 5, 1400-byte ICMP Echos to 1.1.1.1, timeout is 2 seconds: Packet sent with a source address of 5.5.5.5 Packet sent with the DF bit set .M.M. Success rate is 0 percent (0/5) H5# H5#ping 1.1.1.1 source 5.5.5.5 size 1300 df-bit Type escape sequence to abort. Sending 5, 1300-byte ICMP Echos to 1.1.1.1, timeout is 2 seconds: Packet sent with a source address of 5.5.5.5 Packet sent with the DF bit set . Success rate is 100 percent (5/5), round-trip min/avg/max = 40/46/52 ms
VPN4#show interface tunnel 0 Tunnel0 is up, line protocol is up Tunnel protocol/transport IPSEC/IP Tunnel TTL 255 Path MTU Discovery, ager 10 mins, min MTU 92, MTU 1342, expires 00:09:28 Tunnel transport MTU 1442 bytes Tunnel transmit bandwidth 8000 (kbps) Tunnel receive bandwidth 8000 (kbps) Tunnel protection via IPSec (profile "PROFILE")
Новость хорошая – PMTUD работает: MTU на туннеле уменьшился и стал равен 1342 байтам. Впрочем, есть один неприятный нюанс – это счастье нельзя увидеть на старых IOS:
Note: This change in value is stored internally and cannot be seen in the output of the show ip interface tunnel command. You only see this change if you turn use the debug tunnel command.
Вольный перевод
Внимание: изменённое значение находится во внутренней памяти и не может быть отображено в выводе команды show ip interface tunnel. Единственный способ отследить изменение – это включить отладку командо debug tunnel.
Заметим, что ICMP Fragmentation Needed несёт часть пакета, размер которого больше разрешённого MTU. Возможно, нам понадобятся эти данные для поддельного ICMP ответа:

ICMP содержит только открытую часть ESP – заголовки, – поэтому злоумышленник может перехватить ESP пакеты, на их основе угадать значения SPI и Sequence, а затем использовать эти значения, чтобы подделать ICMP ответ, который выглядит вполне легитимным. Наша же задача ещё проще: нам достаточно убедить VPN4 существенно уменьшить значение MTU для туннеля. Хороший инженер – ленивый инженер, поэтому скопируем пакет прямо из Wireshark, немного подправив значения:
import socket s = socket.socket(socket.AF_INET, socket.SOCK_RAW, socket.IPPROTO_TCP) s.setsockopt(socket.IPPROTO_IP, socket.IP_HDRINCL, 1) packet = bytearray(\ b"\x0c\x11\x72\x9e\x00\x01\xca\x03\x3c\xde\x00\x1c\x08\x00\x45\x00" \ b"\x00\x38\x00\x02\x00\x00\xff\x01\xf6\x6a\xc0\xa8\x22\x03\xc0\xa8" \ b"\x22\x04\x03\x04\xb2\x44\x00\x00\x05\x78\x45\x00\x05\xac\x04\xb3" \ b"\x40\x00\xfe\x32\xb8\x15\xc0\xa8\x22\x04\xc0\xa8\x17\x02\x5a\xe2" \ b"\xea\x4e\x00\x00\x00\x0e" ) # Decrease MTU by 1024 bytes packet[2*16 + 8] = (packet[2*16 + 8] - 0x04) % 256 # Compute high byte of checksum word hbyte = packet[2*16 + 4] + 0x04 # If high byte is overflown, compensate carryover if hbyte > 255: packet[2*16 + 5] = packet[2*16 + 5] + 1 hbyte -= 256 # Adjust high byte of checksum packet[2*16 + 4] = hbyte packet = packet[14:] s.sendto(packet, ('192.168.34.4', 0))
Расчёт контрольной суммы включает в себя немного древней магии в случае переполнения байта, но в целом идея проста – обнулить LSB MTU, увеличив значение LSB контрольной суммы на ту же величину. Весьма тривиально, не так ли? Проверим, работает ли шалость:
root@Attacker# python3 pckt.py
VPN4#show interfaces tunnel0 Tunnel0 is up, line protocol is up Tunnel protocol/transport IPSEC/IP Tunnel TTL 255 Path MTU Discovery, ager 10 mins, min MTU 92, MTU 318, expires 00:09:48 Tunnel transport MTU 1442 bytes Tunnel transmit bandwidth 8000 (kbps) Tunnel receive bandwidth 8000 (kbps) Tunnel protection via IPSec (profile "PROFILE")
H5#ping 1.1.1.1 source 5.5.5.5 size 1300 df-bit Type escape sequence to abort. Sending 5, 1300-byte ICMP Echos to 1.1.1.1, timeout is 2 seconds: Packet sent with a source address of 5.5.5.5 Packet sent with the DF bit set M.M.M Success rate is 0 percent (0/5)
Очевидно, что шалость удалась. Впрочем, а какие последствия? Начнём с того, что лежит на поверхности, – пакеты с выставленным битом DF не смогут прорваться через туннель в таком состоянии, что прямым образом нарушает доступность сервиса. Обычные же пакеты будут вначале фрагментированы, а затем отправлены через туннель. Фрагментация пакетов всегда происходит с использованием CPU, поэтому всплеск пакетов для фрагментации неизбежно приводит к всплеску загруженности CPU; в этом случае доступность всего маршрутизатора находится под угрозой, что может поставить под удар связность на целой площадке.
Впрочем, является ли это поведение дефектом? К сожалению, это особенность PMTUD на уровне дизайна: маршрутизатор обязан доверять информации из неаутентифицированных пакетов от произвольного узла транзитной сети. Даже если бы ICMP пакет включал фрагмент зашифрованной части ESP (потенциально с защитой от воспроизведения пакетов), значение ICV с большой вероятностью было бы исключено из ICMP, делая невозможным проверку целостности ESP части. В конечном счёте единственная защита от подобной атаки – не использовать PMTUD на туннеле и задавать значение MTU для него вручную. К счастью, современный интернет неплохо справляется со значением MTU по умолчанию, поэтому статически заданного MTU для туннеля вполне должно хватить для большинства задач.
Спасибо за рецензию: Анастасии Куралёвой
Изменение параметров максимального размера единицы передачи (MTU) по умолчанию для подключений PPP или VPN-подключений
В этой статье описывается, как изменить реестр, чтобы изменить параметры максимального размера единицы передачи (MTU) по умолчанию для подключений протокола «точка — точка» (PPP) или для подключений виртуальной частной сети (VPN).
Область действия: Windows 10 — все выпуски, Windows Server 2012 R2
Исходный номер базы знаний: 826159
Аннотация
Windows Server 2003, Windows 2000 и Windows XP используют фиксированный размер MTU 1500 байт для всех подключений PPP и фиксированный размер MTU 1400 байт для всех VPN-подключений. Это параметр по умолчанию для клиентов PPP, VPN-клиентов, серверов PPP или VPN-серверов, на которых выполняется маршрутизация и удаленный доступ.
Подключения PPP — это подключения, такие как модемные подключения, подключения isDN или прямые кабели по NULL-последовательному кабелю или параллельному кабелю. VPN-подключения — это подключения протокола PPTP или протокола туннелирования уровня 2 (L2TP).
Используйте методы, указанные в этой статье, чтобы изменить параметры размера MTU в реестре. Если после изменения параметров размера MTU возникают проблемы или проблемы, связанные с производительностью, удалите добавленные разделы реестра.
Изменение параметров MTU для подключений PPP
Чтобы изменить параметры MTU для подключений PPP, добавьте значение DWORD Типа протокола, DWORD PPPProtocolType и значение DWORD ProtocolMTU в следующий раздел реестра:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Ndiswan\Parameters\Protocols\0
Для этого выполните следующие действия.
В этот раздел, описание метода или задачи включены действия, содержащие указания по изменению параметров реестра. Однако неправильное изменение параметров реестра может привести к возникновению серьезных проблем. Поэтому следует в точности выполнять приведенные инструкции. Для дополнительной защиты создайте резервную копию реестра, прежде чем редактировать его. Так вы сможете восстановить реестр, если возникнет проблема. Дополнительные сведения о резервном копировании и восстановлении реестра см. в разделе «Резервное копирование и восстановление реестра в окне».
- Нажмите кнопку Пуск, выберите команду Выполнить, в поле Открыть введите regedit и нажмите кнопку ОК.
- Найдите и выберите следующий подраздел реестра:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\NdisWan\Parameters - Добавьте подраздел « Протоколы» (если он еще не существует):
- В меню Правка наведите указатель мыши на Создать, затем щелкните Раздел реестра.
- Введите протоколы и нажмите клавишу ВВОД.
- Щелкните подраздел «Протоколы», созданный на шаге 3.
- В меню Правка наведите указатель мыши на Создать, затем щелкните Раздел реестра.
- Введите 0 (ноль) и нажмите клавишу ВВОД.
Изменение параметров MTU для VPN-подключений
Чтобы изменить параметры MTU для VPN-подключений, добавьте значение DWORD типа протокола , значение DWORD PPPProtocolType и значение DWORD TunnelMTU в следующий раздел реестра:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Ndiswan\Parameters\Protocols\0Для этого выполните следующие действия.
В этот раздел, описание метода или задачи включены действия, содержащие указания по изменению параметров реестра. Однако неправильное изменение параметров реестра может привести к возникновению серьезных проблем. Поэтому следует в точности выполнять приведенные инструкции. Для дополнительной защиты создайте резервную копию реестра, прежде чем редактировать его. Так вы сможете восстановить реестр, если возникнет проблема. Для получения дополнительной информации о том, как создать резервную копию и восстановить реестр, см. статью Сведения о резервном копировании и восстановлении реестра Windows.
- Нажмите кнопку Пуск, выберите команду Выполнить, в поле Открыть введите regedit и нажмите кнопку ОК.
- Найдите и выберите следующий подраздел реестра:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\NdisWan\Parameters - Добавьте подраздел « Протоколы» (если он еще не существует):
- В меню Правка наведите указатель мыши на Создать, затем щелкните Раздел реестра.
- Введите протоколы и нажмите клавишу ВВОД.
- Щелкните подраздел «Протоколы», созданный на шаге 3.
- В меню Правка наведите указатель мыши на Создать, затем щелкните Раздел реестра.
- Введите 0 (ноль) и нажмите клавишу ВВОД.
Ссылки
Дополнительные сведения о PPP см. в разделе Request for Comments (RFC) 1548. Для этого см. RFC 1548.
IP MTU и туннели IPSec и GRE
IP protocol был разработан для самых различных типов подключений, и хотя максимальная длина для IP datagram составляет 64K, большинство подключений (transmission links) используют меньший максимальный размер для IP-пакета или MTU.
MTU, Maximum Transmission Unit — максимальный размер блока в байтах, который может быть передан на канальном уровне сетевой модели OSI.
Значение MTU зависит от типа подключения. Дизайн IP сетей допускает возможность фрагментирования IP пакетов в том случае когда MTU меньше размера пакета, — в этом случае принимающая станция вновь собирает искомый пакет из фрагментов.
На рисунке отображен заголовок IP пакета и то, как он инкапсулируется в датаграмму второго уровня.
Здесь важно отметить, что в поле FLAGS включает в себя три бита, один из которых «don’t fragment» (DF) bit, который определяет разрешено данный пакет фрагментировать или нет.Вопросы с IP фрагментированием
Хотя фрагментация пакета выполняется достаточно быстро, обратная сборка исходного пакета требует значительных ресурсов: затрат памяти, вопросы быстродействия.
В случае потери одного из фрагментов вся датаграмма должна быть передана заново.
Фрагметы очень тяжело обрабатывать на брендмауэрах (с 4-го по 7 уровень), при неправильной последовательности они будут забракованы.TCP MSS и избегание дефрагментации

TCP Maximum Segment Size (MSS) — определяет максимальный размер датаграммы TCP/IP, которую будет принимать данный хост.
Датаграмма TCP/IP может быть фрагментирована на уровне IP.
Значение MSS отсылается внутри TCP header только в сегментах TCP SYN. Каждая сторона TCP соединения объявляет другой стороне свое значение MSS.
Вопреки распространенному мнению, значение MSS не согласовывается между хостами, — у каждого хоста они могут оставаться разными, только отсылающий хост отдает сегменты размером не больше, чем требует принимающий хост.Таким образом TCP MSS позволяет избежать фрагментации на уровне двух участников сессии TCP. Но TCP MSS не может обработать тот случай, когда по пути между хостами есть меньший MTU.
PMTUD
PMTUD (Path Maximum Transmission Unit Discovery) — был разработан для избегания фрагментации по пути между хостами. PMTUD используется для автоматического определения минимального MTU вдоль пути пакета между хостами.
PMTUD поддерживается только TCP, UDP и другие протоколы не поддерживают PMTUD.
Хост отсылает нефрагментированный пакет с установленным DF bit. Если маршрутизатор пытается отдать пакет на link, с меньшей MTU чем этот пакет, маршрутизатор дропнет этот пакет и возвратит сообщение ICMP «Destination Unreachable», с кодом «fragmentation needed and DF set» (type 3, code 4). Когда Хост-источник получает эту информацию, он понижает MSS и затем пересылает TCP сегмент заново.
Наиболее часто встречающаяся проблема с PMTUD — это среда в которой не пропускается сообщения ICMP
Где актуально использование PMTUD
Как уже было сказано, PMTUD нужен в случаях, когда по пути от хоста А к хосту Б встречаются линки с меньшими значениями MTU.
Наиболее общие примеры:
— PPPoE (часто используемый вместе с ADSL) использует 8 bytes для своего заголовка. Это уменьшает эффективное значение MTU для Ethernet до 1492 (1500 — 8).
— Туннельный протоколы GRE, IPsec, and L2TP также используют пространство для своих заголовков, что также уменьшает эффективное MTU на исходящем интерфейсе.Вообще Path MTU Discovery (RFC 1191) осуществляется всеми клиентами включая Windows 2000/2003/XP/7/8.
Для нормальной работы PMTUD необходимо, чтобы пропускался протокол ICMP, в частности должны пропускаться сообщения ICMP «unreachable» и «time-exceeded».
Для проверки можно использовать утилиту mturoute.exe. Утилита отрабатывает аналогично PMTUD и возвращает значение MTU, которое необходимо использовать на данном хосте.
Текущее значение MTU можно увидеть через команды:
Windows 7, Windows Vista: netsh interface ipv4 show subinterfaces
Windows XP: netsh interface ip show interfaceЗначения MTU для локальной машины можно поменять и вручную (хотя и не рекомендуется)
Adjusting IP MTU, TCP MSS, and PMTUD on Windows and Sun Systems
Также можно использовать утилиту Set MTU, поставляемой с Cisco Systems VPN Client.Что такое туннель
Туннель — это логический интерфейс на маршрутизаторе, который обеспечивает инкапсуляцию полезных пакетов внутрь транспортного протокола.
Туннель состоит из основных компонентов:
— Passenger protocol
— Carrier protocol. Протокол, осуществляющий инкапсуляцию:
GRE
IP in IP tunnels
— Transport protocol. Протокол отвечающий за маршрутизацию encapsulated protocol. В нашем случае это IP.
На приведенном рисунке IP у нас выступает как transport protocol и как passenger protocol.
Инкапсуляция трафика дает следующие преимущества:
- Endpoints могут использовать private addresses
- Позволяет строить VPN поверх WAN сетей
- Возможность использования шифрования
Рекомендации построения туннельных интерфейсов
Исходя из того, что наиболее «тяжелый» вариант — это одновременное использование GRE и IPsec, рекомендации будут следующие:
— PMTUD позволяет установить на GRE интерфейсе оптимальное значение MTU и включается на туннельном интерфейсе командой tunnel path-mtu-discovery
— Обеспечьте нормальную работу PMTUD, при этом на обоих целевых хостах должна успешно выполняться mturoute.exe
— Также рекомендуется одновременно использовать и команду ip mtu 1400. В этом случае ip mtu будет обеспечивать пространство для GRE + IPSec, в случае же более низких значениях MTU по пути, IP MTU бует подкорректировано динамически. Значение 1400 рекомендовано, т.к. оно покрывает большинство возможных комбинаций GRE + IPSec.
— Следует использовать ip tcp adjust-mss 1360 на туннельном интерфейсе. Это позволит маршрутизатору уменьшить значение TCP MSS в TCP SYN Packet. Что позволить двух конечным хостам генерировать достаточно малые пакеты. (1360 = 1400 — 20(TCP) — 20 (IP))Общий конфиг для туннельного интефейса DMVPN + IPSec будет выглядеть:
interface Tunnel200
description ### DMVPN TUNNEL HUB
ip address 10.5.0.1 255.255.255.0
no ip redirects
ip mtu 1400
tunnel path-mtu-discovery
ip nbar protocol-discovery
ip hold-time eigrp 1 35
no ip next-hop-self eigrp 1
ip flow ingress
ip flow egress
ip nhrp authentication baurus
ip nhrp map multicast dynamic
ip nhrp network-id 200
ip tcp adjust-mss 1360
no ip split-horizon eigrp 1
delay 100000
tunnel source 87.237.40.107
tunnel mode gre multipoint
tunnel key 123
tunnel protection ipsec profile DMVPN