openwrt-transparent-proxy-r.../ReadMe.md

101 lines
4.9 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

## Настройка роутера на 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 серевер (Иначе работать не будет)