Dante на нескольких шлюзах в подсети

У меня два шлюза в моей подсети. 192.168.1.2 - основной 192.168.1.1 - вторичный (да, это не ошибка)

Итак, я использую 192.168.1.2 везде в качестве маршрута по умолчанию

Можно ли настроить danted, чтобы он перенаправлял исходящие соединения на вторичный шлюз (192.168.1.1) а основная система будет использовать главный шлюз? Или мне нужно сделать некоторые настройки с помощью iptables для этого?

Другое возможное решение - создать контейнер lxc с другим сетевым стеком, но я пытаюсь достичь той же цели на rpi с небольшим объемом оперативной памяти и без подобных избыточных решений .

Мне интересно, поддерживает ли он это из коробки, или, может быть, я могу разделить сетевой стек без какой-либо виртуализации? (возможно, создайте виртуальный интерфейс с другим шлюзом, а затем передайте этот вторичный интерфейс в danted)

Спасибо

-1
задан 7 July 2019 в 00:15
1 ответ

Итак, мой главный шлюз на этой машине - 192.168.1.2. Я не хочу перенаправлять весь трафик от конкретного пользователя через другой шлюз 192.168.1.1

Создание нового пользователя, который будет перенаправлен на другой шлюз

useradd -m proxy

Добавление новой таблицы маршрутизации

echo "201     gw1" >> /etc/iproute2/rt_tables

добавление правила IP, чтобы все помеченные пакеты переходили в новую таблицу маршрутизации

ip rule add fwmark 0x1 table gw1
ip route add default via 192.168.1.1 dev eth0 table gw1

, помечая все пакеты от прокси-сервера пользователя (и позволяя нашим подсети для связи без перенаправления)

iptables -A OUTPUT -t mangle -o eth0 ! -d 192.168.1.0/24 -m owner --uid-owner proxy -j MARK --set-mark 1

Таким образом, пользовательский прокси будет использовать отдельную таблицу маршрутизации

теперь весь IP-трафик работает нормально, но DNS-запросы не работают

curl -H "Host: ifconfig.me" 216.239.32.21

DNS-запросы не работают, потому что он пытается использовать 127.0 .0.1: 53, который маршрутизируется через главный шлюз

, теперь перенаправляет также трафик dns на тот же шлюз, не позволяя ему касаться 127.0.0.1:53

iptables -t nat -A OUTPUT -m owner --uid-owner proxy -p udp --dport 53 -j DNAT --to 192.168.1.1:53
iptables -t nat -A OUTPUT -m owner --uid-owner proxy -p tcp --dport 53 -j DNAT --to 192.168.1.1:53

. Вы также можете указать 8.8.8.8, и он будет пропущен через 192.168. 1.1, основная идея состоит в том, чтобы убрать его с локального кэширующего DNS-сервера

, теперь DNS-запросы маршрутизируются нормально, вы можете проверить это с помощью сниффера, однако dig по-прежнему показывает DNS-серверы из шлюза по умолчанию

curl ifconfig.me

, делающего запрос (или любое другое приложение) чтобы использовать эти правила, запустив его как прокси-пользователя в date.conf

#user.privileged: root
user.notprivileged: proxy
#user.libwrap: libwrap

, и теперь вы можете добавить строки ip rule, ip route и iptables на rc.local и укажите в браузере danted socks server. Весь исходящий трафик будет направлен на шлюз 192.168.1.1

0
ответ дан 5 December 2019 в 20:16

Теги

Похожие вопросы