2

Сценарий:

  • На сервере в Интернете работает сервер OpenVPN.
  • Клиент-1 дома имеет приложение, работающее через порт 5000 (UDP и TCP), подключающееся к серверу по его OpenVPN (приложение привязывается к 0.0.0.0).
  • Клиент-2 на работе хочет подключиться к приложению Клиента-1 через Интернет, не подключаясь к той же сети OpenVPN.
  • Оба клиента используют Windows, а сервер использует Linux (Ubuntu).

Client-1 <===TUN0===> SERVER <===ETH0===> Client-2

Вопрос:

Как я могу настроить OpenVPN для пересылки входящих запросов на соединение, поступающих на порт 5000 его интерфейса eth0, на порт 5000 интерфейса tun0 Клиента-1, чтобы приложение Клиента-1 могло доставлять контент обратно Клиенту-2 как по UDP, так и по TCP?

1 ответ1

2

К счастью, я нашел ответ в этом вопросе ServerFault.

Некоторые настройки я взял из этого урока DigitalOcean.

Включив переадресацию портов в sysctl мне все еще нужно было добавить некоторые правила iptables добавленные в /etc/ufw/before.rules , это выглядит примерно так:

#
# rules.before
#
# Rules that should be run before the ufw command line added rules. Custom
# rules should be added to one of these chains:
#   ufw-before-input
#   ufw-before-output
#   ufw-before-forward
#


# START OPENVPN RULES
# NAT table rules
*nat
:POSTROUTING ACCEPT [0:0]

-A PREROUTING -i eth0 -p tcp -m tcp --dport 50100 -j DNAT --to-destination [Client-1's vpn address]:50100
-A PREROUTING -i eth0 -p udp -m udp --dport 50100 -j DNAT --to-destination [Client-1's vpn address]:50100

# Allow traffic from OpenVPN client to eth0
-A POSTROUTING -s 10.8.0.0/8 -o eth0 -j MASQUERADE
COMMIT
# END OPENVPN RULES


# Don't delete these required lines, otherwise there will be errors
*filter
:ufw-before-input - [0:0]
:ufw-before-output - [0:0]
.
.
.
.
.
# allow MULTICAST UPnP for service discovery (be sure the MULTICAST line above
# is uncommented)
-A ufw-before-input -p udp -d 239.255.255.250 --dport 1900 -j ACCEPT


# START OPENVPN RULES
-A FORWARD -d [Client-1's vpn address]/32 -p tcp -m tcp --dport 50100 -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -d [Client-1's vpn address]/32 -p udp -m udp --dport 50100 -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT
# END OPENVPN RULES


# don't delete the 'COMMIT' line or these rules won't be processed
COMMIT

С включенной переадресацией порта sysctl и правилами iptables перенаправления для конкретного ip-порта теперь порт 50100 открыт и перенаправлен на порт Client-1.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .