[+] Iptables otwarcie portu

Konfiguracja serwerów, usług, itp.
giaur
Member
Posty: 1915
Rejestracja: 25 maja 2007, 22:16

[+] Iptables otwarcie portu

Post autor: giaur »

Witam,

Mam udostępnioną neostradę za pomocą iptables i teraz chcę otworzyć jeden port, tak aby móc być aktywnym w programach p2p (np DC++).

Mój skrypt do udostępniania internetu:

Kod: Zaznacz cały

#Udostępnienie łącza
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -A POSTROUTING -s 192.168.1.0/24 -j MASQUERADE -t nat

#Odblokowanie portu 6500
iptables -A INPUT -p tcp --dport 6500 -m state --state NEW -j ACCEPT
iptables -A INPUT -p udp --dport 6500 -m state --state NEW -j ACCEPT
Jednak to nie działa, a może działa nie do końca. Po wpisaniu w ustawieniach połączenie w DC++ mojego IP lokalnego (192.168.1.101) oraz portów TCP i UDP 6500 inni mogą ściągać ode mnie, ale nie działa mi wyszukiwanie, ani tez ja nie mogę się z nikim połączyć.

Co może być nie tak?
Rad
Member
Posty: 1208
Rejestracja: 28 czerwca 2006, 15:05

Post autor: Rad »

Tu masz regułki do pakietów przychodzących, musisz jeszcze napisać dla wychodzących (-A OUTPUT).
giaur
Member
Posty: 1915
Rejestracja: 25 maja 2007, 22:16

Post autor: giaur »

Dodalem jeszcze dwie takie same regułki dla ,,OUTPUT'', ale nic się nie zmieniło. Teraz pytanie, czy DC++ wymaga innego portu, czy jednak nie wszystko co wymagane jest odblokowane?
Rad
Member
Posty: 1208
Rejestracja: 28 czerwca 2006, 15:05

Post autor: Rad »

Zobacz z jakim portem huba zawsze się łączysz. Potem ustaw

Kod: Zaznacz cały

iptables -A OUTPUT -p tcp --dport ten_port -j ACCEPT
Poza tym ustaw jeszcze:

Kod: Zaznacz cały

iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
żeby puszczać ruch potomny od połączeń już nawiązanych.
giaur
Member
Posty: 1915
Rejestracja: 25 maja 2007, 22:16

Post autor: giaur »

Zrobiłem tak jak napisałem wyzej + dwie linie dla ruchu potomnego, czyli dokladnie tak:

Kod: Zaznacz cały

#Udostepnienie lacza
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -A POSTROUTING -s 192.168.1.0/24 -j MASQUERADE -t nat

#Odblokowanie portu 6500 - tcp i udp w obu kierunkach
iptables -A INPUT -p tcp --dport 6500 -m state --state NEW -j ACCEPT
iptables -A INPUT -p udp --dport 6500 -m state --state NEW -j ACCEPT
iptables -A OUTPUT -p tcp --dport 6500 -m state --state NEW -j ACCEPT
iptables -A OUTPUT -p udp --dport 6500 -m state --state NEW -j ACCEPT

#Rowniez dla ruchu potomnego
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
Ale po przeksanowaniu portow okazuje sie, ze 6500 nie jest wcale otwarty. Co robie nie tak?
Rad
Member
Posty: 1208
Rejestracja: 28 czerwca 2006, 15:05

Post autor: Rad »

Zobacz na jakim porcie nasłuchuje ten program w

Kod: Zaznacz cały

 lsof -i
i puść ruch na ten port. Szczerze mówiąc, to nie wiem dokładnie o co ci konkretnie chodzi.
giaur
Member
Posty: 1915
Rejestracja: 25 maja 2007, 22:16

Post autor: giaur »

Chodzi o to, że powyższy zapis nie działa. Pisząc o otwarciu portu miałem na myśli przekierowanie na zewnętrzne IP.

Sam znalazłem już rozwiązanie, robię to mniej więcej tak:

Kod: Zaznacz cały

iptables -t nat -A PREROUTING -i $WAN_INTERFACE -p tcp --dport $FORWARD_PORT_TCP -j DNAT --to "$REV_CLIENT_IP:$REV_CLIENT_PORT_TCP";
iptables -t nat -A PREROUTING -i $WAN_INTERFACE -p udp --dport $FORWARD_PORT_UDP -j DNAT --to "$REV_CLIENT_IP:$REV_CLIENT_PORT_UDP";

iptables -A FORWARD -i $WAN_INTERFACE -o $LAN_INTERFACE -p tcp --dport $FORWARD_PORT_TCP -j ACCEPT;
   iptables -A FORWARD -i $WAN_INTERFACE -o $LAN_INTERFACE -p udp --dport $FORWARD_PORT_UDP -j ACCEPT;
  • WAN_INTERFACE to łącze do internetu (u mnie ppp0),
  • LAN_INTERFACE to polecenie iface udostępniający internet (u mnie eth0).

    Kod: Zaznacz cały

    REV_CLIENT_PORT_TCP = REV_CLIENT_PORT_UDP = FORWARD_PORT_TCP = FORWARD_PORT_UDP = 6500
    Czyli mapowanie:

    Kod: Zaznacz cały

     $WAN_IP:6500 -> $LAN_IP:6500
Może się komuś przyda.
ODPOWIEDZ