Соединение сервер-сервер :)
От: Bill Baklushi СССР  
Дата: 21.10.21 09:00
Оценка: 9 (1) -1
Приветствую.

Поработаю немного Эйнстоком Файром. Не смейтесь. Предположим, есть сетевая хрень с более-менее симметричным протоколом (по TCP).

Можно ли соединить два сервера друг с другом (UPD3, по TCP напрямую)? Например, послать SYN-пакет одному серверу от имени второго?
Вернее послать-то можно, но даст ли это возможность соединения?

Или например, использовать расшаренные сокеты?

А то надо городить лишний агент-посредник, перебрасывающий трафик между двумя серверами — не охота, да и лишнее звено...
(UPD2 — советуют socat).

UPD1. Ось — Windows. Желательна некоторая совместимость с Linux.
Отредактировано 21.10.2021 9:41 Bill Baklushi . Предыдущая версия . Еще …
Отредактировано 21.10.2021 9:31 Bill Baklushi . Предыдущая версия .
Отредактировано 21.10.2021 9:26 Bill Baklushi . Предыдущая версия .
Re: Соединение сервер-сервер :)
От: wildwind Россия  
Дата: 21.10.21 09:10
Оценка:
Здравствуйте, Bill Baklushi, Вы писали:

BB>Поработаю немного Эйнстоком Файром. Не смейтесь. Предположим, есть сетевая хрень с более-менее симметричным протоколом (по TCP).


Лучше побудь самим собой и сформулируй задачу внятно, в технических терминах.
Re: Соединение сервер-сервер :)
От: ononim  
Дата: 21.10.21 09:15
Оценка: 3 (1)
BB>А то надо городить лишний агент, соединяющий два сервера — не охота
на socat'е такой агент можно сделать
Как много веселых ребят, и все делают велосипед...
Re[2]: Соединение сервер-сервер :)
От: Bill Baklushi СССР  
Дата: 21.10.21 09:23
Оценка:
wildwind:

BB>>Поработаю немного Эйнстоком Файром. Не смейтесь. Предположим, есть сетевая хрень с более-менее симметричным протоколом (по TCP).

W>Лучше побудь самим собой и сформулируй задачу внятно, в технических терминах.

Вроде сформулировал, что непонятно?
Немного переформулировал. Сейчас понятнее?
Отредактировано 21.10.2021 9:43 Bill Baklushi . Предыдущая версия .
Re: Соединение сервер-сервер :)
От: netch80 Украина http://netch80.dreamwidth.org/
Дата: 21.10.21 10:13
Оценка: 3 (1)
Здравствуйте, Bill Baklushi, Вы писали:

BB>Можно ли соединить два сервера друг с другом (UPD3, по TCP напрямую)? Например, послать SYN-пакет одному серверу от имени второго?

BB>Вернее послать-то можно, но даст ли это возможность соединения?

Основное что защищает обычный TCP от таких сторонних участников — рандомизация sequence numbers.
Если вы можете предсказать, какой номер выдаст другая сторона, или заставить её это сделать — считайте, соединение у вас в кармане.

BB>Или например, использовать расшаренные сокеты?


В каком смысле?

BB>А то надо городить лишний агент-посредник, перебрасывающий трафик между двумя серверами — не охота, да и лишнее звено...

BB>(UPD2 — советуют socat).

Ну да, какой-то прокси тут почти неизбежен, если не чудить с прямым доступом в ядро или эмуляцией пакетов соединения с обеих сторон.

BB>UPD1. Ось — Windows. Желательна некоторая совместимость с Linux.


Ядерный хакер с умением обоих стеков уже есть?
The God is real, unless declared integer.
Re[2]: Соединение сервер-сервер :)
От: Bill Baklushi СССР  
Дата: 21.10.21 10:18
Оценка:
ononim:

BB>>А то надо городить лишний агент, соединяющий два сервера — не охота

O>на socat'е такой агент можно сделать

А без агента никак? Чтобы напрямую?
Re[3]: Соединение сервер-сервер :)
От: vsb Казахстан  
Дата: 21.10.21 10:24
Оценка:
Здравствуйте, Bill Baklushi, Вы писали:

BB>А без агента никак? Чтобы напрямую?


