У меня уже есть vps с openvpn на борту. Понадобилось использовать его для трафика в браузере, основной трафик идет через рабочий vpn.
Для реализации сделаем docker контейнер с openvpn клиентом и прокси, который будет подключаться к openvpn серверу. В браузере можно будет использовать расширение FoxyProxy или аналог, для "заворачивания" трафика через localhost (наш прокси контейнер).
Мой Dockerfile:
FROM ubuntu:20.04
RUN apt-get update && apt-get install -y \
openvpn \
dante-server \
&& rm -rf /var/lib/apt/lists/*
COPY proxy_client.ovpn /etc/openvpn/proxy_client.ovpn
COPY dante.conf /etc/danted.conf
COPY start.sh /start.sh
RUN chmod +x /start.sh
EXPOSE 1080
CMD ["/start.sh"]
proxy_client.ovpn - мой конфиг клиента openvpn. В качестве прокси будет использоваться dante-server.
Конфиг прокси-сервера dante.conf:
logoutput: stderr
internal: 0.0.0.0 port = 1080
external: tun0
socksmethod: none
user.privileged: root
user.notprivileged: nobody
client pass {
from: 0.0.0.0/0 to: 0.0.0.0/0
log: connect disconnect
}
socks pass {
from: 0.0.0.0/0 to: 0.0.0.0/0
log: connect disconnect
}
И скрипт запуска start.sh:
#!/bin/bash
openvpn --config /etc/openvpn/proxy_client.ovpn &
sleep 10
danted -f /etc/danted.conf
Собрать образ можно командой:
docker build -t browser_proxy .
В FoxyProxy используем 127.0.0.1 в качестве хоста и 1080 порт. Тип подключения - SOCKS5.
Для удобства запуска создадим docker-compose файл:
version: '3.8'
services:
browser_proxy:
image: browser_proxy
cap_add:
- NET_ADMIN
devices:
- /dev/net/tun
dns:
- 8.8.8.8
ports:
- "1080:1080"
restart: always
И systemd service:
[Unit]
Description=Browser Proxy Docker Compose
After=docker.service
Requires=docker.service
[Service]
Restart=on-failure
WorkingDirectory=/home/andrei/ru_proxy
ExecStart=/usr/bin/docker-compose up
ExecStop=/usr/bin/docker-compose down
TimeoutStartSec=120
[Install]
WantedBy=multi-user.target
Теперь можно запускать через systemctl, не забыв перед этим активировать прокси в FoxyProxy.