Перенаправление трафика

Обсуждение настройки и работы сервисов, резервирования, сетевых настроек и вопросов безопасности ОС.

Модератор: SLEDopit

Ответить
Аватара пользователя
serg_sk
Бывший модератор
Сообщения: 2749
Статус: <3 Anime
ОС: Gentoo Linux <3
Контактная информация:

Перенаправление трафика

Сообщение serg_sk »

Приветствую!

Есть ubuntu server и несколько машин в локалке. Настраиваю redsocks. Нужно чтобы каждая машина в локалке бегала через свою сокс5 прокси.
В настрйоках redsocks можно указать разные порты для разных машин. TCP трафик я заворачиваю как и нужно. Тут все работает. Есть проблема с dns запросами.
dns в redsocks бегает через tcpdns.

Код: Выделить всё

redsocks {
        local_ip = 0.0.0.0;
        local_port = 12345;
        ip = xxx.xxx.xxx.xxx;
        port = 5050;
        type = socks5;
        autoproxy = 0;
        timeout = 10;
        // login = "foobar";// field 'login' is reused as encryption
                                           // method of shadowsocks
        // password = "baz";
}

redsocks {
        local_ip = 0.0.0.0;
        local_port = 12346;
        ip = xxx.xxx.xxx.xxx;
        port = 8000;
        type = socks5;
        autoproxy = 0;
        timeout = 10;
        login = "xxxx";// field 'login' is reused as encryption
                                           // method of shadowsocks
        password = "xxxx";
}
tcpdns {
        // Transform UDP DNS requests into TCP DNS requests.
        // You can also redirect connections to external TCP DNS server to
        // REDSOCKS transparent proxy via iptables.
        local_ip = 0.0.0.0; // Local server to act as DNS server
        local_port = 1153;      // UDP port to receive UDP DNS requests
        tcpdns1 = 8.8.4.4;      // DNS server that supports TCP DNS requests
        tcpdns2 = 8.8.8.8;      // DNS server that supports TCP DNS requests
        timeout = 4;            // Timeout value for TCP DNS requests
}


Следовательно udp трафик от локальных машин я заворачиваю на порт 1153. И дальше по tcp запрашивает DNS.

Код: Выделить всё

iptables -t nat -N REDSOCKS
iptables -t nat -N REDSOCKS_FILTER
iptables -t nat -I REDSOCKS_FILTER -o lo -j RETURN
iptables -t nat -A REDSOCKS_FILTER -d 10.0.0.0/8 -j RETURN
iptables -t nat -A REDSOCKS_FILTER -d 127.0.0.0/8 -j RETURN
iptables -t nat -A REDSOCKS_FILTER -d 169.254.0.0/16 -j RETURN
iptables -t nat -A REDSOCKS_FILTER -d 172.16.0.0/12 -j RETURN
iptables -t nat -A REDSOCKS_FILTER -d 192.168.0.0/16 -j RETURN
iptables -t nat -A REDSOCKS_FILTER -d 224.0.0.0/4 -j RETURN
iptables -t nat -A REDSOCKS_FILTER -d 240.0.0.0/4 -j RETURN
iptables -t nat -A REDSOCKS_FILTER -s 10.10.10.2 -j REDSOCKS    #тачка 1
iptables -t nat -A REDSOCKS_FILTER -s 10.10.10.3 -j REDSOCKS    #тачка 2


iptables -t nat -A REDSOCKS   -p tcp -s 10.10.10.2 -j REDIRECT --to-port 12345   #тачка 1
iptables -t nat -A REDSOCKS   -p tcp -s 10.10.10.3 -j REDIRECT --to-port 12346   #тачка 2
iptables -t nat -A OUTPUT     -p tcp -j REDSOCKS_FILTER
iptables -t nat -A PREROUTING -p tcp -j REDSOCKS_FILTER

iptables -t nat -A PREROUTING -p udp -s 10.10.10.2 --dport 53 -j REDIRECT --to-port 1153   #тачка 1
iptables -t nat -A PREROUTING -p udp -s 10.10.10.3 --dport 53 -j REDIRECT --to-port 1153   #тачка 2

