[Rozw.] Jak przekierować stronę na wew. adres IP

Serwery i sieci oparte na Slackware, wszelkiego rodzaju usługi, troubleshooting.

Moderatorzy: Moderatorzy, Administratorzy

cent4
Użytkownik
Posty: 289
Rejestracja: 2012-03-20, 11:18

[Rozw.] Jak przekierować stronę na wew. adres IP

Post autor: cent4 »

Mam domenę, która kieruje na adres publiczny. Na adresie publicznym mam serwer 192.168.1.1 z kilkoma vhostami
Na jednym vhoście mam stronę z certyfikatem SSL.
Domena i certyfikat są przeniesione na inny serwer wewnątrz sieci na adres 192.168.1.200
Jak przekierować, żeby ten adres i certyfikat był odpytywany na tym wewnętrznym adresie?
Tak to było, gdy strona żyła na starym serwerze: 192.168.1.1:

Kod: Zaznacz cały

<VirtualHost *:443>
    ServerAdmin webmaster@xxx.domena.pl
    DocumentRoot "//srv/httpd/htdocs/vhost/xxx"
    ServerName xxx.domena.pl
    ServerAlias www.xxx.domena.pl
    ErrorLog "/var/log/httpd/xxx.domena.pl_log"
    CustomLog "/var/log/httpd/xxx.domena.pl-access_log" common
    SSLEngine On
    SSLCertificateFile /etc/httpd/certyfikat/1111111.cert
    SSLCertificateKeyFile /etc/httpd/certyfikat/1111111.key
    SSLCACertificateFile /etc/httpd/certyfikat/11111111.cert
</VirtualHost>
Ostatnio zmieniony 2022-11-03, 14:30 przez cent4, łącznie zmieniany 1 raz.
cent4
Użytkownik
Posty: 289
Rejestracja: 2012-03-20, 11:18

Re: Jak przekierować stronę na wew. adres IP

Post autor: cent4 »

Chyba, że w tym folderze: //srv/httpd/htdocs/vhost/xxx zrobić jakieś przekierowanie za pomocą .htaccess?

Jak to ugryźć?
cent4
Użytkownik
Posty: 289
Rejestracja: 2012-03-20, 11:18

Re: Jak przekierować stronę na wew. adres IP

Post autor: cent4 »

Chyba to zrobię prościej...
Przeniosę wszystkie te strony na ten nowy serwer...
I wtedy przekieruję porty www (80, 443 i 8080) na ten wewnętrzny adres IP.
Dobrze rozumiem?

Kod: Zaznacz cały

iptables -A FORWARD -d 192.168.1.200 -p tcp --dport 80, 8080, 443 -j ACCEPT
Czy to będzie ok?
Awatar użytkownika
Lizard
Moderator
Posty: 2629
Rejestracja: 2005-05-21, 15:48
Lokalizacja: miasto w mieście

Re: Jak przekierować stronę na wew. adres IP

Post autor: Lizard »

To, co próbujesz zrobić, to przeniesienie usługi do DMZ-etu. Na serwerze 192.168.1.1 musisz włączyć przekazywanie pakietów (sysctl net.ipv4.ip_forward=1) i skonfigurować NAT, aby maszyna w DMZ-ecie komunikowała się ze światem:

Kod: Zaznacz cały

iptables -t nat -A POSTROUTING -s 192.168.1.200 -j SNAT --to-source <publiczne IP>
Podobnie trzeba postąpić, aby świat komunikował się z maszyną w DMZ-ecie:

Kod: Zaznacz cały

iptables -t nat -A PREROUTING -d <publiczne IP> -j DNAT --to-destination 192.168.1.200
Powyższe przekieruje cały ruch przychodzący z zewnątrz na 192.168.1.200. Jeżeli chcesz przekierować tylko ruch na określonych portach to zamiast drugiej reguły zastosuj:

Kod: Zaznacz cały

iptables -t nat -A PREROUTING -d <publiczne IP> -p tcp -m multiport --dports 80,443,8080 -j DNAT --to 192.168.1.200
Error 404 - footer not found
cent4
Użytkownik
Posty: 289
Rejestracja: 2012-03-20, 11:18

Re: Jak przekierować stronę na wew. adres IP

Post autor: cent4 »

Niestety powyższe nie działają...
Mam pewne porty przekierowane wg. poniższych wpisów i one działają ale te 3 nie chcą działać...

Kod: Zaznacz cały

iptables -I FORWARD -d 192.168.1.200 -p udp --dport 80 -j ACCEPT
iptables -t nat -I PREROUTING -d IP_PUBLICZNE -p udp --dport 80 -j DNAT --to 192.168.1.200
iptables -I FORWARD -d 192.168.1.200 -p udp --dport 8080 -j ACCEPT
iptables -t nat -I PREROUTING -d IP_PUBLICZNE -p udp --dport 8080 -j DNAT --to 192.168.1.200
iptables -I FORWARD -d 192.168.1.200 -p udp --dport 443 -j ACCEPT
iptables -t nat -I PREROUTING -d IP_PUBLICZNE -p udp --dport 443 -j DNAT --to 192.168.1.200
Awatar użytkownika
Lizard
Moderator
Posty: 2629
Rejestracja: 2005-05-21, 15:48
Lokalizacja: miasto w mieście

Re: Jak przekierować stronę na wew. adres IP

Post autor: Lizard »

Przekierowujesz UDP, zamiast TCP, więc nie oczekuj, że będzie działać.
Reguły dla łańcucha FORWARD nie są potrzebne, jeżeli masz ustawioną domyślną politykę (ACCEPT). Czy ustawiłeś /proc/sys/net/ipv4/ip_forward na 1? Na przykład poprzez:

Kod: Zaznacz cały

# sysctl net.ipv4.ip_forward=1
Error 404 - footer not found
cent4
Użytkownik
Posty: 289
Rejestracja: 2012-03-20, 11:18

Re: Jak przekierować stronę na wew. adres IP

Post autor: cent4 »

do pliku rc.firewall dopisałem to:

Kod: Zaznacz cały

iptables -I FORWARD -d 192.168.1.200 -p tcp --dport 80 -j ACCEPT
iptables -t nat -I PREROUTING -d IP_PUBLICZNE -p tcp --dport 80 -j DNAT --to 192.168.1.200
iptables -I FORWARD -d 192.168.1.200 -p tcp --dport 8080 -j ACCEPT
iptables -t nat -I PREROUTING -d IP_PUBLICZNE -p tcp --dport 8080 -j DNAT --to 192.168.1.200
iptables -I FORWARD -d 192.168.1.200 -p tcp --dport 443 -j ACCEPT
iptables -t nat -I PREROUTING -d IP_PUBLICZNE -p tcp --dport 443 -j DNAT --to 192.168.1.200
nie działa...
rozumiem, że mam wywołać z konsoli:

Kod: Zaznacz cały

sysctl net.ipv4.ip_forward=1
wtedy będzie działać?
Wiesz... wolę zapytać, niż namieszać :-)
Na adresie publicznym mam też VPN'a ale mam nadzieję, że się nic nie namiesza? - chodzi tylko, żeby www odpytywało się na ten adres 192.168.1.200
Pytam też dlatego, że tak jak powyżej mam skonfigurowane przesłanie VPN na inny adres w sieci i to działa bez tego net.ipv4.ip_forward...
cent4
Użytkownik
Posty: 289
Rejestracja: 2012-03-20, 11:18

Re: [Rozw.] Jak przekierować stronę na wew. adres IP

Post autor: cent4 »

Wystarczyło tylko:

Kod: Zaznacz cały

iptables -I FORWARD -d 192.168.1.200 -p tcp --dport 80 -j ACCEPT
iptables -t nat -I PREROUTING -d IP_PUBLICZNE -p tcp --dport 80 -j DNAT --to 192.168.1.200
iptables -I FORWARD -d 192.168.1.200 -p tcp --dport 8080 -j ACCEPT
iptables -t nat -I PREROUTING -d IP_PUBLICZNE -p tcp --dport 8080 -j DNAT --to 192.168.1.200
iptables -I FORWARD -d 192.168.1.200 -p tcp --dport 443 -j ACCEPT
iptables -t nat -I PREROUTING -d IP_PUBLICZNE -p tcp --dport 443 -j DNAT --to 192.168.1.200
Bez:

Kod: Zaznacz cały

# sysctl net.ipv4.ip_forward=1
Awatar użytkownika
Lizard
Moderator
Posty: 2629
Rejestracja: 2005-05-21, 15:48
Lokalizacja: miasto w mieście

Re: [Rozw.] Jak przekierować stronę na wew. adres IP

Post autor: Lizard »

Czym różnią się Twoje wpisy od mojego, oprócz tego, że ja ogarnąłem całość jednym poleceniem?
Pokaż wynik polecenie sysctl net.ipv4.ip_forward (bez "=1").
Error 404 - footer not found
cent4
Użytkownik
Posty: 289
Rejestracja: 2012-03-20, 11:18

Re: [Rozw.] Jak przekierować stronę na wew. adres IP

Post autor: cent4 »

Wynikiem jest:

Kod: Zaznacz cały

net.ipv4.ip_forward = 1
Te wpisy nie różnią się niczym - tylko wpisałem, że nie trzeba było tego ostatniego polecenia...
Awatar użytkownika
Lizard
Moderator
Posty: 2629
Rejestracja: 2005-05-21, 15:48
Lokalizacja: miasto w mieście

Re: [Rozw.] Jak przekierować stronę na wew. adres IP

Post autor: Lizard »

Nie trzeba, bo masz już włączone w jądrze przekazywanie pakietów. Jeżeli powyższy parametr ustawisz na 0, to reguły iptables dla FORWARD przestaną działać. :-)
Error 404 - footer not found
ODPOWIEDZ