Инструменты пользователя

Инструменты сайта


wiki:wg-proxy

Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Предыдущая версия справа и слеваПредыдущая версия
Следующая версия
Предыдущая версия
wiki:wg-proxy [2025/08/12 22:53] adminwiki:wg-proxy [2025/08/13 20:18] (текущий) – [Настройка логики] admin
Строка 1: Строка 1:
 Настраиваем шлюз для маршрутизации по списку доступа.  Настраиваем шлюз для маршрутизации по списку доступа. 
  
-[code]+маршрутизация с помощью Iptables, списки доступа ipset, получение ip поддоменов *.googlevideo.com или других из списка доступов - tshark (извлечение заголовков).  
 + 
 +====== включаем шлюз: ====== 
 +<code>
 echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf
 sysctl -p sysctl -p
-[/code]+</code> 
 + 
 +устанавливаем необходимые пакеты: iptables ipset tshark 
 + 
 +на wire-in конфиг /etc/wireguard/wg0.conf 
 +<code> 
 +root@p621665:~# cat /etc/wireguard/wg0.conf 
 +[Interface] 
 +PrivateKey = [WG-IN privatekey] 
 +Address = 10.0.0.1/24 
 +ListenPort = 51820 
 + 
 +PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE 
 +PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE 
 + 
 +[Peer] 
 +PublicKey = [WG-OUT publickey] 
 +AllowedIPs = 10.0.0.2/32, 192.168.31.5/32  # IP proxy-wireguard-gate в туннеле и локальный IP 
 +PersistentKeepalive = 25 
 +root@p621665:~# 
 +</code
 + 
 +Генерируем приватный ключ: 
 +<code>wg genkey > privatekey</code> 
 +Генерируем публичный ключ на основе приватного: 
 +<code>wg pubkey < privatekey > publickey</code> 
 +или 
 +<code>wg genkey | tee privatekey | wg pubkey > publickey</code> 
 + 
 +Конфиг шлюза: 
 +<code> 
 +[Interface] 
 +PrivateKey = [host privatekey] 
 +Address = 10.0.0.2/24 
 +ListenPort = 51820 
 + 
 +[Peer] 
 +PublicKey = [peer public] 
 +AllowedIPs = 0.0.0.0/ # Весь трафик будет идти через туннель (пока iptables не вмешается) 
 +Endpoint = 109.120.141.194:51820 
 +PersistentKeepalive = 25 
 +</code> 
 + 
 +Тестируем туннель: 
 +<code>wg-quick down wg0 
 +wg-quick up wg0</code> 
 +на обоих хостах 
 +<code>wg</code> 
 +чекаем latest handshake 
 + 
 +Если всё работает, то: 
 +<code> systemctl enable wg-quick@wg0 
 +systemctl start wg-quick@wg0</code> 
 + 
 +====== Настраиваем маршрутизацию для клиентов на шлюзе ====== 
 + 
 +<code>echo "net.ipv4.ip_forward=1" > /etc/sysctl.d/99-forward.conf</code> 
 + 
 +<code>iptables -t nat -A POSTROUTING -o wg0 -j MASQUERADE</code> 
 + 
 +Сохраняем конфиг.  
 +<code> apt install iptables-persistent</code> 
 +Можно заребутиться для проверки.  
 + 
 +Всё, в данный момент шлюз работает, гоняя всё через тоннель. Приступаем к настройке алгоритма, чтобы только указанные сайты шли через тоннель, по списку.  
 + 
 +===== Настройка логики ===== 
 +<code>mkdir /etc/iproute2</code> 
 +создаём таблицу маршрутизации 
 +<code>echo 200 vpn >> /etc/iproute2/rt_tables</code> 
 +добавляем маршрут по этой таблице 
 +<code>ip route add default dev wg0 table vpn</code> 
 +проверяем: 
 +<code>#ip route show table vpn</code> 
 +должно быть: 
 +''default dev wg0 scope link'' 
 + 
 +добавляем правило для пометки пакетов: 
 +<code>iptables -t mangle -A PREROUTING -m set --match-set vpn_sites dst -j MARK --set-mark 42</code> 
 +[[iptables_mangle| разбор команды]] 
 + 
 +добавляем правило, чтобы помеченные пакеты шли через таблицу vpn: 
 +<code>ip rule add fwmark 42 table vpn</code> 
 + 
 +проверяем, что у нас за правила на mangle: 
 +<code>sudo iptables -t mangle -L -v -n --line-numbers</code> 
 +чтобы удалить дубликаты (если есть): 
 +<code>iptables -t mangle -D POSTROUTING 2<code> 
 +добавляем NAT для пакетов с меткой "42" 
 +<code>iptables -t nat -A POSTROUTING -m mark --mark 42 -o wg0 -j MASQUERADE</code> 
 + 
 +теперь заполняем таблицу vpn айпишниками нужных сайтов. 
 +<code>apt install dnsutils</code> (нам понадобится команда dig для извлечения всех ip из адреса) 
 +<code>apt install ipset</code> 
 +создаём [[parse_vpn_list|скрипт]и список сайтов. 
 + 
 + 
 + 
 + 
  
  
wiki/wg-proxy.1755039194.txt.gz · Последнее изменение: admin

DokuWiki Appliance - Powered by TurnKey Linux