Назад | Перейти на главную страницу

Туннелирование портов по разным маршрутам без ведома местных программ

Мне нужно настроить следующую схему:

Вероятно, это можно смоделировать с помощью haproxy и openvpn, но подключение openvpn слишком медленное для быстрых коммутаторов, а настройка слишком сложна только для одной службы (скажем, порта tcp).

[-Это похоже на туннелирование порта-] и локальной клиентской программе на server1 не нужно повторно подключаться (или создавать новое соединение) к серверной программе на server2, когда что-то происходит между server1 и server2

Может ли кто-нибудь посоветовать мне такую ​​программу tcp-proxy-reroute под linux?

Изменить: я не имел в виду, что мне нужно сохранить сеанс tcp или около того.

Мне нужно что-то вроде haproxy (работает на 7 слое),


Вот в чем суть произвольных или общих программ Linux ... Они не имеют характерных черт ...

Вам нужна сеть прикладного уровня [уровень 7], но на основе общей программы / протокола. http://tools.ietf.org/html/rfc3768 (RFC 3768 -

Добавьте LVS, и вдруг вы снова окажетесь на HAProxy. Чтобы сделать это на седьмом уровне, вам нужно будет написать свой собственный сервер-оболочку для:

  1. принимать все подключения на передней панели
  2. Следите за списком доступных серверов / маршрутов на бэкэнде
  3. прямой трафик через активный сервер / маршрут

Ваш вопрос ... сложный ... Но я считаю, что это потому, что вы делаете много предположений. Скорее всего, VPN - хороший способ усложнить ситуацию до такой степени, что вы никогда не заставите его работать. Если вы ТОЧНО сообщите нам, что вам нужно сделать, мы мощь быть в состоянии помочь направить вас в правильном направлении.

Невозможно создать такой прокси с TCP, если исходящие IP-адреса на серверах 2 и 3 разные.

Это возможно, если у вас есть контроль над своими маршрутами и вы можете использовать метрики маршрута, OSPF или что-то подобное для автоматической маршрутизации пакетов вокруг плохих соединений, если NAT не задействован. Если задействован NAT, вероятно, есть менее сложные решения, например, научить вашего клиента повторно подключаться при ошибке.

Если он действительно должен быть разработан таким образом, вы можете использовать anycast или аварийное переключение, чтобы позволить обоим серверам 2 и 3 иметь один и тот же исходящий IP-адрес, но без более подробной информации ваш вариант использования не похож на то, что вы бы иметь такую ​​возможность.

Это можно сделать при следующей настройке:

  1. частная сеть с openvpn + haproxy (в режиме tcp) на двух пограничных серверах и только haproxy на промежуточных серверах.
  2. каждый openvpn подключается локально к haproxy с конфигурацией: «один нормальный сервер и один резервный сервер», haproxy выполняет проверку, какой сервер следует использовать.
  3. проверка показывает, что haproxy должен использовать резервную копию, поэтому haproxy переключает соединение на промежуточный сервер. Соединение разорвано.
  4. происходит немедленное переподключение openvpn - но на этот раз tcp-соединение будет "перенаправлено" от резервного канала edge-haproxy-> к мидл-haproxy, который, в свою очередь, будет прокси-сервером ко второму edge-haproxy, с которым второй край openvpn достигнуто. Обратите внимание, что openvpn не знает, что на маршруте есть три хапрокси.
  5. частные адреса, находящиеся на другой стороне, временно недоступны, поэтому между установленными соединениями приложений на обеих сторонах возникает тайм-аут.
  6. openvpn снова устанавливает соединение, частная сеть снова работает, все частные адреса доступны, приложения на обеих сторонах могут восстанавливаться после тайм-аута.
  7. Повторное подключение к приложениям уровня 7 с обеих сторон не выполняется. Потеряны некоторые пакеты, что на некоторое время вызывает повторную передачу в туннельной сети, но в конце концов все в порядке.

Вы когда-нибудь пользовались vpn? Вы подключаете свой компьютер к серверу vpn, затем вы находитесь в своей корпоративной частной сети, затем вы используете ssh на своем рабочем компьютере, если подключение к Интернету прерывается на минуту, vpn пытается повторно подключиться, но ssh повторно передает в течение времени ожидания период. Подключение к Интернету устанавливается через минуту, vpn снова строит туннель, ssh продолжается, без необходимости повторного подключения (в конечном итоге повторные передачи будут успешными, прежде чем произойдет тайм-аут). Это тот эффект, который мне нужен, но туннель должен проходить через промежуточный сервер, потому что на какое-то время у него улучшенная связь. Это можно сделать, если весь TCP-трафик передается через хапрокси, говорящие друг с другом. Но я думаю, что эта настройка очень сложна, и openvpn (или туннели) медленные при повторном подключении. Обратите внимание, что haproxy - это приложение - http://haproxy.1wt.eu/ , который имеет режим tcp - очень похожий по функциональности на http-прокси.