D2
Администратор
- Регистрация
- 19 Фев 2025
- Сообщения
- 4,380
- Реакции
- 0
Всем привет данная статься будет разделенна на 2 части
1.Wireguard и VDS
2.Dnsproxy и pi hole
1.Часть Wireguard и VDS
Покупаем сервер Digital OCean, Timweb,First VDS берите где хотите
Я взял на TimWeb, берем на Debian 12 так как команды будут потспроенны под него
Подключаемся к серверу
-----------------------
Код: Скопировать в буфер обмена
-----------------------
Если нет модуля ядра, ставим и его:
Как только всё будет готово, проверяем, что модуль загружен:
--------------------
После создаем любую папку
Создаем ключи для сервера и клиента
Код: Скопировать в буфер обмена
-----------------------
Далее через cat смотрим наши ключи
Код: Скопировать в буфер обмена
Все ключи запишите ,они еще понадобятся
-----------------------
В sysctl включаем forwarding
Код: Скопировать в буфер обмена
-----------------------
Туда вписываем:
По желанию можем защититься и сделать его только для root пользователей командой:
-----------------------
Включаем и запускаем сервис wireguard
Код: Скопировать в буфер обмена
-----------------------
Далее вы можете подкючить любое устройство к вашему wireguard я буду показывать на примере мвой системе parrot os
Код: Скопировать в буфер обмена
Сохраняем файл, и пробуем подключиться командой:
Если выдает такую ошибку
То просто пишите '
Итак мы закончили первую часть статьи ,далее мы будем поднимать свой DNS сервер через pi hole
2.ЧАсть Dnsproxy и pi hole
Будем использовать программу dnsproxy:
--------------------------------------------
Для работы с данным репозиторием нам нужен язык go версии не менее 1.20
Установка или обновления golang
Код: Скопировать в буфер обмена
Далее добавляем golang в PATH
Код: Скопировать в буфер обмена
Должно вывести:
--------------------------------------------
устанавливаем dnsproxy
если сделать все правильно то ошибок быть не должно
--------------------------------------------
Выбирем на сайте проги любой вариант подключния
Запускаем программу
Если все без ошибок то работаем дальше
--------------------------------------------
если все работает и вы разобрались то теперь будес совмещать wireguard и pi hole
--------------------------------------------
Подключаемся к нашему серверу через ssh
Вписываем:
Код: Скопировать в буфер обмена
Устанавливаем pi hole
--------------------------------------------
Установим Unbound DNS:
--------------------------------------------
Создаем конфиг /etc/unbound/unbound.conf.d/pi-hole.conf
nano /etc/unbound/unbound.conf.d/pi-hole.conf
Туда вставляем этот текст:
server:
Перезагрузи тачку
Проверяем как все работает , нигде не должно быть ошибок
--------------------------------------------
На этом собственно все, в самом pi hole разбрайтесь сами, спасибо за внимание
1.Wireguard и VDS
2.Dnsproxy и pi hole
1.Часть Wireguard и VDS
Покупаем сервер Digital OCean, Timweb,First VDS берите где хотите
Я взял на TimWeb, берем на Debian 12 так как команды будут потспроенны под него
Подключаемся к серверу
-----------------------
Код: Скопировать в буфер обмена
Код:
apt update -- Обновляем пакеты
echo "deb http://deb.debian.org/debian/ unstable main" > /etc/apt/sources.list.d/unstable.list
printf 'Package: *\nPin: release a=unstable\nPin-Priority: 90\n' > /etc/apt/preferences.d/limit-unstab
apt install wireguard -- устанавлием сам wireguard
Если нет модуля ядра, ставим и его:
apt-get install wireguard-dkms wireguard-tools linux-headers-$(uname -r)
Как только всё будет готово, проверяем, что модуль загружен:
modprobe wireguard && lsmod | grep wireguard
--------------------
После создаем любую папку
mkdir ~/{Название вашей папки} cd ~/{Название вашей папки}
Создаем ключи для сервера и клиента
Код: Скопировать в буфер обмена
Код:
umask 077
wg genkey | tee server_private_key | wg pubkey > server_public_key
wg genkey | tee client_private_key | wg pubkey > client_public_key
Далее через cat смотрим наши ключи
Код: Скопировать в буфер обмена
Код:
cat server_private_key |
cat server_public_key |
cat client_private_key |
cat client_public_key |
-----------------------
В sysctl включаем forwarding
Код: Скопировать в буфер обмена
Код:
nano /etc/sysctl.conf
# net.ipv4.ip_forward = 1
sysctl -p
cd /etc/wireguard/ nano /etc/wireguard/wg0.conf
Туда вписываем:
Пока что закрываем файл# nano /etc/wireguard/wg0.conf
[Interface]
Address = 10.8.0.1/24
PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -A FORWARD -o %i -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -D FORWARD -o %i -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
ListenPort = 51820
PrivateKey = {Сюда вписываем ваш приватный ключ 'cat server_private_key'}
[Peer]
PublicKey = {Сюда вписываем паблик ключ 'cat client_public_key'}
AllowedIPs = 10.8.0.2/32
-----------------------
Нажмите, чтобы раскрыть...
По желанию можем защититься и сделать его только для root пользователей командой:
chmod 600 /etc/wireguard/wg0.conf
-----------------------
Включаем и запускаем сервис wireguard
Код: Скопировать в буфер обмена
Код:
systemctl enable wg-quick@wg0.service
systemctl restart wg-quick@wg0.service
Далее вы можете подкючить любое устройство к вашему wireguard я буду показывать на примере мвой системе parrot os
Код: Скопировать в буфер обмена
Код:
sudo add-apt-repository ppa:wireguard/wireguard или же apt install wireguard
cd /etc/wireguard
nano /etc/wireguard/wg0-client.conf
-----------------------[Interface]
Address = 10.8.0.2/32
PrivateKey = {сюда вписываем cat client_private_key}
DNS = 8.8.8.8
[Peer]
PublicKey = {сюда вписываем cat server_public_key}
Endpoint = {На сервере прописываем 'ifconfig' и пишем наш ip}:51820
AllowedIPs = 0.0.0.0/0
PersistentKeepalive = 21
Нажмите, чтобы раскрыть...
Сохраняем файл, и пробуем подключиться командой:
wg-quick up wg0-client -- включаем
[#] ip link add wg0-client type wireguard
[#] wg setconf wg0-client /dev/fd/63
[#] ip address add 10.8.0.2/32 dev wg0-client
[#] ip link set mtu 1420 dev wg0-client
[#] ip link set wg0-client up
[#] mount `8.8.8.8' /etc/resolv.conf
[#] wg set wg0-client fwmark 51820
[#] ip -4 route add 0.0.0.0/0 dev wg0-client table 51820
[#] ip -4 rule add not fwmark 51820 table 51820
[#] ip -4 rule add table main suppress_prefixlength 0
Нажмите, чтобы раскрыть...
Если выдает такую ошибку
/usr/bin/wg-quick: line 32: resolvconf: command not found
То просто пишите '
sudo apt install openresolv
' и все.wg-quick down wg0-client -- выключаем
[#] ip -4 rule delete table 51820
[#] ip -4 rule delete table main suppress_prefixlength 0
[#] ip link delete dev wg0-client
[#] umount /etc/resolv.conf
Нажмите, чтобы раскрыть...
Итак мы закончили первую часть статьи ,далее мы будем поднимать свой DNS сервер через pi hole
2.ЧАсть Dnsproxy и pi hole
Будем использовать программу dnsproxy:
--------------------------------------------
Для работы с данным репозиторием нам нужен язык go версии не менее 1.20
Установка или обновления golang
Код: Скопировать в буфер обмена
Код:
sudo apt update && sudo apt upgrade
cd Downloads
wget https://golang.org/dl/go1.20.2.linux-amd64.tar.gz
sudo tar -C /usr/local -xzf go1.20.2.linux-amd64.tar.gz
Далее добавляем golang в PATH
Код: Скопировать в буфер обмена
Код:
echo "export PATH=/usr/local/go/bin:${PATH}" | sudo tee -a $HOME/.profile
source $HOME/.profile
go version -- проверяем версию go
Должно вывести:
go version go1.20.2 linux/amd64
--------------------------------------------
устанавливаем dnsproxy
git clone https://github.com/AdguardTeam/dnsproxy make build
если сделать все правильно то ошибок быть не должно
--------------------------------------------
Выбирем на сайте проги любой вариант подключния
./dnsproxy -u sdns://AgcAAAAAAAAABzEuMC4wLjGgENk8mGSlIfMGXMOlIlCcKvq7AVgcrZxtjon911-ep0cg63Ul-I8NlFj4GplQGb_TTLiczclX57DvMV8Q-JdjgRgSZG5zLmNsb3VkZmxhcmUuY29tCi9kbnMtcXVlcnk -- я выбрал этот
Запускаем программу
Если все без ошибок то работаем дальше
--------------------------------------------
1.кликаем на иконку wifi правой конпокой
2.нажимаем edit connection
3.Выбираем сеть к которой вы подключены не вадно wifi или ethernet
4.Выбираем ipv4 Settings
5.в Dns сервер вписываем 127.0.0.1 и вес ваш трафик будет через dns proxy который вы хостите на основной машине
Нажмите, чтобы раскрыть...
если все работает и вы разобрались то теперь будес совмещать wireguard и pi hole
--------------------------------------------
Подключаемся к нашему серверу через ssh
Вписываем:
Код: Скопировать в буфер обмена
Код:
sudo iptables -A INPUT -s 10.8.0.1/24 -p tcp -m tcp --dport 53 -m conntrack --ctstate NEW -j ACCEPT
sudo iptables -A INPUT -s 10.8.0.1/24 -p udp -m udp --dport 53 -m conntrack --ctstate NEW -j ACCEPT
apt install iptables-persistent
apt install curl
echo iptables-persistent iptables-persistent/autosave_v4 boolean true | sudo debconf-set-selections
echo iptables-persistent iptables-persistent/autosave_v6 boolean true | sudo debconf-set-selections
sudo apt install iptables-persistent -y
sudo systemctl enable netfilter-persistent
sudo netfilter-persistent save
Устанавливаем pi hole
curl -sSL https://install.pi-hole.net | sudo PIHOLE_SKIP_OS_CHECK=true bash
1.После установки выбираем wg0
2.Далее нажмаем yes/continue
3.Привыборе Dns сервере выбрайте любой, потом сдеаем нормальный
4.И выбраем Anonumous режим
Нажмите, чтобы раскрыть...
--------------------------------------------
Установим Unbound DNS:
sudo apt install unbound unbound-host -y curl -o /var/lib/unbound/root.hints https://www.internic.net/domain/named.cache
--------------------------------------------
Создаем конфиг /etc/unbound/unbound.conf.d/pi-hole.conf
nano /etc/unbound/unbound.conf.d/pi-hole.conf
Туда вставляем этот текст:
server:
# if no logfile is specified, syslog is used
# logfile: "/var/log/unbound/unbound.log"
verbosity: 1
port: 5353
do-ip4: yes
do-udp: yes
do-tcp: yes
# may be set to yes if you have IPv6 connectivity
do-ip6: no
# use this only when you downloaded the list of primary root servers
root-hints: "/var/lib/unbound/root.hints"
# respond to DNS requests on all interfaces
interface: 0.0.0.0
max-udp-size: 3072
# IPs authorised to access the DNS Serverdig pi-hole.net @127.0.0.1 -p 53
access-control: 0.0.0.0/0 refuse
access-control: 127.0.0.1 allow
access-control: 10.8.0.1/24 allow
# hide DNS Server info
hide-identity: yes
hide-version: yes
# limit DNS fraud and use DNSSEC
harden-glue: yes
harden-dnssec-stripped: yes
harden-referral-path: yes
# add an unwanted reply threshold to clean the cache and avoid, when possible, DNS poisoning
unwanted-reply-threshold: 10000000
# have the validator print validation failures to the log val-log-level: 1
# don't use Capitalisation randomisation as it known to cause DNSSEC issues sometimes
# see https://discourse.pi-hole.net/t/unbound-stubby-or-dnscrypt-proxy/9378 for further details
use-caps-for-id: no
# reduce EDNS reassembly buffer size
# suggested by the unbound man page to reduce fragmentation reassembly problems
edns-buffer-size: 1472
# TTL bounds for cache
cache-min-ttl: 3600
cache-max-ttl: 86400
# perform prefetching of close to expired message cache entries
# this only applies to domains that have been frequently queried
prefetch: yes
prefetch-key: yes
# one thread should be sufficient, can be increased on beefy machines
num-threads: 1
# ensure kernel buffer is large enough to not lose messages in traffic spikes
so-rcvbuf: 1m
# ensure privacy of local IP ranges
private-address: 192.168.0.0/16
private-address: 169.254.0.0/16
private-address: 172.16.0.0/12
private-address: 10.0.0.0/8
private-address: fd00::/8
private-address: fe80::/10
Нажмите, чтобы раскрыть...
Перезагрузи тачку
reboot
Проверяем как все работает , нигде не должно быть ошибок
dig pi-hole.net @127.0.0.1 -p 5353 dig sigfail.verteiltesysteme.net @127.0.0.1 -p 5353 dig sigok.verteiltesysteme.net @127.0.0.1 -p 5353
--------------------------------------------
1.На основной такчке заходим в админку pi hole
2.Заходим в settings там кликаем на dns и в параметр custom вписываем 127.0.0.1#53
3.Далее редактируем конфигурационный файл wireguard на оосновной тачке
4.Редактируем парамет DNS меня его на ip wg0 на сервере
5.После тыкаем на wifi правой конпке
6.Выбираем ipv4 Settings
7.В Dns сервер вписываем 10.8.0.1 и вес ваш трафик будет через dns который теперь хоститься на сервере
Нажмите, чтобы раскрыть...
На этом собственно все, в самом pi hole разбрайтесь сами, спасибо за внимание