Возникла потребность пустить большую часть домашнего трафика через OpenVPN-сервер, установленный в облаке амазона. Так как к сети подключены не только компьютеры, но и бытовые устройства на которые нельзя поставить клиент OpenVPN, предполагается купить роутер ZyXEL Keenetic Giga и поставить клиент туда.
При этом есть торренты, генерирующие чрезмерный трафик, за который амазон просит денег, а так же некоторые сайты, считающие посетителей с амазона ботами. Можно ли и как лучше всего сделать чтобы они работали в обход OpenVPN-клиента?
Все что удалось нагуглить касается в основном обратного процесса, т.е. организации доступа к роутеру и всему что за ним находится через OpenVPN…
Update: Меня бы также устроил вариант, когда OpenVPN работает на роутере по дефолту безо всякой фильтрации трафика, но для компов доступно прямое соединение. Т.е. если роутер может поддерживать одновременно два соединения и конкретному клиенту можно назначить любое из них в любой момент времени, это тоже было бы решением проблемы.
Вопрос не совсем в том как поставить OpenVPN, а как пустить через него только нужный трафик.
Лирическое отступление: Про причине кривых рук решил, что проще купить новый роутер где OpenVPN можно установить прямо на стоковую прошивку, хотя имеющийся TP-LINK 1043ND дружит с OpenWRT. К тому же кинетик решает некоторые другие проблемы тплинка (тормозной NAS, лаги IPTV и т.п.), которые есть на стоковой прошивке, поэтому за основу взят этот вариант.
Приходит в голову 2-а варианта, это либо cisco-рутер и PBR, либо linux с iptables с модулем ipp2p и маркировкой пакетов с отправлением их в обход OpenVPN. Плюс простая таблица маршрутов для «некоторые сайты, считающие посетителей с амазона ботами».
В принципе, если вспомнить про курящего кролика, то, думаю, 2-й вариант можно реализовать на OpenWRT.
Вам придется поставить туда модуль для iptables, если это решите, остальное уже все не проблема.
Это как-то уж очень круто для поставленной задачи.
А роутер типа того же кинетика не может поддерживать два соединения: одно через OpenVPN, а другое напрямую, чтобы софт на стороне винды уже сам выбирал через какое работать? Т.е. чтобы, к примеру, телевизор постоянно висел на OpenVPN, а компы подключались вручную по мере надобности?
Самое простое это конечно подключить второй роутер к другому провайдеру, но хотелось бы обойтись одним.
Ничего сложного вообще-то.
Так Вы изначально по другому ставили задачу… а теперь пишите — «tv с одного канала, а остальное с другого» — это уже SBR. Эту задачу можно решить на open(dd)wrt штатными средствами.
Вы бы определились чтоль.
Прошу прощения. Задачу ставил «в идеале» так как не знал с какого конца подойти. Потом добавил альтернативный вариант: менее универсальный, но, видимо, более простой в реализации.
Можно подробнее про «штатные средства»? Насколько я понимаю зухелевская прошивка немногим уступает OpenWRT, а для меня довольно важно чтобы все кроме OpenVPN стабильно работало «из коробки».
Я имел ввиду, что сделать source based routing можно сделать в Open(dd)WRT не ставя никаких дополнительных пакетов. С помощью iptables и ip.
создать таблицы и правила через ip rule и ip route, и сделать NAT через iptables кому через какой канал необходимо.
ну и самый простой безболезненный вариант — только tv идет через OpenVPN, все остальное через основной канал — совсем просто.
1. сделать для TV постоянный IP.
2. NAT-ить этот IP через OpenVPN
3. все остальное NAT-ить через основной канал.
Я так понял что в оригинальном виде задача не решается простыми средствами, поэтому упростил вопрос чтобы отделить мух от котлет. На компах я бы пользовался виндовым клиентом и дальше, ибо OpenVPN нужен эпизодически. Но вот на телике добрая половина сервисов требует американского IP, поэтому там он нужен постоянно причем желательно без участия компов. В то же время на телике не нужно фильтровать трафик, торренты я с него не качаю и на stackoverflow не хожу.
А вот с Open(DD)WRT связываться не очень бы хотелось, так как там даже для обеспечения базовой функциональности нужны прямые руки, не говоря уже о таких узких вопросах.