Правила форума Гаранты форума
Размещение рекламы AMX-X компилятор

Здравствуйте, гость Вход | Регистрация

Наши новости:

14-дек
24-апр
10-апр
11-апр

3 страниц V   1 2 »

Делаем зеркало сервера на udp-proxy

Статус пользователя Fire
сообщение 7.7.2015, 22:14
Сообщение #1


Иконка группы

Стаж: 15 лет

Сообщений: 2201
Благодарностей: 2227
Полезность: 963

Собственно, для линей.
Качаем архив, извлекаем бинарник:
Прикрепленный файл  udp.zip ( 3,18 килобайт ) Кол-во скачиваний: 281


Закачиваем на вдс\сервер, делаем
Код
chmod +x udp

Запускаем:
Код
./udp LOCAL_IP LOCAL_PORT DST_IP DST_PORT

Пример:
Код
./udp 77.220.187.255 27015 91.218.255.255 27030


Код
quakestat -hls 77.220.187.255
ADDRESS           PLAYERS      MAP   RESPONSE TIME    NAME
77.220.187.255         0/10       cs_747      2 / 0  cstrike Новый сервер


Как на это все отреагируют бусты, не знаю.
Из минусов - на сервере игроки будут с IP Proxy
Из плюсов - можно сделать зеркало даже для сервера на хостинге.

Исходники:
Скрытый текст
Код
/* http://www.brokestream.com/udp_redirect.html
  Build: gcc -o udp_redirect udp_redirect.c
  udp_redirect.c
  Version 2013-05-30
  Copyright (C) 2007 Ivan Tikhonov
  2015 added multi-hosts
*/

#include <stdio.h>
#include <stdlib.h>
#include <sys/socket.h>
#include <netinet/in.h>

int bindsocket( char* ip, int port );
int main( int argc, char* argv[] );

int bindsocket( char* ip, int port ) {
    int fd;
    struct sockaddr_in addr;

    addr.sin_family = AF_INET;
    addr.sin_addr.s_addr = inet_addr( ip );
    addr.sin_port = htons( port );

    fd = socket( PF_INET, SOCK_DGRAM, IPPROTO_IP );
    if( -1 == bind( fd, (struct sockaddr*)&addr, sizeof( addr ) ) ) {
        fprintf( stderr, "Cannot bind address (%s:%d)\n", ip, port );
        exit( 1 );
    }

    return fd;
}

int main( int argc, char* argv[] ) {
    int i, listen, output;
    char *inip, *inpt, *srcip, *dstip, *dstpt;
    struct sockaddr_in src;
    struct sockaddr_in dst;
    struct sockaddr_in ret;

    if( 3 != argc && 5 != argc && 6 != argc ) {
        fprintf( stderr, "Usage: %s <listen-ip> <listen-port> [[source-ip] <destination-ip> <destination-port>]\n", argv[ 0 ] );
        exit( 1 );
    }

    i = 1;
    inip = argv[ i++ ];        /* 1 */
    inpt = argv[ i++ ];        /* 2 */
    if( 6 == argc )
        srcip = argv[ i++ ];    /* 3 */
    if( 3 != argc ) {
        dstip = argv[ i++ ];    /* 3 or 4 */
        dstpt = argv[ i++ ];    /* 4 or 5 */
    }
    
    listen = bindsocket( inip, atoi( inpt ) );
    if( 6 == argc ) {
        output = bindsocket( srcip, atoi( inpt ) );
    } else {
        output = listen;
    }

    if( 3 != argc ) {
        dst.sin_family = AF_INET;
        dst.sin_addr.s_addr = inet_addr( dstip );
        dst.sin_port = htons( atoi( dstpt ) );
    }
    ret.sin_addr.s_addr = 0;

    while( 1 ) {
        char buffer[65535];
        unsigned int size = sizeof( src );
        int length = recvfrom( listen, buffer, sizeof( buffer ), 0, (struct sockaddr*)&src, &size );
        if( length <= 0 )
            continue;

        if( 3 == argc ) {
            sendto( listen, buffer, length, 0, (struct sockaddr*)&src, size );
        } else if( ( src.sin_addr.s_addr == dst.sin_addr.s_addr ) && ( src.sin_port == dst.sin_port ) ) {
            if( ret.sin_addr.s_addr )
                   then return them to the original sender */
                sendto( output, buffer, length, 0, (struct sockaddr*)&ret, sizeof( ret ) );
        } else {
            sendto( output, buffer, length, 0, (struct sockaddr*)&dst, sizeof( dst ) );
            ret = src;
        }
    }
}


Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 21 раз
   Цитировать сообщение
Safety1st
сообщение 7.7.2015, 22:20
Сообщение #2
Стаж: 12 лет
Город: Moscow

Сообщений: 7228
Благодарностей: 8071
Полезность: 196

Цитата
Из минусов - на сервере игроки будут с IP Proxy

