Apache + VPN

 ( sharky | 2013. június 21., péntek - 11:01 )

Adott egy szerver ami kiszolgal egy web app -ot ( Apache ), tovabba OpenVPN szerverkent is hasznaljuk.
Azt szeretnem elerni, hogy ha valaki VPN -ra van csatlakozva, akkor http://BELSO_HALO_IP -ra legyen kuldve ( .htpassword nelkul ), amennyiben kivulrol szeretne elerni, akkor a https://PUBLIKUS_IP URL -n fusson az alkalmazas ( + .htpassword )
Amit nem sikerul megoldani, az az, hogy az Apache ismerje fel a belso halorol erkezoket ( ezt csak akkor sikerul elerni, ha http://BELSO_HALO_IP -vel nyitja meg az app -ot ).
Nem lehet valahogy megoldani azt, hogy EGY URL legyen ( pl. a publikus ip ) es legyen atiranyitva a private ip -re, ha csatlakozva van a VPN -re.

Apache access log:
-Ha private ip-n nyitom meg: "10.9.8.6 - - [21/Jun/2013:12:49:52 +0400] ......"
- Ha pedig a publikus IP-n: "95.xxx.xxx.xxx - - [21/Jun/2013:12:51:48 +0400] ... "

Hozzászólás megjelenítési lehetőségek

A választott hozzászólás megjelenítési mód a „Beállítás” gombbal rögzíthető.

Ez így ebben a formában nem megoldható. A nevet a DNS minden esetben a külső IP-re fogja feloldani. A kliens elindul és egy publikus IP felé a saját publikus IP-jén keresztül fog csatlakozni. Ezen a ponton nem eldönthető, hogy a kliensnek van-e VPN-je és az itt terminálódik-e? Ezt nem csak az apache, de más se fogja tudni megmondani.
Egy lehetőséged van - de az nem apache szinten orvosolja a problémát. Csinálj egy belső DNS-t, amely ezt a nevet a belső IP-re oldja fel. Utána oldd meg, hogy a VPN átadja a kliensnek a te DNS-ed IP-jét. Ekkor a feladatot - igaz, nem apache szinten - megoldottad. Akinek van VPN-je, annak a te DNS-ed oldja fel a nevet a belső DNSIP-re, akinek nincs VPN-je, annak e külső DNS oldja fel a nevet a külső IP-re.

Ertem. Koszonom! Ez - sajnos - meghaladja a tudasom. A PHP az jobban megy. Azt hiszem, ugy fogom megoldani, hogy a default URL a publikus IP lesz, megnyilik az app, ellenorzom ( PHP ), hogy a belso IP ( 10.9.8.1 ) elerheto -e, amennyiben igen ( esetleg, keszitek egy "ujjlenyomatot", hogy ellenorizhessem, hogy nincs-e egy masik VPN -re csatlakoztatva a kliens ) akkor atiranyitom.
Az apache -ban a belso ip csak 80-on hallgat, a publikus pedig automatikus atiranyitast vegez a 443-ra.
Elegge ganyolas erzesem van. :))

belso dns es ez:

Deny from all
Order deny,allow

AuthName "Password protected site"
AuthUserFile /path/.htpasswd
AuthType Basic
Require valid-user
Allow from 10.0.0.
Satisfy Any

Igen, koszonom! Az apache konfig az megvolt, az nagyon hasonlit ahhoz amit irtal, de a belso DNS -hez nem ertek, szoval inkabb azt a megoldast valasztottam amihez ertettem :)