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