Огромный минус cray.gif
Ждём логическое продолжение: вторую статью smile.gif
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя ETO_BYLO_LETOM
сообщение 7.7.2015, 22:46
Сообщение #3


Иконка группы

Стаж: 12 лет
Город: Краснодар

Сообщений: 3391
Благодарностей: 4386
Полезность: 805

Нормально отреагируют , метод без потери реального ип игрока ещё бы )


😄
MasterServer.su прозрачнее чем твои окна дома
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Tet
сообщение 7.7.2015, 22:48
Сообщение #4


Стаж: 8 лет 10 месяцев

Сообщений: 269
Благодарностей: 265
Полезность: 278

Цитата(Safety1st @ 7.7.2015, 23:20) *
Огромный минус cray.gif

Как только вы придумаете (и выложите) способ идентификации реального ИП через прокси - так сразу.
Автору - зачет.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Fire
сообщение 7.7.2015, 22:49
Сообщение #5


Иконка группы

Стаж: 15 лет

Сообщений: 2201
Благодарностей: 2227
Полезность: 963

Попробую подумать в сторону "прозрачного" прокси, может что-то простое придумаю.

Цитата(Tet @ 7.7.2015, 23:48) *
Автору - зачет.

Ради приличия, все-же, замечу, что автор софтины не я, я просто немного дополнил код.


Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 2 раз
   + Цитировать сообщение
Статус пользователя tobin
сообщение 7.7.2015, 22:51
Сообщение #6
Стаж: 8 лет 9 месяцев

Сообщений: 218
Благодарностей: 53
Полезность: < 0

+ в карму
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Safety1st
сообщение 7.7.2015, 23:00
Сообщение #7
Стаж: 12 лет
Город: Moscow

Сообщений: 7228
Благодарностей: 8071
Полезность: 196

Цитата(Tet @ 7.7.2015, 23:48) *
Как только вы придумаете (и выложите) способ идентификации реального ИП через прокси - так сразу.

Проксирование ‒ не самоцель.
Методы прозрачной переброски ‒ пока непаханое поле на Форуме. Fire один из немногих, кто осилит. Я мотивировал smile.gif
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя ykpon
сообщение 7.7.2015, 23:08
Сообщение #8


Стаж: 10 лет

Сообщений: 328
Благодарностей: 200
Полезность: < 0

Цитата(Tet @ 8.7.2015, 1:48) *
Как только вы придумаете (и выложите) способ идентификации реального ИП через прокси - так сразу.
Автору - зачет.

Эм, придумать что? Велосипед? Гугли на тему прозрачного прокси.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 2 раз
   + Цитировать сообщение
Статус пользователя Tet
сообщение 7.7.2015, 23:14
Сообщение #9


Стаж: 8 лет 10 месяцев

Сообщений: 269
Благодарностей: 265
Полезность: 278

Цитата(Fire @ 7.7.2015, 23:49) *
Попробую подумать в сторону "прозрачного" прокси, может что-то простое придумаю.


Ради приличия, все-же, замечу, что автор софтины не я, я просто немного дополнил код.

Софтину видел давно на Хабре. Спасибо за интерпретацию для "серверодержателей кс"
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя mazdan
сообщение 7.7.2015, 23:27
Сообщение #10


Иконка группы

Стаж: 13 лет

Сообщений: 7566
Благодарностей: 5436
Полезность: 1305

Не удалось ссылку на сообщение скопировать
Цитата(ctapkom @ 12.5.2015, 16:54) *
не знаю насчет uproxy, очень сомневаюсь что тут софтовое решение поможет, к тому же, uproxy - только для UDP.

CLIENT (Server B):

/sbin/iptunnel add tun0 mode gre remote AAA.AAA.AAA.AAA local BBB.BBB.BBB.BBB ttl 225
/sbin/ifconfig tun0 10.0.0.2/24
/sbin/ifconfig tun0 up
/sbin/ifconfig tun0 pointopoint 10.0.0.1
/sbin/ifconfig tun0 multicast

echo "100 table0" >> /etc/iproute2/rt_tables

/sbin/ip route add 10.0.0.0/24 dev tun0 src 10.0.0.2 table table0
/sbin/ip route add table table0 default via 10.0.0.1 dev tun0
/sbin/ip rule add from 10.0.0.2 table table0
/sbin/ip rule add fwmark 2 table table0
/sbin/iptables -t nat -A PREROUTING -d 10.0.0.2 -j CONNMARK --set-mark 2
/sbin/iptables -t nat -A PREROUTING -d 10.0.0.2 -j DNAT --to-destination BBB.BBB.BBB.BBB
/sbin/iptables -t mangle -A OUTPUT -s BBB.BBB.BBB.BBB -j CONNMARK --restore-mark


SERVER (Server A)

