Есть ли способ создать что-то похожее на туннель IPIP или GRE только через UDP или TCP?
У меня есть туннель GRE между двумя серверами, и я заметил, что иногда он начинает сбрасывать пакеты. В то же время, если я пингую между серверами через Интернет, у меня нет проблем.
Я считаю, что это проблема с формированием трафика у моего провайдера (он не принимает во внимание протокол GRE). Я также пробовал туннель IPIP с тем же результатом.
Попробуйте openvpn. Вы можете создавать туннели через UDP или TCP.
Я не уверен, что является причиной вашей конкретной проблемы, но вы должны отметить, что в целом для туннелей лучше использовать ненадежный транспортный поток (например, UDP), чем надежный.
Причина в том, что если вы все-таки потеряете пакет, туннельный Уровень TCP должен управлять повторной передачей, а не реальный транспортный уровень.
Если оба уровня имеют встроенную ретрансляцию, они могут начать войну ретрансляции, которая в конечном итоге убивает пропускную способность.
Также не забывайте, что любой протокол туннелирования снижает эффективный MTU (и, следовательно, TCP MSS). Если MTU и MSS не настроены должным образом, вы увидите чрезмерную фрагментацию и / или потерянные пакеты.
Вы знаете, отбрасываете ли вы пакеты GRE или пакеты, туннелируемые через туннель GRE? С любым типом туннеля нередко возникают проблемы с MTU практически при любом типе туннелирования. Проблемы с MTU может быть трудно диагностировать, потому что пакеты меньшего размера (например, эхо-запросы по умолчанию) отлично проходят через туннель. Вы увидите проблемы только с большими пакетами и, как правило, только если приложение или система устанавливает бит DF (Не фрагментировать). Что, к сожалению, довольно распространено.
Вы можете выполнить сквозное тестирование на предмет наименьшего MTU на сетевом пути, используя эхо-запросы с большим размером пакета и установленным битом DF.
В Windows вы можете установить бит DF с помощью опции -f и установить размер пакета с помощью опции -l следующим образом:
ping -f -l 1450
В Linux вы устанавливаете бит DF с помощью опции «-M do» и устанавливаете размер пакета с помощью опции -s, например:
ping -M do -s 1450
Вы не сказали, что используете для конечных точек GRE. Если это маршрутизаторы Cisco, эта ссылка довольно хорошо. Если нет, поищите в Google проблемы с GRE MTU, и вы найдете массу информации.
PPP через SSH возможно?
Этот маленький руководство по проходке туннелей может помочь вам выбрать правильный.