Przekierowanie portów

Konfiguracja serwerów, usług, itp.
fander
Posty: 4
Rejestracja: 12 sierpnia 2013, 15:15

Przekierowanie portów

Post autor: fander »

Witam uprzejmie
Jestem tutaj nowy i potrzebuję pomocy w konfiguracji iptables. Nakreślę jak wygląda sprawa u mnie:

Posiadam ruter do neostrady Adres tego rutera to: w sieci lokalnej to: 192.168.1.1 do rutera mam wpięty "serwer", przez który przechodzi cały ruch. Serwer ma w sobie dwie karty. Pierwszy interfejs eth0 ma adres 192.168.1.254 i podłączony jest do routera. Drugi interfejs eth1 ma adres 10.0.0.1 i jest on podłączony do siei lokalnej.

W sieci lokalnej posiadam parę stacji roboczych oraz jeden "rejestrator", na którym znajduje się aplikacja pod Linuksa do rejestrowania obrazu z kamer. Aplikację zarządza się przez www (łączenie następuje przez port 80). Adres tego "rejestratora" na interfejsie eth1 to 10.0.0.2 (podłączony jest on do sieci lokalnej). Druga karta eth0 tworzy podsieć dla kamer oraz innych urządzeń. Adres karty eth1 to 192.168.1.1. Na rejestratorze jaki i Serwerze zainstalowany jest Debian. Rejestrator ,,piada'' Debiana w najnowszej stabilnej wersji, a serwer Debiana w wersji 6.0.5

Mój problem polega na tym, że nie jestem sobie w stanie poradzić z przekierowaniem portów do zdalnego dostępu do serwera kamer. Chciałbym abym mógł się łączyć z internetu do serwera kamer powiedzmy na porcie 4000. Z routerem nie mam problemu ponieważ wpisuję w nim tylko nr portu do odblokowania oraz adres serwera (192.168.1.254) oraz port 4000.

Na serwerze natomiast ustawiam sobie w pliku firewall:

Kod: Zaznacz cały

 
#! /bin/sh
/bin/echo 1 > /proc/sys/net/ipv4/ip_forvard
.
#masa innych zabezpieczen
.
# czyszczenie starych regul
iptables -F
iptables -X
iptables -t nat -X
iptables -t nat -F
iptables -t mangle -F
iptables -t mangle -X

# ustawienie domyslnej polityki
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT

iptables -A INPUT -m conntrack --ctstate NEW -p tcp --tcp-flags SYN,RST,ACK,FIN,URG,PSH ACK -j DROP
iptables -A INPUT -m conntrack --ctstate NEW -p tcp --tcp-flags SYN,RST,ACK,FIN,URG,PSH FIN -j DROP
iptables -A INPUT -m conntrack --ctstate NEW -p tcp --tcp-flags SYN,RST,ACK,FIN,URG,PSH FIN,URG,PSH -j DROP

# utrzymanie polaczen nawiazanych
iptables -A INPUT -j ACCEPT -m state --state ESTABLISHED,RELATED
iptables -A FORWARD -j ACCEPT -m state --state ESTABLISHED,RELATED
iptables -A OUTPUT -j ACCEPT -m state --state ESTABLISHED,RELATED

#Kamery
iptables -t nat -A PREROUTING -p tcp --dport 4000 -j DNAT --to 10.0.0.2:80


Rejestrator posiada plik firewall z następującymi regułkami

Kod: Zaznacz cały

#! /bin/sh
/bin/echo 1 > /proc/sys/net/ipv4/ip_forvard
.
#masa innych zabezpieczen
.
# czyszczenie starych regul
iptables -F
iptables -X
iptables -t nat -X
iptables -t nat -F
iptables -t mangle -F
iptables -t mangle -X

# ustawienie domyslnej polityki
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT

iptables -A INPUT -m conntrack --ctstate NEW -p tcp --tcp-flags SYN,RST,ACK,FIN,URG,PSH ACK -j DROP
iptables -A INPUT -m conntrack --ctstate NEW -p tcp --tcp-flags SYN,RST,ACK,FIN,URG,PSH FIN -j DROP
iptables -A INPUT -m conntrack --ctstate NEW -p tcp --tcp-flags SYN,RST,ACK,FIN,URG,PSH FIN,URG,PSH -j DROP

