Пишу вам с просьбой помочь настроить проксирование всего трафика с 80 и 443 портов VPS на домашний сервер по туннелю.
Хочу организовать нормальный и удобный доступ по доменам к сервисам. Для этого выбрал вариант с VPS и туннелем до домашнего сервера. Автор форума в одном из видео озвучивал такой же вариант, но с обратным прокси на VPS. Но в таком случае трафик будет расшифровываться на VPS. Любой дамп памяти позволит хостеру еувидить данные. Поэтому хочу проксировать весь трафик, который приходит на 80 и 443 порт VPS на 80 и 443 порт много домашнего сервера по тунелю. Это позволит мне:
Решить вопрос со своей лёгкой паранойей. Расшифровка трафика будет на обратном прокси, который находится у меня локально
По идее я смогу запрашивать сертификаты Let’s encrypt с локального обратного прокси даже с учётом того, что он за NAT. То есть я смогу обращаться к своим локальным сервисам по нормальными сертификатам, а не самоподписанным
Я пробовал настроить 2 обратных прокси. Один на VPS, другой в локальной сети. Но обламался, так как в локальной сети самоподписанные SSL. Не получилось связать обратные прокси
В общем, какие прокси могут вслепую (если так можно выразиться), не расшифровывая трафик мне в этом помочь? Я нашел простую прогу gost. Как считаете, может ли это сработать?
services:
forward-80:
image: ginuerzh/gost
command: -L=tcp://:80/10.0.0.2:80 # 10.0.0.2 — IP дома в тунеле
network_mode: host
restart: always
forward-443:
image: ginuerzh/gost
command: -L=tcp://:443/10.0.0.2:443
network_mode: host
restart: always
Добавить корневой сертификат, которым подписали локальные, на хостинг (например, при помощи mkcert)
Но надо понимать, что трафик то будет ходить зашифрованный, но мы все равно имеет MITM в виде данного проксика и злоумышленник, в случае проникновения на сервер, сможет получить доступ к незашифрованному трафику
Не знаю, что это, может и сработает, а зачем, если есть 4 варианта выше
Хочу попробовать вариант с Iptables. У меня маленький VPS, поэтому выберу самый производительный вариант. Я не сильно знаком с Iptables. Хочу добавить эти цепочки сразу в конфиг WG. Подскажите, они не будут конфликтовать с текущей настройкой?
Это сервер
[Interface]
PrivateKey = secretkey
Address = 10.0.0.1/24
ListenPort = 51800
#Стандартные цепочки, которые использую. Если честно - у кого-то подсмотрел
PostUp = iptables -A FORWARD -i %i -j ACCEPT;\
iptables -t nat -A POSTROUTING -o enp3s0 -j MASQUERADE;\
#Добавляю Ваши для 443, 80 и 21000 порта (Syncthing)
iptables -t nat -A PREROUTING -i enp3s0 -p tcp --dport 443 \
-j DNAT --to-destination 10.0.0.3:443;\
iptables -A FORWARD -i enp3s0 -o wg0 -p tcp --dport 443 -d 10.0.0.3 -j ACCEPT;\
iptables -A FORWARD -i wg0 -o enp3s0 -p tcp --sport 443 -s 10.0.0.3 -j ACCEPT;\
iptables -t nat -A PREROUTING -i enp3s0 -p tcp --dport 80 \
-j DNAT --to-destination 10.0.0.3:80;\
iptables -A FORWARD -i enp3s0 -o wg0 -p tcp --dport 80 -d 10.0.0.3 -j ACCEPT;\
iptables -A FORWARD -i wg0 -o enp3s0 -p tcp --sport 80 -s 10.0.0.3 -j ACCEPT;\
iptables -t nat -A PREROUTING -i enp3s0 -p tcp --dport 21000 \
-j DNAT --to-destination 10.0.0.3:22000;\
iptables -A FORWARD -i enp3s0 -o wg0 -p tcp --dport 22000 -d 10.0.0.3 -j \ ACCEPT;\
iptables -A FORWARD -i wg0 -o enp3s0 -p tcp --sport 22000 -s 10.0.0.3 -j \ ACCEPT;\
iptables -t nat -A POSTROUTING -o wg0 -j MASQUERADE;
#Удаляю цепочки после того, как гасится интерфейс.
#Копирую все то же самое, только ключ -А меняю на -D. Ниже только 2 цепочки, чтобы не спамить)
PostDown = iptables -D FORWARD -i %i -j ACCEPT; \
iptables -t nat -D POSTROUTING -o enp3s0 -j MASQUERADE
[Peer]
PublicKey = peer_publickey
AllowedIPs = 10.0.0.3/32, 192.168.31.202/32
Да. Я ранее использовал только WG. Из сети WG давал доступ к 192.168.31.202 для доступа по локальным доменам. Весь DNS тунелировал на этот IP. Также на этом IP обратный прокси и Adguardhome.