VPS/VPN/Remote Desktop

Fórumok

Sziasztok!
Egy kis segítséget szeretnék kérni, elakadtam.
Van 2 VPS-ünk az egyik Debian 6 (ez lenne a tűzfal) a másik Windows 2003 Server. Mindkettőnek van fix publikus IP címe. Debianon van egy OpenVPN, működik rendesen, szépen be lehet lépni. Bentről SSH-val el lehet érni a Debiant. Ez is OK.
Most azt szeretném megoldani, hogy a Windows 2003 elérése Remote Desktoppal ne kívülről menjen publikus cím 3389-es portján, hanem először be kelljen lépni a felhasználónak a VPN-re, majd onnan lehessen a Windows Servert elérni privát címről.

ifconfig most ezt mutatja:

lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)

tun0 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
inet addr:192.168.1.1 P-t-P:192.168.1.2 Mask:255.255.255.255
UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1500 Metric:1
RX packets:52 errors:0 dropped:0 overruns:0 frame:0
TX packets:40 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:100
RX bytes:4992 (4.8 KiB) TX bytes:5833 (5.6 KiB)

venet0 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
inet addr:127.0.0.2 P-t-P:127.0.0.2 Bcast:0.0.0.0 Mask:255.255.255.255
UP BROADCAST POINTOPOINT RUNNING NOARP MTU:1500 Metric:1
RX packets:508 errors:0 dropped:0 overruns:0 frame:0
TX packets:491 errors:0 dropped:2 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:48322 (47.1 KiB) TX bytes:47848 (46.7 KiB)

venet0:0 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
inet addr:173.237.191.156 P-t-P:173.237.191.156 Bcast:0.0.0.0 Mask:255.255.255.255
UP BROADCAST POINTOPOINT RUNNING NOARP MTU:1500 Metric:1

Hogyan tovább?
Köszi előre is a segítséget.

Hozzászólások

a windows-nak muszaj publikus IP? mert akkor minek a tuzfal? nem ertem.

--
FBK

Nem kellene neki publikus, de adták a csomaghoz. Nem is akarom használni. Most is az RDP a tűzfalon keresztül megy a Windows felé. Windows tűzfalán beállítottam, hogy csak a másik géptől érkező csomagokat fogadja. Azt szeretném jobban védeni, hogy csakis belső hálóról lehessen elérni a Windows-t.

Még annyi infó, hogy ezek OpenVZ-s virtualizációk, nem tudok használni pl. MASQUERADE-ot sem. 2 hét volt lekommunikálni velük, hogy adjanak "tun"-t.

Megvalósítható így amit szeretnék, vagy hagyjuk a szolgáltatót... :)

Nem biztos, hogy jól értem a problémát, de mivan akkor ha:
- vpn klienst csinálsz a windowsból, beállítod hogy mindig ugyanazt az ip-t kapja (ipp.txt?)
- ha még nem állítottad be, az openvpn server.conf-ban beállítod hogy a kliensek tudjanak egymáshoz csatlakozni (client-to-client?)
- a másik openvpn kliensről csatlakozol remote desktoppal a windowsra a 192.168.1.X címen.

--
http://csuhai.hu
http://sys-admin.hu

Debianon openvpn server.conf-ba beírod következő sort: push "redirect-gateway def1"
Aztán ezt a iptables szabályt: iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j MASQUERADE
Így az openvpn-re csatlakozó klienseknek a Debian szerver publikus IP címet kapják meg, ezután a Windows szerver tűzfalába beállítod, hogy csak a debianos fix ip címről engedje a remote desktop 3389-es portját.

Az a baj, hogy rendesen le van korlátozva a virtuális gép. Fent írtam a masquerade sem megy:
iptables: No chain/target/match by that name.

Viszont közben másképpen, de megoldódott a problémám ezen része:
Ez a két szabály elég hozzá:

iptables -t nat -A PREROUTING -p tcp -d ${IP_VPN} --dport 3389 -j DNAT --to ${IP_FX2}:3389
iptables -t nat -A POSTROUTING -d ${IP_FX2} -j SNAT --to-source ${IP_FX1}

IP_FX1 és IP_FX2 a két gép publikus címe, az IP_VPN a belső cím, 192.168.1.1.
A Windowson csak annyit kellett megadni a tűzfalnál, hogy a Remote Desktop 3389-es portjára csak az IP_FX1 címről jöhetnek.
Miután belépek a VPN-be, a 192.168.1.1 címen elérhető a Windows.

Persze a baj nem jár egyedül, lenne még egy kérdesem, ami idevág:

STUNNEL:
Az egyik TCP porton a Linuxszal fogadjuk a beérkező SSL csomagokat, majd titkosítatlanul tovább mennek a Windowsra feldolgozásra. Ez gyakorlatilag performancia javítás, a Windows is le tudná kezelni az SSL-t természetesen. Az a probléma, hogy ebben a felállásban a Windows-on már nincs meg a küldő IP címe, minden kapcsolat úgy néz ki, mintha az IP_FX1-es címről jönne.

A kérdés az, hogy Masquerade nélkül az stunnel-en bejövő és továbbított TCP csomagjának küldőjét megtudhatom a Windows-os gépen saját alkalmazásból?
Vagy mindenképpen ki kell harcolni a szolgáltatónál ezt a funkciót? Sajnos elég rugalmatlanok.