# utrzymanie polaczen nawiazanych
iptables -A INPUT -j ACCEPT -m state --state ESTABLISHED,RELATED
iptables -A FORWARD -j ACCEPT -m state --state ESTABLISHED,RELATED
iptables -A OUTPUT -j ACCEPT -m state --state ESTABLISHED,RELATED

iptables -A INPUT -p tcp -s 0/0 --sport 1024:65535 -d 10.0.0.2 --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -p tcp -s 10.0.0.2 --sport 80 -d 0/0 --dport 1024:65535 -m state --state ESTABLISHED -j ACCEPT

Sprawa wygląda tak:

Jeśli jestem w sieci lokalnej za serwerem i adres mojej karty sieciowej to: 10.0.0.100, to wywołując w przeglądarce
adres: 10.0.0.2 - otwiera się mi strona z konfiguracją kamer.
adres: 10.0.0.2:4000 - otwiera się mi strona z konfiguracją kamer
Jeśli jestem podłączony za routerem i adres mojej karty sieciowej to: 192.168.1.100, to wywołując w przeglądarce
adres: 192.168.1.254:4000 - nie otwiera się strona
Analogicznie jeśli jestem poza biurem (w domu) i łączę się zdalnie poprzez internet wywołując: <ip neostrada biuro>:4000 - nie otwiera się strona


Bardzo proszę o pomoc, walczę z tym już chwilkę i nie mam pomysłu dlaczego może to nie działać.

Pozdrawiam
Awatar użytkownika
lun
Beginner
Posty: 266
Rejestracja: 01 lutego 2010, 22:06
Lokalizacja: Warszawa

Post autor: lun »

Wydaje mi się, że ktoś już tutaj (pod innym nickiem) zakładał podobny temat, ale wtedy nie było żadnych konkretnych informacji.

Teraz muszę przyznać wszystko jest opisane perfekcyjnie.

A więc tak. Problemem jest to, że musisz przekazać (ang. forward) pakiety z jednej karty sieciowej na drugą.
Znalazłem taki oto fragment dzięki wujkowi Google: http://serverfault.com/questions/431593 ... 607#431607

Oraz taki fajny opis:
That being said, you want your host to become a gateway, but more specific, only to protocols HTTPand HTTPS (80 / 443). To achieve this, you should:
  1. Be able to forward traffic between this two interfaces
  2. Forward packets with destination port 80 (HTTP)
  3. Forward packets with destination port 443 (HTTPS)
  4. As iptables (netfilter) is a stateless packet filtering system, accept packets that are comming back
  5. Source NAT (change the originating IP address) to your host's IP
Translated to iptables:

echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -A FORWARD -i eth0 -o eth1 -p tcp --dport 80 -j ACCEPT
iptables -A FORWARD -i eth0 -o eth1 -p tcp --dport 443 -j ACCEPT
iptables -A FORWARD -i eth1 -o eth0 -m state --state ESTABLISHED,RELATED \ -j ACCEPT
iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE

Provided the other hosts on your network are using your host to reach internet (meaning your linux box behaves as a gateway).
Jeśli opis nie naprowadzi Cię na rozwiązanie, to mogę pokusić się jutro o odtworzenie twojej sytuacji i adresacji w wirtualnym środowisku i dokładniejszą pomoc.
fander
Posty: 4
Rejestracja: 12 sierpnia 2013, 15:15

Post autor: fander »

Witam
Bardzo dziękuję za odpowiedz, będę w biurze to sprawdzę czy regułki zadziałają :)

Pozdrawiam

Witam

Dla potomności, zadziałały następujące regułki w firewallu Serwera

Kod: Zaznacz cały

iptables -t nat -A PREROUTING -p tcp -i eth1 --dport 4000 -j DNAT --to 10.0.0.2:80
iptables -A FORWARD -i eth0 -o eth1 -p tcp --dport 4000 -j ACCEPT
iptables -A FORWARD -i eth1 -o eth0 -p tcp -m state --state ESTABLISHED,RELATED  -j ACCEPT
iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE
ciscoknx90
Posty: 27
Rejestracja: 22 lipca 2013, 08:06

