LINUX.ORG.RU
решено ФорумAdmin

VPN на Windows VPS - проброс RDP порта

 , , ,


0

1

Здравствуйте! Уже вторую сутку бьюсь над проблемой, буду благодарен за помощь, если укажете где ошибка и как решить.

Есть Windows VPS а также Centos 7 VPS на которой установлен OpenVPN сервер, который планируется использовать для выхода в интернет.

Задача использовать доступ в интернет через VPN на Windows VPS и при этом иметь возможность подключиться к Windows VPS через RDP. Задача кажется простой, нужно лишь пробросить 3389 порт через IPtables но к сожалению что то не получается.

Centos 7

/etc/openvpn/server.conf

port 1194
proto udp
dev tun
ca easy-rsa/keys/ca.crt
cert easy-rsa/keys/server.crt
key easy-rsa/keys/server.key
dh easy-rsa/keys/dh2048.pem
server 10.8.0.0 255.255.255.0
ifconfig-pool-persist ipp.txt
push "redirect-gateway def1 bypass-dhcp"
push "dhcp-option DNS 8.8.8.8"
push "dhcp-option DNS 8.8.4.4"
keepalive 10 120
persist-key
persist-tun
status openvpn-status.log

Дополнительные настройки сервера

echo "net.ipv4.ip_forward=1" > /etc/sysctl.d/50-forwarding.conf
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o venet0 -j MASQUERADE
systemctl enable iptables
systemctl enable openvpn@server

ifconfig -a

gre0: flags=128<NOARP>  mtu 1476
        unspec 00-00-00-00-00-00-E0-1D-00-00-00-00-00-00-00-00  txqueuelen 0  (UNSPEC)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

gretap0: flags=4098<BROADCAST,MULTICAST>  mtu 1476
        ether 00:00:00:00:00:00  txqueuelen 1000  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 0  (Local Loopback)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

tun0: flags=4305<UP,POINTOPOINT,RUNNING,NOARP,MULTICAST>  mtu 1500
        inet 10.8.0.1  netmask 255.255.255.255  destination 10.8.0.2
        unspec 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00  txqueuelen 100  (UNSPEC)
        RX packets 3076  bytes 211180 (206.2 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 82  bytes 15631 (15.2 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

venet0: flags=211<UP,BROADCAST,POINTOPOINT,RUNNING,NOARP>  mtu 1500
        inet 127.0.0.1  netmask 255.255.255.255  broadcast 0.0.0.0  destination 127.0.0.1
        inet6 2a02:7aa0:1619::bce3:3f23  prefixlen 128  scopeid 0x0<global>
        unspec 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00  txqueuelen 0  (UNSPEC)
        RX packets 11409  bytes 1519515 (1.4 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 7764  bytes 725812 (708.8 KiB)
        TX errors 0  dropped 3024 overruns 0  carrier 0  collisions 0

venet0:0: flags=211<UP,BROADCAST,POINTOPOINT,RUNNING,NOARP>  mtu 1500
        inet 95.YYY.46.6  netmask 255.255.255.255  broadcast 95.YYY.46.6  destination 95.YYY.46.6
        unspec 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00  txqueuelen 0  (UNSPEC)

Задачу пытаюсь решить добавлением следующих правил в IPtables

iptables -t nat -A PREROUTING --dst 95.YYY.46.6 -p tcp --dport 3389 -j DNAT --to-destination 10.8.0.4:3389
iptables -I FORWARD 1 -i venet0 -o tun0 -d 10.8.0.4 -p tcp -m tcp --dport 3389 -j ACCEPT
iptables -t nat -A POSTROUTING --dst 10.8.0.4 -p tcp --dport 3389 -j SNAT --to-source 10.8.0.1
iptables -t nat -A OUTPUT --dst 95.YYY.46.6 -p tcp --dport 3389 -j DNAT --to-destination 10.8.0.4

После добавлений правил исполняю

/usr/libexec/iptables/iptables.init save
service iptables restart

Потом пробую подключиться через RDP к 95.YYY.46.6, и результат никакой.

Компьютер через который я буду подключаться к RDP не может быть обьединён в одну VPN сеть с удалённой машиной



Последнее исправление: HultgrenTomas (всего исправлений: 1)

Ну как минимум добавить обратное правило

iptables -I FORWARD 1 -o venet0 -i tun0 -s 10.8.0.4 -p tcp -m tcp --sport 3389 -j ACCEPT

Во вторых проверить доступность 10.8.0.4:3389  с Centos.

pyatak123
()
Последнее исправление: pyatak123 (всего исправлений: 2)
Ответ на: комментарий от pyatak123

Решено

Спасибо за помощь. Добавил новое правило, в результате iptables имеет следующие правила

iptables -t nat -A PREROUTING --dst 95.YYY.46.6 -p tcp --dport 3389 -j DNAT --to-destination 10.8.0.4:3389
iptables -I FORWARD 1 -i venet0 -o tun0 -d 10.8.0.4 -p tcp -m tcp --dport 3389 -j ACCEPT
iptables -I FORWARD 1 -o venet0 -i tun0 -s 10.8.0.4 -p tcp -m tcp --sport 3389 -j ACCEPT
iptables -t nat -A OUTPUT --dst 95.YYY.46.6 -p tcp --dport 3389 -j DNAT --to-destination 10.8.0.4
iptables -t nat -A POSTROUTING --dst 10.8.0.4 -p tcp --dport 3389 -j SNAT --to-source 10.8.0.1

iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o venet0 -j MASQUERADE

Я попробовал пинговать 10.8.0.4 с Centos, а в ответ тишина. Я зашел через VNC на Windows VPS в сетевой адаптер а там IP 10.8.0.6. Как оказалось ifconfig-pool-persist ipp.txt лишь пытается выдать IP который указан в файле ipp.txt. Но если не может то он не брезгует дать другой IP. Я добавил еще пару дубликатов правил только вместо 10.8.0.4 поставил 10.8.0.6, 10.8.0.7. Сохранил правила, перезапустил IPTables и RDP начал работать.

HultgrenTomas
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.