|
|
ru.unix.bsd- RU.UNIX.BSD ------------------------------------------------------------------ From : Valentin Davydov 2:5020/400 11 Dec 2006 11:32:59 To : Vadim Goncharov Subject : Re: расщепить на несколько хостов --------------------------------------------------------------------------------
> From: Vadim Goncharov <vadimnuclight@tpu.ru>
> Date: Fri, 8 Dec 2006 16:16:18 +0000 (UTC)
>
> >>Есть хост А и некий сервер Б. Софтина на хосте А хочет сделать множество
> >>подключений к серверу Б на порт определенного сервиса, но у сервиса вшит
> >>низкий лимит на одновременное количество TCP-соединений с одного IP-адреса.
> >>Хочется странного: прозрачно для хостов А и Б, представить для сервера Б
> >>соединения приходящими с разных (фэйковых) IP-адресов (роутинг
> >>обеспечить можно). Hо не представляю, как.
> VD> Совсем-совсем прозрачно? Hельзя ли, скажем, софтине велеть, чтобы она не
> VD> на Б ходила, а на (пусть тот же порт на) А?
>
>Можно, конечно, сменить ей адрес и порт, забыл написать (просто он один,
>а не несколько).
>
> VD> А на хосту А на этот порт
> VD> повесить tcp-proxy, слепленный жвачкой из inetd, netcat, bounce и т.д.
> VD> и умеющий всё что ни попадя, в том числе и src ip round-robin.
>
>Хм, а вот тут поподробнее - как это будет выглядеть? Эти src ip таки
>придется алиасами вешать или оно (кстати, кто из связки?) умеет
>raw-сокеты?
Берёшь сетку, скажем, 10.40/16. Пишешь на сервере Б роутинг на эту сетку
так, чтобы он доходил до хоста А. Затем на хосту А ставишь все 65536 адресов
из этой сетки на lo0 алиасами (с маской 32, разумеется). Пишешь в inetd.conf
слушать тот порт, на который будет ходить твоя софтина, и запускать на каждое
соединение примерно такой скрипт:
#!/bin/sh
exec nc -s 10.40.$(sockstat -4 -c |\
awk "\$3==$$&&\$4==0{gsub(\".*:\",\"\",\$7);
print int(\$7/256) \".\" \$7%256}"\
) $Б $порт_сервера
Там ещё могут быть всякие тонкости, связанные с ограничениями количества
одновременных соединений в inetd, корректностью закрытия tcp-соединений
клиентом и/или сервером, environmentом запускаемых из скрипта команд, но
при должной аккуратности всё это более-менее тривиально настраивается.
Вал. Дав.
--- ifmail v.2.15dev5.3
* Origin: Demos online service (2:5020/400)
Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.unix.bsd/65777816ee25.html, оценка из 5, голосов 10
|