Post autor: ciscoknx90 »

Podepnę się pod temat.

Kod: Zaznacz cały

	# <============>
	#     KAMERY
       # <============>

        iptables -I FORWARD --protocol tcp -d ip_zew --dport 37770 -j ACCEPT
	 iptables -I FORWARD --protocol udp -d ip_zew --dport 37770 -j ACCEPT
        iptables -I FORWARD --protocol tcp -d ip_zew --dport 37777 -j ACCEPT
	 iptables -I FORWARD --protocol udp -d ip_zew --dport 37777 -j ACCEPT
	 iptables -I FORWARD --protocol tcp -d ip_zew --dport 37778 -j ACCEPT
	 iptables -I FORWARD --protocol udp -d ip_zew --dport 37778 -j ACCEPT
	 iptables -I FORWARD --protocol udp -d ip_zew --dport 554 -j ACCEPT

        iptables -t nat -I PREROUTING --protocol tcp -d ip_zew --dport 37770 -j DNAT --to 192.168.2.254:37770
        iptables -t nat -I PREROUTING --protocol udp -d ip_zew --dport 554 -j DNAT --to 192.168.2.254:554
        iptables -t nat -I PREROUTING --protocol tcp -d ip_zew --dport 37777 -j DNAT --to 192.168.2.254:37777
	 iptables -t nat -I PREROUTING --protocol udp -d ip_zew --dport 37778 -j DNAT --to 192.168.2.254:37778

Przekierowałem z wanu do lanu i mogę w lanie wejść przez zewnętrzny adres IP na kamery, ale z innych sieci nie mam dostępu do nich.
Awatar użytkownika
lun
Beginner
Posty: 266
Rejestracja: 01 lutego 2010, 22:06
Lokalizacja: Warszawa

Post autor: lun »

Weź przykład z twórcy tematu, poświęć trochę czasu na opisanie (podobnie jak on), jak wygląda twoja infrastruktura, co wychodzi jakim interfejsem, co znajduje się na jakim adresie ip.

Musisz mieć jakąś "bramę", a w regułach które wkleiłeś (chociaż nie wiem czy są one z bramy), nie widzę przekierowania między interfejsami.
ciscoknx90
Posty: 27
Rejestracja: 22 lipca 2013, 08:06

Post autor: ciscoknx90 »

Łącze idzie u mnie kablem z ekranowaniem. Wchodzi do czegoś w rodzaju wzmacniacza jednym wejściem rj45, a drugim wychodzi do serwera który jest postawiony na Debianie 6.0. Kabel wchodzi do interfejsu eth0 na adresie 10.5.5.1

Debian posiada dwie karty sieciowe - eth0 jak już wyżej wspomniałem, posiada statyczny lanowski 10.5.5.2. Druga karta, eth1, posiada lanowski statyczny adres 192.168.2.1 maska 255.255.255.0 i jest bramą dla wszystkich urządzeń, działających w sieci. Kabel z eth1 o adresie 192.168.2.1 wychodzi na niezarządzalne przełączniki, i wszystkie końcowe urządzenia mają ustawioną statyczną adresację z bramą 192.168.2.1 w tym rejestrator, który ma adres 192.168.2.254.

Rejestrator to zwykły BCS DVR, działa na porcie http 37770 (zmieniłem z 80). Jego porty TCP to standard 37777 i UDP 37778. Rejestrator ma oprogramowanie PSS w którym się go konfiguruje - chociaż tak na prawdę to konfiguracja sieciowa zaczyna się dopiero przez przeglądarkę. Mój problem polega na tym że nie mogę go udostępnić do podglądu zdalnego. Prawdopodobnie właśnie chodzi o forward pakietów, ale nie wiem jak napisać tą regułkę, ponieważ to są moje początki z Debianem i w ogóle Linuksem.

Kod: Zaznacz cały

#!/bin/sh