Тебе надо получить сетевой пакет из сетевого стека ОС, инкапсулировать IP-пакет в свой протокол на одной стороне, переслать данные через свой протокол, принять их на другой стороне, вытащить IP-пакет и заслать в сетевой стек ОС, чтобы дальше она уже разбиралась с ним.

Часть, отвечающая за взаимодействие с ОС, реализуется через tun-устройство (в Linux). Часть, которая будет инкапсулировать/вытаскивать IP-пакет в твоей протокол, конечно, тебе надо писать самому.

В Windows есть сторонние драйверы, создающие tun-устройство. Я бы посмотрел в первую очередь в сторону wireguard, в нём этот драйвер должен быть.

Возможно я не до конца понял твой вопрос. Может быть тебе хватит банального OpenVPN. Он умеет работать поверх TCP.
Отредактировано 21.10.2021 10:27 vsb . Предыдущая версия . Еще …
Отредактировано 21.10.2021 10:27 vsb . Предыдущая версия .
Отредактировано 21.10.2021 10:25 vsb . Предыдущая версия .
Re: Соединение сервер-сервер :)
От: Kernan Ниоткуда https://rsdn.ru/forum/flame.politics/
Дата: 21.10.21 10:28
Оценка:
Здравствуйте, Bill Baklushi, Вы писали:

BB>UPD1. Ось — Windows. Желательна некоторая совместимость с Linux.

Возможно только под линуксом, вроде ethernet injection называется. Занимался подобными штуками чтобы рвать SCTP соединения. Тебе достаточно договорится в соответствии с процедурой TCP и данные можно посылать. Наверное, есть какие-то драйвера и утилиты которые выкидывают TCP стек в user-space после чего можно шаманить над трафиком.
Sic luceat lux!
Re[3]: Соединение сервер-сервер :)
От: ononim  
Дата: 21.10.21 11:57
Оценка:
BB>>>А то надо городить лишний агент, соединяющий два сервера — не охота
O>>на socat'е такой агент можно сделать
BB>А без агента никак? Чтобы напрямую?
Скорее всего можно чтото нахимичить с помощью iptables и BPF на одном из серверов, но это слишком сильная магия, тут точно не скажу.
Как много веселых ребят, и все делают велосипед...
Re[3]: Соединение сервер-сервер :)
От: wildwind Россия  
Дата: 22.10.21 16:43
Оценка: +1
Здравствуйте, Bill Baklushi, Вы писали:

BB>Немного переформулировал. Сейчас понятнее?


Нет. Прежде всего непонятна проблема, которую решаешь. Сейчас для меня она звучит как "Хочу с одного хоста соединиться с другим, но что-то(?) мешает. Нужен какой-то посредник."

Хотя, это наверное только я такой тугой, т.к. не сетевик.
Re: Соединение сервер-сервер :)
От: Mr.Delphist  
Дата: 25.10.21 14:59
Оценка:
Здравствуйте, Bill Baklushi, Вы писали:

BB>Можно ли соединить два сервера друг с другом (UPD3, по TCP напрямую)? Например, послать SYN-пакет одному серверу от имени второго?

BB>Вернее послать-то можно, но даст ли это возможность соединения?

Именно так соединения и устанавливаются.

BB>А то надо городить лишний агент-посредник, перебрасывающий трафик между двумя серверами — не охота, да и лишнее звено...

BB>(UPD2 — советуют socat).

Может быть, на Ваших серверах есть запрет исходящих соединений? Т.е. принять коннект от клиента он может, а вот сам куда-то постучать — нет. Обычно так делают, чтобы уменьшить последствия от взлома, чтобы скомпрометированный сервер не стал атаковать другие сетевые узлы. Тогда неизбежно нужен посредник за пределами серверного периметра.
Re: Соединение сервер-сервер :)
От: Pzz Россия https://github.com/alexpevzner
Дата: 25.10.21 17:01
Оценка:
Здравствуйте, Bill Baklushi, Вы писали:

BB>Можно ли соединить два сервера друг с другом (UPD3, по TCP напрямую)? Например, послать SYN-пакет одному серверу от имени второго?

BB>Вернее послать-то можно, но даст ли это возможность соединения?

Можно. Но вероятно, придется покрутить настройки firewall'а.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.