При вот такой настройке фейрвола, он сервер запрашивает DNSы со своего внешнего IP.
А нужно завернуть запросы от сервера через порт 12345 или 12346 в зависимости от того с какой тачки пришел запрос.

Я так понимаю, что нужно смотреть в сторону MARK и CONNMARK, но пока попытки их настроить успехом не увенчались.
Не ждали?! А я приперся!
Помойка Gentoo'шника
-------
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 20752
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: Перенаправление трафика

Сообщение Bizdelnick »

serg_sk писал(а):
03.06.2017 11:17
нужно завернуть запросы через порт 12345 или 12346 в зависимости от того с какой тачки пришел запрос.

Недопонял, что под этим подразумевается?
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
Аватара пользователя
serg_sk
Бывший модератор
Сообщения: 2749
Статус: <3 Anime
ОС: Gentoo Linux <3
Контактная информация:

Re: Перенаправление трафика

Сообщение serg_sk »

Есть dns запрос, например, от 10.10.10.2 он принимается сервером и заворачивается на 127.0.0.1:1153. Дальше сервер устанавливает соединение по TCP протоколу с 8.8.8.8:53.
Нужно этот TCP запрос завернуть на 127.0.0.1:12345.

А если dns запрос пришел с 10.10.10.3, то TCP запрос надо завернуть на 127.0.0.1:12346

Либо нужен другой костыль, чтобы пропустить и dns запросы через redsocks.:)
Не ждали?! А я приперся!
Помойка Gentoo'шника
-------
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 20752
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: Перенаправление трафика

Сообщение Bizdelnick »

То есть надо натить TCP-соединение, устанавливаемое сервером, в зависимости от того, откуда сервер перед этим получил UDP-запрос? Но ведь такой информации ни у кого, кроме самого сервера, нет. Это же не пересылка пакета и не одно соединение, файрвол такого не отследит. Разве что сервер умеет маркировать пакеты (dnsmasq, например, умеет, но насчёт resocks сильно сомневаюсь).
А заворачивать сразу исходный UDP-запрос не вариант?
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
Аватара пользователя
serg_sk
Бывший модератор
Сообщения: 2749
Статус: <3 Anime
ОС: Gentoo Linux <3
Контактная информация:

Re: Перенаправление трафика

Сообщение serg_sk »

А вот не работает почему-то заворачивание udp в редсокс.

Натить не надо. Ната на машине нет вообще. :)
Не ждали?! А я приперся!
Помойка Gentoo'шника
-------
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 20752
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: Перенаправление трафика

Сообщение Bizdelnick »

А, всё, понял, туплю. Но решения что-то не вижу. Надо думать.
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
Аватара пользователя
serg_sk
Бывший модератор
Сообщения: 2749
Статус: <3 Anime
ОС: Gentoo Linux <3
Контактная информация:

Re: Перенаправление трафика

Сообщение serg_sk »

Отож. Пока пускаю всех через один сокс5. Редирекчу запросы tcp53 от сервера на сокс. И тоже думаю как бы выпускать каждого через свой.
Не ждали?! А я приперся!
Помойка Gentoo'шника
-------
Спасибо сказали:
Institut
Сообщения: 281
ОС: mint

Re: Перенаправление трафика

Сообщение Institut »

Код: Выделить всё

redsocks {
        local_ip = 0.0.0.0;
        local_port = 12345;
        ip = xxx.xxx.xxx.xxx;
        port = 5050;
        type = socks5;
        autoproxy = 0;
        timeout = 10;
        // login = "foobar";// field 'login' is reused as encryption
                                           // method of shadowsocks
        // password = "baz";
}

redsocks {
        local_ip = 0.0.0.0;
        local_port = 12346;
        ip = xxx.xxx.xxx.xxx;
        port = 8000;
        type = socks5;
        autoproxy = 0;
        timeout = 10;
        login = "xxxx";// field 'login' is reused as encryption
                                           // method of shadowsocks
        password = "xxxx";
}
tcpdns {
        // Transform UDP DNS requests into TCP DNS requests.
        // You can also redirect connections to external TCP DNS server to
        // REDSOCKS transparent proxy via iptables.
        local_ip = 0.0.0.0; // Local server to act as DNS server
        local_port = 1153;      // UDP port to receive UDP DNS requests
        tcpdns1 = 8.8.4.4;      // DNS server that supports TCP DNS requests
        tcpdns2 = 8.8.8.8;      // DNS server that supports TCP DNS requests
        timeout = 4;            // Timeout value for TCP DNS requests
}