### BEGIN INIT INFO
# Provides:          scriptname
# Required-Start:    $remote_fs $syslog
# Required-Stop:     $remote_fs $syslog
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Start daemon at boot time
# Description:       Enable service provided by daemon.
### END INIT INFO

# włączenie w jądrze przekierowania
/bin/echo 1 > /proc/sys/net/ipv4/ip_forward
# Ochrona przed atakiem typu Smurf
/bin/echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
# Nie aktceptujemy pakietow "source route"
/bin/echo 0 > /proc/sys/net/ipv4/conf/all/accept_source_route
# Nie przyjmujemy pakietow ICMP rediect, ktore moga zmienic tablice routingu
/bin/echo 0 > /proc/sys/net/ipv4/conf/all/accept_redirects
# Wlaczamy ochrone przed blednymi komunikatami ICMP error
/bin/echo 1 > /proc/sys/net/ipv4/icmp_ignore_bogus_error_responses
# Wlaczenie mechanizmu wykrywania oczywistych falszerstw (pakiety znajdujace sie tylko tablicy routingu)
#######/bin/echo 1 > /proc/sys/net/ipv4/conf/all/rp_filter
/bin/echo 1 > /proc/sys/net/ipv4/tcp_timestamps
/bin/echo 1 > /proc/sys/net/ipv4/conf/all/log_martians
/bin/echo 10 > /proc/sys/net/ipv4/ipfrag_time
#/bin/echo 65536 > /proc/sys/net/ipv4/netfilter/ip_conntrack_max
/bin/echo 36024 > /proc/sys/net/ipv4/tcp_max_syn_backlog
# zwiekszenie rozmaru tablicy ARP
/bin/echo 1024 > /proc/sys/net/ipv4/neigh/default/gc_thresh1
/bin/echo 4096 > /proc/sys/net/ipv4/neigh/default/gc_thresh2
/bin/echo 8192 > /proc/sys/net/ipv4/neigh/default/gc_thresh3
/bin/echo 1 > /proc/sys/net/ipv4/tcp_rfc1337
/bin/echo 1 > /proc/sys/net/ipv4/ip_no_pmtu_disc
/bin/echo 1 > /proc/sys/net/ipv4/icmp_ignore_bogus_error_responses
#/bin/echo 60 > /proc/sys/net/ipv4/netfilter/ip_conntrack_tcp_timeout_close_wait
#/bin/echo 360 > /proc/sys/net/ipv4/netfilter/ip_conntrack_tcp_timeout_established
/bin/echo 30 > /proc/sys/net/ipv4/tcp_fin_timeout
/bin/echo 2400 > /proc/sys/net/ipv4/tcp_keepalive_time
/bin/echo 0 > /proc/sys/net/ipv4/tcp_window_scaling
/bin/echo 0 > /proc/sys/net/ipv4/tcp_sack
/bin/echo 20 > /proc/sys/net/ipv4/ipfrag_time
/bin/echo 1280 > /proc/sys/net/ipv4/tcp_max_syn_backlog
# Blokada przed atakami typu SYN FLOODING
/bin/echo 1 > /proc/sys/net/ipv4/tcp_syncookies
# WĹ‚aczenie proxy arp - dzieki temu serwer nie zdycha po kilku
#/bin/echo 1 > /proc/sys/net/ipv4/conf/all/arp_filter
# Zwiekszenie rozmiarutablic routingu
/bin/echo "18192" > /proc/sys/net/ipv4/route/max_size


################################
### czyszczenie starych regul
   iptables -F
   iptables -X
   iptables -t nat -X
   iptables -t nat -F
   iptables -t mangle -F
   iptables -t mangle -X
### koniec czyszczenia starych regul
################################


###############################
### 

################################
### ustawienie domyslnej polityki
   iptables -P INPUT ACCEPT
   iptables -P FORWARD ACCEPT
   iptables -P OUTPUT ACCEPT

  iptables -A INPUT --protocol tcp --destination-port 22 -j ACCEPT
  iptables -A INPUT --protocol tcp --destination-port 80 -j ACCEPT
  iptables -A INPUT --protocol tcp --destination-port 88 -j ACCEPT
  iptables -A INPUT --protocol tcp --destination-port 100 -j ACCEPT
  iptables -A INPUT --protocol tcp --destination-port 7000 -j ACCEPT
  iptables -A INPUT --protocol tcp --destination-port 11111 -j ACCEPT
