środa, 11 grudnia 2013

Przekierowanie adresu IP bez zmiany adresu WWW na VirtualHosta

Wyobraźmy sobie taka sytuacje: wszyscy użytkownicy z sieci A o adresacji 1.2.3.0 korzystają ze strony www.123.xxx, która na serwerze jest umieszczona w katalogu /var/www/html. My chcemy, żeby np  Użytkownik X o adresie ip 1.2.3.4 logując się na adres www.123.xxx korzystał ze strony umieszczonej na tym samym serwerze, ale w katalogu /var/www/html2. Można to wykonać np. tak:

Modyfikujemy plik konfiguracyjny apache i dodajemy wpis o Virtualce:


Wersja https://www.123.xxx

<VirtualHost *:81>
 

ServerName www.123.xxx
DocumentRoot /var/www/html2
ErrorLog logs/123-error_log
CustomLog logs/123-access_log combined


##SSL
SSLEngine on
SSLProtocol all -SSLv2
SSLCipherSuite HIGH:MEDIUM:!ADH:!MD5
SSLCertificateFile /etc/certs/cert.pem
SSLCertificateKeyFile /etc/certs/cert.pem
SSLCACertificateFile /etc/certs/cacert.pem


<Directory "/var/www/html2">
Options Indexes FollowSymLinks
AllowOverride None
Order deny,allow
Deny from all Allow from 1.2.3.4
 

</Directory>
</VirtualHost>







Wersja http://www.123.xxx
<VirtualHost *:81>
 

ServerName www.123.xxx
DocumentRoot /var/www/html2
ErrorLog logs/123-error_log
CustomLog logs/123-access_log combined


<Directory "/var/www/html2">
Options Indexes FollowSymLinks
AllowOverride None
Order deny,allow
Deny from all
Allow from 1.2.3.4
 

</Directory>
</VirtualHost>


Dodajemy adres IP użytkownika, który ma zostać przekierowany (Allow from), restartujemy apache

Następnie musimy przepuścić ruch na porcie 81 na firewallu jak mamy jakieś reguły blokujące:
 -A INPUT -s 1.2.3.4 -i eth0 -p tcp -m tcp --dport 81 -j ACCEPT

Restartujemy firewalla (wszystkie reguły iptables zdefiniowane wcześniej z ręki i nie zawarte w /etc/sysconfig/iptables zostaną usunięte):

 Następnie dodajemy regułę przekierowania portu (dla połączeń https to będzie port 443, ad la http to port 80) na port 81:

iptables -t nat -A PREROUTING -i eth0 -s 1.2.3.4 -p tcp -m tcp --dport 443 -j REDIRECT --to-ports 81

W tym momencie użytkownik o adresie będzie korzystał ze strony z lokalizacji /var/www/html2

Żeby usunąć dodaną regułę wydajemy polecenie:

iptables -t nat -D PREROUTING -i eth0 -s 1.2.3.4 -p tcp -m tcp --dport 443 -j REDIRECT --to-ports 81

Żeby sprawdzić aktywne obecnie reguły preroutingu wydajemy polecenie:
iptables -nL -t Nat

Żeby sprawdzić pozostałe reguły jakie są obecnie aktywne wydajemy polecenie:
iptables –L


Miłej zabawy :D