Код: Выделить всё

iptables -t nat -N REDSOCKS
iptables -t nat -N REDSOCKS_FILTER
iptables -t nat -I REDSOCKS_FILTER -o lo -j RETURN
iptables -t nat -A REDSOCKS_FILTER -d 10.0.0.0/8 -j RETURN
iptables -t nat -A REDSOCKS_FILTER -d 127.0.0.0/8 -j RETURN
iptables -t nat -A REDSOCKS_FILTER -d 169.254.0.0/16 -j RETURN
iptables -t nat -A REDSOCKS_FILTER -d 172.16.0.0/12 -j RETURN
iptables -t nat -A REDSOCKS_FILTER -d 192.168.0.0/16 -j RETURN
iptables -t nat -A REDSOCKS_FILTER -d 224.0.0.0/4 -j RETURN
iptables -t nat -A REDSOCKS_FILTER -d 240.0.0.0/4 -j RETURN
iptables -t nat -A REDSOCKS_FILTER -s 10.10.10.2 -j REDSOCKS    #тачка 1
iptables -t nat -A REDSOCKS_FILTER -s 10.10.10.3 -j REDSOCKS    #тачка 2


iptables -t nat -A REDSOCKS   -p tcp -s 10.10.10.2 -j REDIRECT --to-port 12345   #тачка 1
iptables -t nat -A REDSOCKS   -p tcp -s 10.10.10.3 -j REDIRECT --to-port 12346   #тачка 2
iptables -t nat -A OUTPUT     -p tcp -j REDSOCKS_FILTER
iptables -t nat -A PREROUTING -p tcp -j REDSOCKS_FILTER

iptables -t nat -A PREROUTING -p udp -s 10.10.10.2 --dport 53 -j REDIRECT --to-port 1153   #тачка 1
iptables -t nat -A PREROUTING -p udp -s 10.10.10.3 --dport 53 -j REDIRECT --to-port 1153   #тачка 2



Есть dns запрос, например, от 10.10.10.2 он принимается сервером и заворачивается на 127.0.0.1:1153. Дальше сервер устанавливает соединение по TCP протоколу с 8.8.8.8:53.
Нужно этот TCP запрос завернуть на 127.0.0.1:12345.

А если dns запрос пришел с 10.10.10.3, то TCP запрос надо завернуть на 127.0.0.1:12346


Можно попробовать перед правилом
iptables -t nat -A PREROUTING -p udp -s 10.10.10.2 --dport 53 -j REDIRECT --to-port 1153 #тачка 1
iptables -t nat -A PREROUTING -p udp -s 10.10.10.3 --dport 53 -j REDIRECT --to-port 1153 #тачка 2

создать два других
iptables -t nat -A PREROUTING -p udp -s 10.10.10.2 --dport 53 -j REDIRECT --to-port 12345
iptables -t nat -A PREROUTING -p udp -s 10.10.10.3 --dport 53 -j REDIRECT --to-port 12346

Но мне кажется, что незаработает, так как редсокс слушает определенный порт и потом.
Как Вы хотите завернуть запросы от разных IP адресов, если у Вас в редсокс указан один порт, который все равно, прокинет через указанные DNS?

Спасибо сказали:
Аватара пользователя
serg_sk
Бывший модератор
Сообщения: 2749
Статус: <3 Anime
ОС: Gentoo Linux <3
Контактная информация:

Re: Перенаправление трафика

Сообщение serg_sk »

Не заработает как минимум по двум причинам, т.к. коннекты идут от сервера и по tcp :)
Как Вы хотите завернуть запросы от разных IP адресов, если у Вас в редсокс указан один порт, который все равно, прокинет через указанные DNS?

Так в этом то и состоит вопрос по сути. Надо каким-то хитрым образом промаркировать пакеты, и на выходе, когда сервер будет устанавливать соединение с DNS сервером, завернуть этот пакет на прокси.
Не ждали?! А я приперся!
Помойка Gentoo'шника
-------
Спасибо сказали:
Ответить