#########################
### 
   iptables -A INPUT --protocol tcp --destination-port 37777 -j ACCEPT
   iptables -A INPUT --protocol udp --destination-port 37778 -j ACCEPT
   iptables -A INPUT --protocol tcp --source-port 37770 -j ACCEPT
  
   iptables -A INPUT --protocol udp --source-port 53 -j ACCEPT
   iptables -A INPUT --protocol udp --destination-port 53 -j ACCEPT

   iptables -A INPUT -m conntrack --ctstate NEW -p tcp --tcp-flags SYN,RST,ACK,FIN,URG,PSH ACK -j DROP
   iptables -A INPUT -m conntrack --ctstate NEW -p tcp --tcp-flags SYN,RST,ACK,FIN,URG,PSH FIN -j DROP
   iptables -A INPUT -m conntrack --ctstate NEW -p tcp --tcp-flags SYN,RST,ACK,FIN,URG,PSH FIN,URG,PSH -j DROP
### koniec ustawień domyślnej polityki
################################


################################
###### POŁĄCZENIA NAWIĄZANE

   ##############
   ## utrzymywanie polaczen nawiazanych
      iptables -A INPUT -j ACCEPT -m state --state ESTABLISHED,RELATED
      iptables -A FORWARD -j ACCEPT -m state --state ESTABLISHED,RELATED
      iptables -A OUTPUT -j ACCEPT -m state --state ESTABLISHED,RELATED
      iptables -A INPUT -p icmp -j ACCEPT
      #iptables -A OUTPUT -p icmp -j ACCEPT

   ## koniec podtrzymywania polaczen
   ##############

###### KONIEC POŁĄCZEŃ NAWIĄZANYCH
################################


################################
######  PRZEKIEROWANIA PORTOW

    # <============>
    #     KAMERY
       # <============>

        iptables -I FORWARD --protocol tcp -d  --dport 37770 -j ACCEPT
     iptables -I FORWARD --protocol udp -d  --dport 37770 -j ACCEPT
        iptables -I FORWARD --protocol tcp -d  --dport 37777 -j ACCEPT
     iptables -I FORWARD --protocol udp -d  --dport 37777 -j ACCEPT
     iptables -I FORWARD --protocol tcp -d  --dport 37778 -j ACCEPT
     iptables -I FORWARD --protocol udp -d  --dport 37778 -j ACCEPT
      iptables -I FORWARD --protocol tcp  -d  --dport 11111 -j ACCEPT
     iptables -I FORWARD --protocol udp -d  --dport 554 -j ACCEPT

        iptables -t nat -I PREROUTING --protocol tcp -d  --dport 37770 -j DNAT --to 192.168.2.254:37770
        iptables -t nat -I PREROUTING --protocol udp -d  --dport 554 -j DNAT --to 192.168.2.254:554
        iptables -t nat -I PREROUTING --protocol tcp -d  --dport 37777 -j DNAT --to 192.168.2.254:37777
     iptables -t nat -I PREROUTING --protocol udp -d --dport 37778 -j DNAT --to 192.168.2.254:37778

  

###### KONIEC PRZEKIEROWANIA PORTOW
################################


################################
######  udostepniaie internetu w sieci lokalnej

     iptables -t nat -A POSTROUTING -s 0/0 -d 0.0.0.0/0 -j SNAT --to 10.5.5.2

###### koniec udostepniania internetu w sieci lokalnej
################################


###############################
###### forwardowanie vpn
#    iptables -A FORWARD -i tun+ -j ACCEPT
###### koniec forwardowania vpn
################################

Tak wygląda mój firewall.

Co dokładnie zrobić, żeby to działało jak należy? Mogę po zewnętrznym ip wejść, ale tylko będąc w lanie urządzenia.
Awatar użytkownika
lun
Beginner
Posty: 266
Rejestracja: 01 lutego 2010, 22:06
Lokalizacja: Warszawa

Post autor: lun »