/sbin/iptunnel add tun0 mode gre remote BBB.BBB.BBB.BBB local AAA.AAA.AAA.AAA ttl 225
/sbin/ifconfig tun0 10.0.0.1/24
/sbin/ifconfig tun0 up
/sbin/ifconfig tun0 pointopoint 10.0.0.2
/sbin/ifconfig tun0 multicast
/sbin/iptables -t nat -A PREROUTING -d AAA.AAA.AAA.AAA -j DNAT --to-destination 10.0.0.2

Где AAA.AAA.AAA.AAA - внешний IP сервера А (этот IP будет использован для подключения и проксирования на сервер B)
Где BBB.BBB.BBB.BBB - внешний IP сервера B (на котором, например, крутится игровой сервер на сервере B)



Не пишите мне в ЛС. Пишите на почту. В ЛС я пропускаю сообщения.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Fire
сообщение 7.7.2015, 23:38
Сообщение #11


Иконка группы

Стаж: 15 лет

Сообщений: 2201
Благодарностей: 2227
Полезность: 963

Цитата(mazdan @ 8.7.2015, 1:27) *
Не удалось ссылку на сообщение скопировать

Ну это скорее для тех, кто держит основной сервер на хостинге, там тебе туннель никто не сделает.


Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя mazdan
сообщение 7.7.2015, 23:50
Сообщение #12


Иконка группы

Стаж: 13 лет

Сообщений: 7566
Благодарностей: 5436
Полезность: 1305

Fire, да, это понятно, просто чтобы та полезная информация не пропала. Я просто до конца в итоге так и не доделал.
С проксей можно, конечно, пробовать айпиху выцепить реальную докинув информацию в какой-то примечательный пакет, который через прокси летит и на сервере считать (ну у меня была такая мысль) если суметь докинуть, то думаю и считать получится в итоге.


Не пишите мне в ЛС. Пишите на почту. В ЛС я пропускаю сообщения.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя ykpon
сообщение 8.7.2015, 0:40
Сообщение #13


Стаж: 10 лет

Сообщений: 328
Благодарностей: 200
Полезность: < 0

mazdan, а у меня чота нифига не запроксировало. :)
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Tet
сообщение 8.7.2015, 0:53
Сообщение #14


Стаж: 8 лет 10 месяцев

Сообщений: 269
Благодарностей: 265
Полезность: 278

Почему объединили темы "проксируем " и вторую часть статьи Fire в одну? Потерялся смысл.
Модераторы, посмотрите...

Отредактировал: Tet, - 8.7.2015, 0:54
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя ykpon
сообщение 8.7.2015, 1:01
Сообщение #15


Стаж: 10 лет

Сообщений: 328
Благодарностей: 200
Полезность: < 0

Цитата(Tet @ 8.7.2015, 3:53) *
Почему объединили темы "проксируем " и вторую часть статьи Fire в одну? Потерялся смысл.
Модераторы, посмотрите...

Смысл был в проксировании.
Все в этой ветке об этом.
Смысл не терялся.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя kasIIep
сообщение 8.7.2015, 5:22
Сообщение #16
Стаж: 15 лет

Сообщений: 333
Благодарностей: 88
Полезность: 209

Меценат Меценат

В чем соль зеркала? Как это повлияет на пинг?
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя georgeml
сообщение 8.7.2015, 5:46
Сообщение #17
Стаж: 10 лет

Сообщений: 1467
Благодарностей: 439
Полезность: 423

Цитата(kasIIep @ 8.7.2015, 6:22) *
В чем соль зеркала? Как это повлияет на пинг?

Serva4ok.ru (Пост #808304)
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя mazdan
сообщение 8.7.2015, 10:16
Сообщение #18


Иконка группы

Стаж: 13 лет

Сообщений: 7566
Благодарностей: 5436
Полезность: 1305

Цитата(ykpon @ 8.7.2015, 1:40) *
mazdan, а у меня чота нифига не запроксировало. :)
у меня по этой инструкции наполовину заработало ) но потом за ненадобностью не доделал.


Не пишите мне в ЛС. Пишите на почту. В ЛС я пропускаю сообщения.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя ykpon
сообщение 8.7.2015, 11:16
Сообщение #19


Стаж: 10 лет

Сообщений: 328
Благодарностей: 200
Полезность: < 0

Цитата(mazdan @ 8.7.2015, 13:16) *
у меня по этой инструкции наполовину заработало ) но потом за ненадобностью не доделал.

На половину? Как это? Правила применились, но трафик проксироваться не стал?))
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя mazdan
сообщение 8.7.2015, 11:20
Сообщение #20


Иконка группы

Стаж: 13 лет

Сообщений: 7566
Благодарностей: 5436
Полезность: 1305

ykpon, пакет пролетал через прокси до целевого сервера, но там уже (на целевом) где-то терялся.
Если отправлял напрямую с прокси на целевой сервер, то сервер отвечал успешно.
Вероятно что-то в iptables резало )


Не пишите мне в ЛС. Пишите на почту. В ЛС я пропускаю сообщения.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
3 страниц V   1 2 »
 
Ответить в данную темуНачать новую тему
 
0 пользователей и 1 гостей читают эту тему: