101 lines
4.9 KiB
Markdown
101 lines
4.9 KiB
Markdown
## Настройка роутера на OpenWrt на точечную маршрутизацию по доменам, с использованием прозрачного прокси
|
||
На основе идеи по [точечной маршрутизации от itdog](https://itdog.info/tochechnaya-marshrutizaciya-po-domenam-na-routere-s-openwrt/) решил сделать свой вариант маршрутизации трафика по доменам через прозрачный прокси.
|
||
### Для работы nftset нужно установить dnsmasq-full
|
||
```shell
|
||
opkg update && cd /tmp/ && opkg download dnsmasq-full
|
||
opkg remove dnsmasq && opkg install dnsmasq-full --cache /tmp/
|
||
mv /etc/config/dhcp-opkg /etc/config/dhcp
|
||
/etc/init.d/dnsmasq restart
|
||
```
|
||
### Для ускорения ютуба и других сервисов с неисправными cdn. Будем использовать проект [hufrea/byedpi](https://github.com/hufrea/byedpi) в режиме прозрачного прокси
|
||
Установим инструмент
|
||
на странице [Releases](https://github.com/hufrea/byedpi/releases) выберите нужную вам архитектуру и скопируйте ссылку на файл
|
||
```shell
|
||
wget https://github.com/hufrea/byedpi/releases/download/v0.16.6/byedpi-16.6-aarch64.tar.gz
|
||
tar -xvf byedpi-16.6-aarch64.tar.gz
|
||
rm byedpi-16.6-aarch64.tar.gz
|
||
```
|
||
Запустим, как фоновый процесс:
|
||
```shell
|
||
./ciadpi-aarch64 -s1 -o1 -Ar -o1 -At - f-1 -r1+s -As -E &
|
||
```
|
||
Первый раз лучше запускать `./ciadpi-aarch64 -s1 -o1 -Ar -o1 -At - f-1 -r1+s -As` и на клиентском устройстве попробывать подключится по socks5 протоколу, по умолчанию порт 1080, `socks5://ip-router:1080`
|
||
### Создание файла с цепочкой маршрутизации для nftables
|
||
Например файл /root/byedpi.nft
|
||
```shell
|
||
set proxylist {
|
||
type ipv4_addr
|
||
flags interval
|
||
timeout 4h
|
||
}
|
||
|
||
chain byedpi_prerouting {
|
||
type nat hook prerouting priority -100;
|
||
ip daddr @proxylist tcp dport {80, 443} redirect to 1080
|
||
}
|
||
```
|
||
|
||
### Настройка firewall в openwrt
|
||
В файле `/etc/config/firewall` нужно добавить
|
||
```shell
|
||
config include
|
||
option enabled '1'
|
||
option type 'nftables'
|
||
option path 'your-script-path'
|
||
option position 'table-post'
|
||
```
|
||
#### Вам необходимо изменить `your-script-path` на ваш путь до файла с правилами nftables. В моём случае путь будет /root/byedpi.nft
|
||
Теперь перезапустим firewall и убедимся, что он рабоет и не возвращает ошибок
|
||
```shell
|
||
/etc/init.d/firewall restart
|
||
```
|
||
|
||
### Добавление новой папки конфигурации для dnsmasq в OpenWRT:
|
||
#### Вариант №1 Через добавление параметра в /etc/config/dhcp
|
||
```shell
|
||
config dnsmasq
|
||
option confdir '/etc/dnsmasq.d'
|
||
```
|
||
После этого нужно перезапустить dnsmasq и убедиться, что он работает
|
||
```
|
||
/etc/init.d/dnsmasq restart
|
||
/etc/init.d/dnsmasq status
|
||
```
|
||
Если статус `not running`, то лучше попробовать вариант 2
|
||
|
||
#### Вариант №2 Через uci
|
||
```shell
|
||
uci set dhcp.@dnsmasq[0].confdir='/etc/dnsmasq.d'
|
||
uci commit dhcp
|
||
/etc/init.d/dnsmasq restart
|
||
```
|
||
### Добавление списка доменов, которые будут идти через прозрачный прокси
|
||
Файл /etc/dnsmasq.d/proxylist.conf
|
||
Например для ускорения youtube
|
||
```shell
|
||
#youtube
|
||
nftset=/returnyoutubedislikeapi.com/4#inet#fw4#proxylist
|
||
nftset=/youtube-nocookie.com/4#inet#fw4#proxylist
|
||
nftset=/youtube-ui.l.google.com/4#inet#fw4#proxylist
|
||
nftset=/youtube.com/4#inet#fw4#proxylist
|
||
nftset=/youtubeembeddedplayer.googleapis.com/4#inet#fw4#proxylist
|
||
nftset=/youtubei.googleapis.com/4#inet#fw4#proxylist
|
||
nftset=/youtubekids.com/4#inet#fw4#proxylist
|
||
nftset=/wide-youtube.l.google.com/4#inet#fw4#proxylist
|
||
nftset=/yt-video-upload.l.google.com/4#inet#fw4#proxylist
|
||
nftset=/ytimg.com/4#inet#fw4#proxylist
|
||
nftset=/ytimg.l.google.com/4#inet#fw4#proxylist
|
||
nftset=/yting.com/4#inet#fw4#proxylist
|
||
nftset=/youtu.be/4#inet#fw4#proxylist
|
||
nftset=/googlevideo.com/4#inet#fw4#proxylist
|
||
nftset=/ggpht.com/4#inet#fw4#proxylist
|
||
nftset=/suggestqueries.google.com/4#inet#fw4#proxylist
|
||
nftset=/noifications-pa.googleapis.com/4#inet#fw4#proxylist
|
||
nftset=/googleusercontent.com/4#inet#fw4#proxylist
|
||
```
|
||
Перезапустим dnsmasq, чтобы правила применились
|
||
```shell
|
||
/etc/init.d/dnsmasq restart
|
||
```
|
||
Роутер настроен, теперь нужно убедиться что ваше устройство использует роутер, как dns серевер (Иначе работать не будет)
|