Jakaś postać się z tego klaruje. W sumie masz adresację ustawioną odwrotnie niż twórca tematu.
Musisz tylko powiedzieć, w której podsieci masz stację roboczą z której próbujesz się dostać do tego rejestratora. I co to znaczy
Mogę po zewnętrznym ip wejść, ale tylko będąc w lanie urządzenia
ciscoknx90
Posty: 27
Rejestracja: 22 lipca 2013, 08:06

Post autor: ciscoknx90 »

1. Wszystkie hosty działają w tej samej podsieci co rejestrator.
A więc rejestrator ma adres 192.168.2.254
Hosty są rozdzielone 192.168.2.2-192.168.2.100
Wszystkie urządzenia mają bramę domyślną na Debiana czyli 192.168.2.1

2. Mamy jeden stały zewnętrzny adres ip przypisany przez providera. Przekierowałem wszystkie trzy porty rejestratora: http 37770, tcp 37777, udp 37778.
Wchodzę po ip_zew:37770 na rejestrator, będąc w LAN tego rejestratora, czyli posiadając adres 192.168.2.6 i bramę na Debiana czyli 192.168.2.1 i loguję się normalnie.

Za to mając oprogramowanie do kamer na moim telefonie komórkowym, chcąc mieć podgląd na kamery - już nie mogę wbić. Mam abonament z Playa na telefonie ale to nie ma większego znaczenia. Mamy drugie zapasowe łączę DSL z tpsa i podłączałem tylko mojego kompa pod DSL-a żeby na innym łączu i też nie działa. Nie działa także z mojego domu, innej firmy itp. - słowem: nie ma dostępu do kamer " z internetu ".
Awatar użytkownika
lun
Beginner
Posty: 266
Rejestracja: 01 lutego 2010, 22:06
Lokalizacja: Warszawa

Post autor: lun »

Brakuje tutaj w tym wszystkim jednego elementu, mianowicie rutera, na którym musisz wykonać zmiany aby to zaczęło działać.

Jak próbujesz się dostać do kamer z zewnątrz, pakiet wychodzi z twojego IP i trafia do publicznego IP twojego providera. Nie wiem czy od swojego providera dostajesz tylko adres ip z podsieci 10.5.5.x, czy po drodze jest jeszcze urządzenie o którym nie piszesz, ale jeśli tak, to na urządzeniu providera należy ustawić przekierowanie pakietów.

Załóżmy że twoim publicznym adresem ip jest 87.64.126.80. Chcąc dostać się do kamer wpisujesz w przeglądarce http://89.74.126.80:37770. Na ruterze (który udostępnia ci adres 10.5.5.2) należy ustawić przekierowanie całego ruchu, który przyjdzie na port 37770 do lokalnego adresu 10.5.5.2. Następnie na Debianie musisz ustawić przekierowanie między kartami sieciowymi (eth0 i eth1), maskaradę oraz przekierowanie (wszystko co wejdzie na port 37770 po adresie ip 10.5.5.2, ma zostać przekierowane na adres ip 192.168.2.254 na port 80.

Rób to wszystko etapami, testując (telnetem i netstatem) gdzie udaje ci się dostać.
ciscoknx90
Posty: 27
Rejestracja: 22 lipca 2013, 08:06

Post autor: ciscoknx90 »

Masz rację. Ruter który udostępnia adres Debianowi to mikrotik providera. Ale nie dostanę do niego passów. Już napisałem do providera żeby przekierował mi co potrzebne. Zobaczymy jak to dalej się rozwiąże.

Dodane:
Provider przekierował wszystkie porty z adresu publicznego na 10.5.5.2

Kod: Zaznacz cały

iptables -t nat -A PREROUTING -p tcp -i 10.5.5.2 --dport 37770 -j DNAT --to 192.168.2.254:80
 iptables -A FORWARD -i eth0 -o eth1 -p tcp --dport 37770 -j ACCEPT
iptables -A FORWARD -i eth1 -o eth0 -p tcp -m state --state ESTABLISHED,RELATED  -j ACCEPT
iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE
Zrobiłem tak i nadal nie działa. Gdzie jest błąd?
ODPOWIEDZ