LINUX.ORG.RU

Как пустить трафик одной программы минуя vpn?

 , , ,


1

3

Что у меня есть:

Не очень понимаю, как у меня всё устроено, не изучал этот протокол, просто в сетевых подключениях добавил WireGuard VPN используя файлик с ключом, и у меня появились в сетевых подключениях кроме LAN, ещё пункт VPN и какой-то Io (соединение неизвестного типа) Но в трее если кликнуть по иконке сетей - я его (Io) не вижу и оно не мешается. Я просто каждый раз вручную включаю или выключаю тут VPN.

Я хочу:

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

как принудительно указать tixati использовать основное сетевое подключение LAN, а не то, что включено мною в трее.

P.S. может это можно сделать используя iptables? Это же сохраняется после перезагрузки? Но я в них полный ноль. Видел лишь пример указания прокси ( iptables -t nat -A PREROUTING -p tcp -m tcp --dport 80 -d 195.82.146.120/30 -j DNAT --to-destination 163.172.167.207:3128 источник ), но что делает эта команда представляю только в общих чератх и может ли помочь в моём случае не знаю.

★★★

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

Лучше пускать трафик одной программы через впн.
Например браузер. Для этого надо запустить проксисервер(например wireproxy) и в браузер установить фоксипрокси и включать только когда надо.

Bad_ptr ★★★★★
()
Последнее исправление: Bad_ptr (всего исправлений: 1)
Ответ на: комментарий от Bad_ptr

Спасибо, но я бы не хотел плодить лишние сущности, устанавливать и разбираться с проксями в каждом браузере. Хотелось бы без лишних сущностей просто указать tixati использовать физическое подключение напрямую, не использовать впн. Такое же возможно?

Но если скажите как запустить и настроить сервер прокси именно для моего подключения, спасибо возьму в копилку знаний.

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

Спасибо, но я бы не хотел плодить лишние сущности, устанавливать и разбираться с проксями в каждом браузере.

Насчёт foxyproxy рекомендую потыкать на досуге всё-таки - удобно разок по хостам накидать правил (в гуе) куда через что ходить и вообще потом забываешь про всякие переключения руками)

Но если скажите как запустить и настроить сервер прокси именно для моего подключения, спасибо возьму в копилку знаний.

Гугл подсказывает решение. На мой чисто нубский взгляд выглядит как то что надо, в частности настройка namespace. Но честно говоря как-то сложновато выходит, как по мне..)

frunobulax ★★★★
()

может это можно сделать используя iptables

iptables ничего не знают о конкретных программах. Им можно указать только что-то типа «запрос на этот адрес отправляй сюда» и т.п.

Для того чтобы рулить этим на уровне отдельных программ, в Linux есть сетевые пространства имен, network namespaces.

И вообще iptables давно устарели, вместо них надо использовать nftables.

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

Гугл подсказывает решение. На мой чисто нубский взгляд выглядит как то что надо, в частности настройка namespace. Но честно говоря как-то сложновато выходит, как по мне..)

естественно сложновато, потому что сустемд - это куча переусложненного говнокода, с которым даже мейнтейнеры не могут справиться. Вон, PR с поддержкой неймспейсов (после которого это видимо будет конфигурироваться парой строчек в конфигах) у них уже лет 5 висит, несмотря на горячую поддержку Пёттеринга.

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

А средствами системы так не указать игнор vpn?

Если приложение использует окружение как это принято в UNIX-like, то оно может (но не обязательно будет) поддерживать переменную HTTP_PROXY.

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

https://www.procustodibus.com/blog/2023/04/wireguard-netns-for-specific-apps/#disable-selectively

Очень огромное решение, я не вполне понял зачем столько всего, надо вчитываться (придётся с гугльтранслитом) И главное неясно это то или не то. Что-то подсказывает, что это безусловно интересно, но очень непонятно) Попробую почитать.

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

на уровне ядра линукс, всем рулением маршрутами трафика занимается подсистема netfilter. iptables - стандартный юзерспейсный интерфейс к этой подсистеме, написанный ее разработчиками. Потом, где-то через 10-15 лет, те же люди написали nftables - такой же как iptables, но лучше.

Профессиональные сисадмины-сетевики только ими и пользуются. Причем по большей части iptables а не nftables, потому что они его когда-то выучили и считают «работает - не трогай».

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

Понятно.

А вот статью как обычно дочитал до непонятного вообще.

Шаг 1 прост: мы создаём наш командный процесс в новом пространстве имён network путём добавления флага CLONE_NEWNET к clone:

int clone_flags = SIGCHLD | CLONE_NEWUTS | CLONE_NEWUSER | CLONE_NEWNS | CLONE_NEWNET;

или я тупой или там про ip-netns кончилось и вернулись к докеру. Я сделал всё что было выше, и даже начал понимать что это, но что делать дальше я хз. Пробую читать дальше, может вернутся к теме.

hikikomori ★★★
() автор топика

Занятно, что я вчера решил обратную задачу ровно для того, чтобы избавиться от проблем с торрентом и квн. Я пользуюсь ktorrent, у него есть настройка «сидеть на таком-то сетевом интерфейсе», но правила iptable всё равно, кажется, портят ему траффик из-за того, что кто-то из пиров сидит на IP, на которые слишком близко к другим IP.

Я отказался от правил iptable и пустил только трафик браузера через прокси, ходящий через конкретное соединение.

Пункт первый - не разрешать wireguard делать соединение маршрутом по умолчанию. Здесь есть нюансы, у меня настроена отдельная таблица маршрутизации и правило ip rule для переключения на неё, но разбирающийся человек мог бы настроить прямее.

Пункт второй - из пакета 3proxy запустить утилиту socks -i127.0.0.1 -e"$IP" -l -u где IP - это адрес сетевого интерфейса.

Третий пункт - создать файлик myproxy.pac с с одержимым типа

function FindProxyForURL(url, host) {
    if (shExpMatch(host, "*.googlevideo.com") ) {
        return "SOCKS5 127.0.0.1:1080";
    }
    return "DIRECT";
}

(расширить по вкусу).

Четвёртый - во всех нужных браузерах в настройках забить «URL автоматической настройки прокси» как file:///home/legolegs/blabla/myproxy.pac (для говнобраузеров типа edge есть нюанс). Утилиты типа curl и yt-dlp имеют свои способы назначения типа ALL_PROXY=socks5://127.0.0.1:1080 curl example.com

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

Что-то это какой-то другой метод, и не очень понятный для последовательного исполнения. Я уже разбираюсь с ip-netns, хотелсоь не бросать на полдороги и с ним разобраться. Из вашего описания я мало чего понял по всем пунктам.

Моё знакомство с wireguard ограничилось файлом с ключом, который мне дали и которым я добавил соединение, которое включаю, чтобы появился ютуб. Больше я про него ничего не знаю, не было погружающей статьи, разобраться. Поэтому: п1 - не знаю как. п2 - это создаёт прокси на адресе? если поставить пакет 3proxy. п3 - и куда этот файл сохранять и что с ним делать-то? тут ещё нужна поясняющая статья про 3proxy)) п4 - не очень понял, но это при исполненом п1.

Я с этим при наличии погружающих статей с примерами с удовольствием бы познакомился, но пркоси не хочу никакой подымать для моей цели это лишняя сущность. я хочу пустить трафик tixati через сетевой интерфейс enp3s0. А ютуб через впн. и желательно чтобы я их просто запускал напрямую без дополнительных движений.

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

Помогите с этими network namespace разобраться, как через них сделать?

Я прошёл по шагам в инструкции Глубокое погружение в Linux namespaces, часть 4

но на половине статьи инструкции для namespaces кончаются и там идёт писанина про докер, который мне нафиг не нужен.

Вот что мне дальше делать-то?

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

А как его установить и настроить по-русски есть мануал?

Мне кажется, там даже без знания английского всё понятно. Ты же как-то ухитряешься использовать Linux. Переводчиком воспользуйся, в конце концов.

Типа это будет прокси сервер подключаясь через который будет ютуб?

Типа того.

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

Я не могу пока растекаться мыслею. по древу, я ничего не пойму если буду всё на полпути бросать. Вот читаю но у меня уже мозги запекаться начали. Что это такое и как. Я пока хочу разобраться с методом пустить трафик в wireguard через network namespace. С этим помогите пожалуйста, а остальное после изучу обязательно но не всё сразу иначе каша.

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

Ну смотри сам. Я лично не знаю ничего про network namespaces и не хочу узнавать, с меня хватило раскуривания таблиц маршрутизации. Делай своим способом, а если не получится или не понравится резултат, то пингуй, расскажу свой сетап. Суть его проста: легковесный socks-прокси сервер единственный, кто ходит в инет через впн, а браузер ходит через прокси.

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

Берешь аналог этого скрипта для wg, где то он был https://github.com/slingamn/namespaced-openvpn

Пускаешь софт который надо в туннель через ip netns exec, остальное напрямую. Ну или наоборот. У тебя странные вопросы оче базовые, на которые даже дипсик ответит.

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

Я хз что с тобой не так, разнообразных вариантов куча в Гугле. Ты их пробовал? Почему?

https://gist.github.com/brauliobo/11c9cb69b3492fec6045684d5a38b5ee

https://www.procustodibus.com/blog/2023/04/wireguard-netns-for-specific-apps/

anonymous
()

я наоборот только браузер пускаю через прокси. у меня они все из flatpak. там в большинстве достаточно две переменные прописать http_proxy и https_proxy типа https_proxy=socks5://

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

