LINUX.ORG.RU
ФорумAdmin

Туннель между двумя компьютерами за двумя NAT-ами


0

1

Здрасьте все.

Пытаюсь построить такую вот загадочную штуку. Два компьютера, каждый за своим NAT-ом, через интернет. Нужен IP-туннель. К роутерам-натам доступ есть, их можно настраивать, пробрасывать порты и т.д. в пределах их возможностей (может быть мыльницей). Решение, в принципе есть, хочу ещё вариантов. Шифрование не только не нужно, но даже вредно, т.к. создает дополнительную нагрузку и задержки, в то время как передаваемая информация уже защищена на другом уровне.

Вариант 1 - OpenVPN. Со стороны сервера пробрасываем нужный порт UDP через NAT на сервер, остальное - дело техники. Не очень нравится тем, что оно исключительно user-space. Хотелось бы любых дополнительных задержек избежать по возможности. Опять же не очень понял можно ли его без шифрования запустить.

Вариант 2 - PPTP. Тоже решаемо пробросом портов на стороне сервера, и если роутеры достаточно умные, чтобы нормально пропустить GRE. При использовании accel-ppp оно даже ядерное. Но загвоздка в том, что pptp с любой стороны может понадобиться для других целей, поэтому занимать порт 1728 не желательно, а как его настроить на другой управляющий порт, я не нашёл. С шифрованием здесь хорошо - можно не использовать.

Хотелось бы ещё вариантов. Идеальным вариантом выглядел бы простой GRE-туннель без шифрования, но не соображу как его пробросить в такой схеме.

Если тебе нужны только определённые порты просто пробрось их роутерами друг на друга и всё.

ziemin ★★
()

Хотелось бы любых дополнительных задержек избежать по возможности

Задержки на переключение контекста существуют в грецком орехе под черепной крышкой, поскольку они пренебрежимо малы на фоне латентности двух раутеров и каналов связи по дороге.

no-dashi ★★★★★
()

если роутеры достаточно умные, чтобы нормально пропустить GRE

Шифрование не только не нужно, но даже вредно

Дак это и есть чистый GRE без всяких pptp. Ещё есть ip-ip, тоже чистый тунель без шифрации.

mky ★★★★★
()

К роутерам-натам доступ есть, их можно настраивать, пробрасывать порты и т.д. в пределах их возможностей (может быть мыльницей).

PPTP не подойдет, там используется GRE, пробросить который не всякая мыльница осилит. Смотри в сторону OpenVPN, vtun и подобного софта, которые используют один или несколько TCP/UDP портов

Pinkbyte ★★★★★
()
Последнее исправление: Pinkbyte (всего исправлений: 2)
Ответ на: комментарий от Pinkbyte

PPTP не подойдет, там используется GRE, пробросить который не всякая мыльница осилит

Проброс GRE в комплекте с PPTP мыльницы обычно осиливают, но вопрос не в этом, а в том, что PPTP желательно не занимать для этих целей, т.к. управляющий порт там один. Ну про OpenVPN я писал. Правда вот говорят, что userspace - не очень большой недостаток.

shamus24
() автор топика

Можно запустить OpenVPN без шифрования.

Хотелось бы любых дополнительных задержек избежать по возможности.

LOL. У тя какая латентность между самими хостами? Прокинь порты для ICMP и проверь. Думаешь, OpenVPN без шифрования ощутимо испортит картину?

Chaser_Andrey ★★★★★
()
Ответ на: комментарий от Chaser_Andrey

У тя какая латентность между самими хостами?

Разная бывает. Это концепт, предполагается использовать как в хороших условиях, так и не очень. Хочется, чтобы в хороших условиях работало хорошо.

Вот пример возможного соединения через PPTP, провайдер один, интернет быстрый с обеих сторон - почти что локалка

Pinging 192.168.205.6 with 32 bytes of data:

Reply from 192.168.205.6: bytes=32 time=2ms TTL=127 Reply from 192.168.205.6: bytes=32 time=1ms TTL=127 Reply from 192.168.205.6: bytes=32 time=2ms TTL=127 Reply from 192.168.205.6: bytes=32 time=1ms TTL=127

А вот обмен между другими двумя точками. Здесь с одной стороны ADSL, но не думаю, что на этом возможно будет работать

Обмен пакетами с 10.0.0.7 по с 32 байтами данных: Ответ от 10.0.0.7: число байт=32 время=69мс TTL=127 Ответ от 10.0.0.7: число байт=32 время=68мс TTL=127 Ответ от 10.0.0.7: число байт=32 время=67мс TTL=127 Ответ от 10.0.0.7: число байт=32 время=65мс TTL=127

shamus24
() автор топика
Ответ на: комментарий от shamus24

69 миллисекунд - это очень, очень хорошо. Говорю как человек, державший VPN-туннель на OpenVPN с средним временем отклика ~500-600 мс

Pinkbyte ★★★★★
()
Ответ на: комментарий от shamus24

PPTP желательно не занимать

А чего тут такого. Если потом может возникнуть потребность пробросить pptp на _другую_ машину, то тогда сейчас на НАТе, за которым «клиент» меняй порт в уходящих пакетах на нестандартный, а на НАТе, за которым сервер - просовывай этот нестандартный порт на порт 1723 «сервера».

thesis ★★★★★
()
Последнее исправление: thesis (всего исправлений: 1)
Ответ на: комментарий от Deleted

Еще, говорят, есть тимвьюеры и хамачи для этого.

anonymous
()

Попробуйте простой ipip туннель:

ip tunnel add mode ipip remote <remote address> local <local address>
sudo ip addr add local 10.5.5.1 peer 10.5.5.2 dev tunl0
sudo ip link set up dev tunl0

На другой стороне аналогично (local и peer адреса, конечно, поменять местами).

На роутерах пробросить протокол ipip (4).

VovanE
()
Ответ на: комментарий от anonymous

А с чего вы взяли, что

у него на роутерах приватные ip

VovanE
()
Ответ на: комментарий от VovanE

Поправка:

ip tunnel add tunl1 mode ipip remote <remote address> local <local address>
sudo ip addr add local 10.5.5.1 peer 10.5.5.2 dev tunl1
sudo ip link set up dev tunl1
VovanE
()
Ответ на: комментарий от VovanE

На роутерах пробросить протокол ipip (4)

Скептически отношусь к возможности настроить mapping для ip-протокола на любой мыльнице. На парочке своих посмотрел - нет таких функций. Поэтому сразу и написал, что не представляю как это сделать. Если одна из сторон смотрит напрямую в интернет, то задача решается, но я сейчас ищу универсальный вариант.

shamus24
() автор топика
Ответ на: комментарий от shamus24

В общем, остановился всё-таки на openvpn. Всем откликнувшимся большое спасибо.

shamus24
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.