LINUX.ORG.RU
ФорумAdmin

Как настроить VPN для некоторых IP-адресов при помощи iptables?

 , , , ,


0

3

Здравствуйте!

Теме блокировок вот уже лет десять, но она всё ещё бесит актуальна для меня. Без некоторых ресурсов мне просто некак зарабатывать деньги на хлебушек, а они всё ещё время от времени попадают в чёрные списки из-за другого сайта на хостинге. Обычно я с этим борюсь при помощи VPN-расширений для браузера, но они, как правило, перенаправляют весь трафик браузера на VPN, но не всем сайтам в моём браузере нужен VPN, а некоторые и не способны работать с забугорским VPN, особенно банк (сразу блокирует доступ и звонит «вас взломали из-за бугра») и локальные ресурсы. Да и некоторые сайты, которые требуют постоянно держать канал (телефония в первую очередь, хоть есть и другие) разрывают сессию из-за переключения на VPN и обратно, и требуют перезагрузки. А потом нагоняй от начальства «почему не на линии?». В последнее время сократить все эти неудобства помогает сервис Browsec VPN — бесплатное расширение, которое позволяет активировать VPN только на выбранном сайте, а на других оставить «как есть», но у него есть весомый недостаток — он может работать исключительно с одним сайтом за раз, а чтобы переключить VPN на другой сайт приходится вручную удалять прошлый и вводить новый каждое переключение. И тут я понял, что мой провайдер делает блокировки через «чёрный список IP-адресов»...

Короче говоря, провайдер мой выполняет блокировку просто по IP-адресам. Вот я и подумал нациганить где-то бесплатный VPN, например SSH-туннель, и настроить брандмауэр таким образом, чтобы запросы, направленные на IP-адреса из определённого списка, переводить на VPN, а всё остальное отправлять обычным образом. А как у счастливого владельца Linux Mint, у меня предустановлен iptables, вот и хочу сделать всё через него.

Я на 99.9% уверен, что идея моя отнюдь не нова и кто-то уже так делал. Но то ли мои запросы в гугл кривые, то ли никто не написал об этом нормальную статью. Если у вас найдётся статейка либо вы можете поделиться небольшой инструкцией, как сделать подобный перевод трафика к определённым IPшкам, буду весьма благодарен.



Последнее исправление: ShkiperDesna (всего исправлений: 1)

Идея ваша ненова, но совершенно не понятно, как она приходит людям в голову. Каждую неделю кто-то пытается настроить маршрутизацию с помощью iptables. Как у людей связываются эти два понятия мне не поняно.

Но, в общем, вам нужна маршрутизация, она же роутинг. Для каждого адреса из списка нужно прописать маршрут (ip route add) через VPN. Понятно, что делать это проще скриптом, главное чтоб список был.

например SSH-туннель

SSH-тунель это не VPN. Обычно под SSH-тунелем подразумевают socks5 прокси и браузеру отдельно указывают, что нужно работать через socks...

mky ★★★★★
()
Ответ на: комментарий от mky

Каждую неделю кто-то пытается настроить маршрутизацию с помощью iptables. Как у людей связываются эти два понятия мне не поняно.

Причины разные, в основном потому что фаервол — это действительно мощный инструмент, который позволяет разделять трафик, менять разные поля на пакетах и делать много других вещей. Вот и приходят мысли, мол для изменения поведения маршрутизации нужно конфигурить это в фаерволе.

Теперь, когда вы указали на это, становится понятно, что это излишне, и если VPN в общем рабочий, то в NAT и прочем нет необходимости, и в остальном это только вопрос таблицы маршрутизации. Спасибо.

SSH-тунель это не VPN

Понятно, буду дополнительно изучать этот вопрос.

ShkiperDesna
() автор топика

dnsmasq+ipset+iptables+iproute2

За подробностями - в соответствующие MAN-ы. Начать стоит с связки dnsmasq и ipset, дальше будет проще(если уже умеешь работать с iptables/iproute2, иначе наоборот - будет жопа).

А, ну и соответственно клиенты в качестве dns должны использовать dnsmasq

На голом iptables, как уже заметил mky задача не решается в принципе, т.к. обычный firewall знать не знает ничего про доменные имена, он оперирует IP-адресами.

ИМХО проще присмотреться к решениям с PAC-файлами или браузерным расширениям с поддержкой списков ресурсов для прокси. Но это только если о браузерах речь.

Pinkbyte ★★★★★
()
Последнее исправление: Pinkbyte (всего исправлений: 2)

VPN только на выбранном сайте

вопрос таблицы маршрутизации

В таблицах маршрутизации IP, они знать не знают ничего про доменные имена. Вам нужно заставить работать прокси №1 в VPN интерфейс, а прокси №2 заставить переадресовывать запросы к выбранным сайтам в прокси №1. И указать в браузере прокси №2.

sinaps
()
Ответ на: комментарий от pekmop1024

Да, кстати, у ТС в Linux Mint нет никакого iptables. Там во все поля nftables, и соответственно nftset. А вместо iptables - враппер вокруг nftables. И так уже, наверное, лет пять.

pekmop1024 ★★★★★
()

Без настроек dnsmasq можно тоже, если есть публично доступные списки, как у Роскомнадзора. Однако, не факт, что ТС в России. Ну и список там на миллионы адресов, что тоже выглядит дикис оверхедом. Вряд ли ТС ходит больше, чем на пару десятков блокируемых доменов, вроде пейсбука/гитхаба/etc.

pekmop1024 ★★★★★
()
Последнее исправление: pekmop1024 (всего исправлений: 1)

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

Используйте разные браузеры.

anc ★★★★★
()
Ответ на: комментарий от pekmop1024

Прокси - костыль.

Костыль не костыль, но удобен для разовых задач в виде именно из этого браузера юзать проксю. Недостатков тоже хватает, но если робит, то почему нет?
Вариантов «не робит» тоже хватает, потому и говорю «если робит». Слишком много вариаций когда прокся не зайдёт.

anc ★★★★★
()

чтобы запросы, направленные на IP-адреса из определённого списка, переводить на VPN,

Если у тебя Gnome то можно было бы без выкрутасов настроить VPN через интерфейс NetworkManager, просто отметить галочку Use this connection only for resources on its network и добавить нужные IP в таблице Routes над чекбоксом.

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

anonymous
()
Ответ на: комментарий от sinaps

Ну если говорить про сервер, то это ОБС.

Острый Болевой Синдром от настройки прокси-сервера? 🤣

Ну «традиционно» ОБС == Одна бабушка сказала, но ваш вариант мне тоже нравится. :) Посмотрите сколько тем по поводу настройки того-же сквида. С дефолтными настройками его голой попой в инет выставлять какбэ ну совсем не айс.

anc ★★★★★
()

да, это распространенная тема. Как это делать на iptables - к сетевикам или см. маны. Это вроде как самый базовый юзкейс, проблем быть не должно.

У меня клиент vpn в роутере, маршруты там можно добавлять просто через веб-интерфейс. Чем я и пользуюсь, очень удобно.

Lrrr ★★★★★
()
Ответ на: комментарий от antech

через iptables стара как мир

В общей истории фаерволов iptables существуют не так долго, а патч -j ROUTE просуществовал ещё меньше и всё время был проблемным. В nftables его никто тащить не стал.

mky ★★★★★
()
Ответ на: комментарий от antech

Это я в 2004 году узнал про -j TEE, понаблюдал, поизучал патчи, баги из-за изменения в маршрутизирующем коде ядра. С каждой новой версией ядра могло что-то сломаться.

Удивился желанию разрабов патча TEE делать всё через одно место. Указывать в правиле iptables шлюз, вместо того, чтобы указывать в правиле iptbles маркер для копии пакета... Поэтому когда повявился -j ROUTE я особо не удвилялся.

mky ★★★★★
()
Ответ на: комментарий от anc

в инет выставлять

Это принимать подключения на входящий интерфейс из интернета. Ни о какой настройке удалённого сервера, принимающего соединения из интернета тут речь не шла.

И как вы с помощью него хотите…

Маршрутизировать запросы по доменным именам? См.как управлять перенаправлениями.

обходить блокировки?

VPN, shadowsocks, tor, Xray и т.д. и пр. и ни как не 3proxy или squid.

sinaps
()
Ответ на: комментарий от sinaps

Я потерял нить вашей мысли. Вы начали с:

Его настроить проще, нет других причин.

А теперь говорите про то что к нему таки нужно будет добавить:

VPN, shadowsocks, tor, Xray и т.д. и пр.

anc ★★★★★
()
Ответ на: комментарий от anc

Так тут суть проблемы:

и настроить брандмауэр таким образом, чтобы запросы, направленные на IP-адреса из определённого списка, переводить на VPN, а всё остальное отправлять обычным образом

Брандмауэр ни как. Лучше но сложнее

dnsmasq+ipset+iptables+iproute2

проще но хуже - локальный прокси сервер.

sinaps
()