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

Существует ли способ сделать TCP/UDP прокси (или NAT) так, чтобы конечная машина видела IP адрес источника?

Есть Windows server у меня дома.
Провайдер блокирует входящие соединения. То есть сделать port forwarding я не могу.

Задача: как сделать RDP-соединения до этого сервера?

Вот два способа, которые работают, но не подходят:
1) Беру VPS с белым IP, на неё - SSH tunnel.
Это работает, но три недостатка:
- для всех входящих соединений, их IP видится, как IP VPS'a. Становится невозможным настраивать firewall на целевой системе.
- только TCP, нет UDP
- тормозит из-за шифрования SSH

2) Беру VPS c белым IP, на нём - rinetd, который проксирует порты не целевую систему с помощью WireGuard
Работает значительно быстрей, но:
- для всех входящих соединений, их IP видится, как IP VPS'a. Становится невозможным настраивать firewall на целевой системе.

Вопрос:
существует ли какое-то решение, как можно пробросить траффик на целевую систему так, чтобы
- TCP & UDP
- целевая система видела настоящий IP адрес источника
?

Update 22 ноября:
Выяснил, что для моего кэйса очень неплохо подходит Wireguard + Nginx. Оказывается Nginx может делать проксирование на TCP/UDP уровне:
https://docs.nginx.com/nginx/admin-guide/load-bala...
https://www.nginx.com/blog/tcp-load-balancing-udp-...
Это я настроил.

Оказывается, что у Nginx ещё поддерживает специальный протокол, который позволяет передавать на backend IP адреса клиентов, но с этим я ещё не разобрался:
https://docs.nginx.com/nginx/admin-guide/load-bala...
  • Вопрос задан
  • 791 просмотр
Подписаться 1 Сложный 1 комментарий
Решения вопроса 1
@younghacker
Как предложили ранее, попробуйте OpenVPN в udp режиме.
Для ускорения отклика уменьшите размер буферов приёма и передачи, и отключите сжатие.

Что касается реальных адресов подключаючихся машин на целевой машине - вам будет необходимо на стороне целевой машины за NAT обеспечить возврат пакетов обратно в VPN туннель. А для этого вам нужно будет использовать default gateway в сторону туннеля либо статические роуты (если вы знаете адреса приходящих клиентов)

Далее на стороне VPN сервера с публичным IP куда подсоединяются клиенты нужно будет настроить порт форвардинг (DNAT) на адрес vpn интерфейса целевой машины. Тогда пакеты приходящие на целевую машину будут иметь реальный айпи посетителя.

C Wireguard не имел опыта, но почему-то кажется что вам достаточно правильно настроить DNAT на VPN сервере и роутинг по умолчанию на целевой машине и вы получите реальные адреса клиентов на целевой машине.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 3
OCTAGRAM
@OCTAGRAM
В SSH есть и туннелирование (VPN). А дальше на обоих концах наруливаем для порта 3389 такие правила, чтоб пакеты ходили именно через этот новый туннель в обе стороны, и адреса транслировались в нужные моменты. Для UDP на стороне VPS DNAT, на стороне домашней сети SNAT
Ответ написан
Комментировать
Используйте вместо SSH-туннеля VPN (например OpenVPN) со статическим назначением IP по пользователям. Конечный ресурс так же подключайте через VPN туннель.
Это
- быстрее
- на уровне VPN можно ограничивать пользователя по IP
- на уровне конечного ресурса можно разграничить по IP которые назначает VPN (т.е. фактически по пользователям).
Ответ написан
Комментировать
@voleg4u
http://www.voleg.info/
У меня провайдер (дешевый) делает double-NAT , поэтому достучатся внутрь нереально по бюрократической причине. Нужно копать изнутри - это всегда побеждает. Куда и как копать ? зависит только от вас.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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