Что мне на этой странице или где-то там смотреть? Как в сказке поди туда не знаю куда, принеси то, не знаю что? Пролистал страницу, очень интересно, но ничего не понятно.

Я по той статье, пока они не ливнули с темы namespaces всё сдела по их инструкции. но в запущенном баше

sudo ip netns exec coke bash

нет доступа в сеть.

хотя я успешно сделал всё по инструкции


# сетевое устройство virtual ethernet (или сокращённо veth)

# Создание пары veth (veth0 <=> veth1)
ip link add veth0 type veth peer name veth1

# Перемещение veth1 в новое пространство имён
$ ip link set veth1 netns coke

# В исходном пространстве имён - назначить IP и поднять интерфейс veth0
$ ip addr add 10.1.1.1/24 dev veth0
$ ip link set dev veth0 up

# В пространстве имён coke - назначить IP и поднять интерфейс veth1
ip addr add 10.1.1.2/24 dev veth1
ip link set dev veth1 up

# Посмотреть текущие настройки соединения устройства veth1:
ip addr show veth1

# прозвонить созданные интерфейсы:
ping 10.1.1.1
ping 10.1.1.2

Мне нужна нормальная инструкция на отдельном примере, чтобы понять что это такое, если я знал, что это такое, но я не знаю что это такое. На словах всё очень просто получается, особенно в глазах того, кто всё это и так умеет. А мне остаётся газлайт и самоблейминг что я тупой. Хорошо, я тупой, признаю себя ослом, так направьте меня лучом истины к решению.

Что-то нужно вроде этого сделать

sudo ip -n tixati route add default via 10.1.1.2

чтобы направить трафик в пространство tixati. Но я не понял как. Недостаточно информации и примеров. Ну не все такие умные, как вы.

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

Я весь день пробовал. Не знаю что не так. Быть тупым но стремиться к знаниям это подсудное преступление?

По ссылкам какие-то листинги и огромная простыня инструкции на англ. У меня просто мозг пухнет. Я один такое не осилю. Ты сможешь мне подсказать по ней?

upd: да я же читал её днём, пытался. там два метода описаны, но тяжело на англ, и тяжело понимаю что я делаю и зачем. я споткнулся на каком-то шаге перестало получаться возникли вопросы, на которые не у кого спрсоить ответа, ведь это так просто…

upd2: там многовложенная инструкция каждый шаг требует чтения ещё дополнительных статей не меньше этой, иначе ничего не понятно вообще. Я это только читать неделю буду если нервов и терпения хватит.

hikikomori ★★★
() автор топика
Последнее исправление: hikikomori (всего исправлений: 2)
Ответ на: комментарий от hikikomori

и вишенкой на торте вопрос - мне чтобы tixati пустить через это, нужно будет его через промежуточный скрипт а ля sudo ip netns exec tixati tixati запускать? если напрямую запустить, по имени приложения нельзя будет траффик направлять?

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

Попробовал. ..запустилось. А как проверить, что он взял именно нужный сетевой интерфейс но не взял с него и интерфейс прокси?

К сожалению не знаю,как в tixati посмотреть текущий ip. Но у меня подозрение, что он сейчас через vpn всё равно.

firejail --noprofile --net=enp3s0 tixati
firejail version 0.9.76

Parent pid 500724, child pid 500725

Interface        MAC                IP               Mask             Status
lo                                  127.0.0.1        255.0.0.0        UP    
                                    ::1
eth0-500724      b2:89:c9:20:6d:d0  192.168.1.91     255.255.255.0    UP    
                                    fe80::b089:c9ff:fe20:6dd0
Default gateway 192.168.1.1

Base filesystem installed in 0.05 ms
Child process initialized in 1126.31 ms

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

Ещё ИИ мне написал:

Ты запускаешь торрент-клиент Tixati в изолированной среде (firejail), без стандартного профиля, но с привязкой к конкретному сетевому интерфейсу enp3s0.

Вот не могут ли и тут таиться какие-либо подводные камни? Я вовсе не хочу изолировать tixati, я хочу чтобы он на впн не шёл и только.

hikikomori ★★★
() автор топика

P.S. может это можно сделать используя iptables?

Можно. Как уже написали, о приложениях iptables не знает. Но вот о gid/uid знает. Можно нужное приложение запускать под специальным пользователем, и уже для него правила писать.

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

Что я должен описать, бро?

firejail --noprofile --net=enp3s0 tixati

Какой у него на самом деле ip я хз, только по косвенным признакам. Но это не важно уже. что под впн, что так, а уже 2ю неделю у торрентов 404 идёт ошибка от трекера. Я сначала думал, это меня на впн банить начали, что траффик сжираю своими торрентами, а это глобальная шляпа оказывается…

hikikomori ★★★
() автор топика