Задать вопрос
@Artikul2

Как пробросить доступ по SSH из интернета к домашнему серверу?

Дано:
1. Домашний сервер на Ubuntu 24.04. Назначен IP роутером 192.168.0.187, Peer Wireguard 10.18.0.2.
2. VPS на Debian 11 с IP 89.111.111.11. Установлен Wireguard 10.18.0.1.

Задача:
При обращении из интернета к IP 89.111.111.11 открывать сайты с домашнего сервера (порты 80, 443, 465, 5432, 22) и иметь доступ из интернета к Postgress и SSH.

Сделано:
Довольно просто пробросил порты 80 и 443. Сайты открываются. Порты 465, 5432 - не проверял ещё.
Для этого установил Wireguard и выполнил несколько команд:
iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to-destination 10.18.0.2:80
iptables -t nat -A PREROUTING -p tcp --dport 443 -j DNAT --to-destination 10.18.0.2:443
iptables -t nat -A PREROUTING -p tcp --dport 465 -j DNAT --to-destination 10.18.0.2:465
iptables -t nat -A PREROUTING -p tcp --dport 5432 -j DNAT --to-destination 10.18.0.2:5432
iptables -t nat -A POSTROUTING -j MASQUERADE
echo 1 > /proc/sys/net/ipv4/ip_forward


Wireguard имеет примерно такие настройки:
# конфигурация интерфейса
[Interface]
# адрес интерфейса на стороне сервера
# и маска всей виртуальной сети
Address = 10.18.0.1/24
PrivateKey = содержимое файла server.priv
# UDP-порт, на котором сервер будет принимать соединения
ListenPort = 35535

# конфигурация удалённого клиента
[Peer]
PublicKey = содержимое файла client.pub
PresharedKey = содержимое файла wg.preshared
# адреса для проброса через туннель
# в данном случае только адрес клиента
AllowedIPs = 10.18.0.2/32

Пинг между 10.18.0.1 и 10.18.0.2 есть, сайты открывает.

Но соединиться из интернета по SSH с домашним сервером не могу.
Надо, чтобы при 89.111.111.11:22 попадал на сервер VPS, а при 89.111.111.11:2222 попадал на домашний сервер.

Пытался сделать так:
iptables -t nat -A PREROUTING -p tcp --dport 2222 -j DNAT --to-destination 10.18.0.2:22
iptables -t nat -A POSTROUTING -p tcp -s 10.18.0.2 --sport 22 -j SNAT --to-source 89.111.111.11:2222

и
iptables -t nat -A PREROUTING -d 10.18.0.1 -p tcp --dport 22 -j DNAT --to-dest 192.168.0.187:22
iptables -t nat -A POSTROUTING -d 192.168.0.187 -p tcp --sport 22 -j SNAT --to-source 10.18.0.1:22


Пробовал на домашнем такую команду
sudo ufw allow from 0.0.0.0/0 proto tcp to any port 22


Но достучаться по SSH можно только из домашней сети WIFI, из интернета попасть на домашний сервер по SSH по 89.111.111.11:2222 не получается, через секунд 15 закрывается putty из-за неудачной попытки соединиться, не доходит до ввода логина/пароля.

Что можно еще попробовать сделать?

PS: Неактуально. Снова попробовал войти. И вошёл. Странно. Спасибо.
  • Вопрос задан
  • 531 просмотр
Подписаться 3 Простой 2 комментария
Решения вопроса 1
@Drno
iptables -t nat -A PREROUTING -p tcp --dport 2222 -j DNAT --to-destination 10.18.0.2:22

этого правила должно быть достаточно. всё аналогично как и с веб портами
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
petermzg
@petermzg
Самый лучший программист
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы