@squard72
высокий

Почему не работает проброс портов?

Добрый день, имеется:
1. VPS с работающим OpenVPN сервером
2. Клиент сети подключенный к VPS
Зачем:
Предоставление доступа к сервисам локальной сети находящейся за NAT провайдера.

Структура:
venet0:0 - интерфейс VPS смотрящий в интернет с адресом XXX.XXX.XXX.XXX
tun0 - интерфейс OpenVPN с адресом YYY.YYY.YYY.YYY
Так как OpenVPN имеет не совсем удобный для простого обывателя алгоритм подключения(установка клиента, выдача сертификатов и прочее) был установлен PPTPD на сервер внутри локальной сети(той что за NAT), данный сервер необходимо выпустить в интернет по средствам VPS. Работоспособность самого PPTPD проверена внутри сети, все все работает и подключается, но при пробросе порта 1723 на VPS, на сервер YYY.YYY.YYY.YYY:1723 и попытке подключения к PPTPD по адресу VPS, XXX.XXX.XXX.XXX:1723 - работать отказывается. Стоит экран ufw на VPS - проверил, порты открыл.

Пробрасывал так:
iptables -t nat -A PREROUTING --dst YYY.YYY.YYY.YYY -p tcp --dport 1723 -j DNAT --to-destination XXX.XXX.XXX.XXX
iptables -I FORWARD 1 -i venet0:0 -o tun0 -d XXX.XXX.XXX.XXX -p tcp -m tcp --dport 1723 -j ACCEPT
iptables -t nat -A POSTROUTING --dst XXX.XXX.XXX.XXX -p tcp --dport 1723 -j SNAT --to-source YYY.YYY.YYY.YYY
iptables -t nat -A OUTPUT --dst YYY.YYY.YYY.YYY -p tcp --dport 1723 -j DNAT --to-destination XXX.XXX.XXX.XXX
iptables -t nat -A POSTROUTING -s XXX.XXX.XXX.XXX -o tun0 -j MASQUERADE
iptables -t nat -A PREROUTING --dst YYY.YYY.YYY.YYY -p tcp --dport 1723 -j DNAT --to-destination XXX.XXX.XXX.XXX
iptables -I FORWARD -i venet0:0 -o tun0 -d XXX.XXX.XXX.XXX -p tcp -m tcp --dport 1723 -j ACCEPT


XXX.XXX.XXX.XXX - адрес на туннеле, сервера локальной сети
YYY.YYY.YYY.YYY -внешний адрес VPS
tun0 - имя интерфейса туннеля
venet0:0 - имя интерфейса смотрящего в глабольную сеть на VPS
Система на VPS Debian 9.8

Только пожалуйста более простым языком, терпеть не могу iptables, никогда с ним не дружил.:(
  • Вопрос задан
  • 125 просмотров
Пригласить эксперта
Ответы на вопрос 4
Sanes
@Sanes
На OpenVZ урезаный функционал iptables. Тем более на Venet. Уточняйте у хостера.
Ответ написан
@20ivs
PPTP использует GRE, а ваш VPS об этом ничего не знает, вероятно.
Ответ написан
SignFinder
@SignFinder
Wintel\Unix Engineer
Как правильно заметили нужен проброс gre протокола используя -p gre.
Также еще нужна поддержка в ядре. Проверить можно командой modprobe nf_conntrack_proto_gre
Ответ написан
@dronmaxman
VoIP Administrator
Вот это намутили.

То есть PPTPD сервер находится в офисе, но публикуется через OpenVPN тунель на VPS. Полет фантазии огонь!)

Может стоит упростить схему? Поднять VPN сервер на VPS, пусть пользователи к нему подключаются, а далее настроить маршрутизацию трафика между VPS и сервером в локальной сети. Тогда не придется гонять gre внутри openvpn.

Кстати не вижу никакой проблемы настройки OpenVPN на стороне пользователей. Сертификат может быть для всех один и лежать внутри конфигурационного файла OpenVPN. Импорт такого файла проще чем настройка pptp на стороне клиента. И гибкости у OpenVPN больше, можно передать клиенту маршруты, что бы не ганять весь трафик клиента через сеть офиса.

Вот Вам пример такого файлика. Сертификат и ключ порезал, IP тоже не мой. У меня пользователи авторизуются в OpenVPN через ldap и полуют маршруты. Все круто работает.

client
remote 52.144.45.33
dev tun
proto udp
auth-user-pass
tls-client
cipher AES-128-CBC
port 4444
resolv-retry infinite
#mute-replay-warnings
ns-cert-type server
nobind
persist-key
persist-tun
verb 3
key-direction 1

-----BEGIN OpenVPN Static key V1-----
1be1dee306e9faef5306d30375a07a03
ea969f8efc0e47323f9aef973d88480f
ac5c9c921646ccadd107d49670862716
eebe834782903c8b5ff0420da0f6dfb8
d1699873958d36f762026f963e15abab
bbe3031f689d6184b9e80a3c1cad644e
3b4bf2cefd47635516f7613cf761ca26
bfbd1219dbcc311620927783a9bc1b3f
-----END OpenVPN Static key V1-----


-----BEGIN CERTIFICATE-----
EwdFYXN5UlNBMSEwHwYJKoZIhvcNAQkBFhJob3N0bWFzdGVyQGRlcHMudWEwHhcN
MTYxMDE2MjEyNDI3WhcNMjYxMDE0MjEyNDI3WjCBkjELMAkGA1UEBhMCVUExCzAJ
BgNVBAgTAktWMQ0wCwYDVQQHEwRLaWV2MQ8wDQYDVQQKEwZERVBTVUExDTALBgNV
BAsTBERFUFMxEjAQBgNVBAMTCURFUFNVQSBDQTEQMA4GA1UEKRMHRWFzeVJTQTEh
MB8GCSqGSIb3DQEJARYSaG9zdG1hc3RlckBkZXBzLnVhMIIBIjANBgkqhkiG9w0B
gdUSxVWvcIve4rN9ePjaFtMdScSxjglDZ/HPoWvw+hYXqwIDAQABo4H6MIH3MB0G
A1UdDgQWBBSa+h9VJXUzlwcOxxEtPuLhO2DwWjCBxwYDVR0jBIG/MIG8gBSa+h9V
JXUzlwcOxxEtPuLhO2DwWqGBmKSBlTCBkjELMAkGA1UEBhMCVUExCzAJBgNVBAgT
AktWMQ0wCwYDVQQHEwRLaWV2MQ8wDQYDVQQKEwZERVBTVUExDTALBgNVBAsTBERF
UFMxEjAQBgNVBAMTCURFUFNVQSBDQTEQMA4GA1UEKRMHRWFzeVJTQTEhMB8GCSqG
SIb3DQEJARYSaG9zdG1hc3RlckBkZXBzLnVhggkAodrTRL9C/bEwDAYDVR0TBAUw
AwEB/zANBgkqhkiG9w0BAQsFAAOCAQEAld8LGYLHCPyn/A6+liY9DIgh+yfoqGwz
EDZ1kgjEKiH5hOg5QBhNdohAuYP1K9uGNF581TlcQCyLmnXPcChqJzvdEQt/F7VK
-----END CERTIFICATE-----
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы