Strona 1 z 1
[+] Iptables otwarcie portu
: 02 czerwca 2007, 22:43
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?
: 02 czerwca 2007, 23:14
autor: Rad
Tu masz regułki do pakietów przychodzących, musisz jeszcze napisać dla wychodzących (-A OUTPUT).
: 03 czerwca 2007, 14:42
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?
: 03 czerwca 2007, 15:05
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.
: 04 czerwca 2007, 10:16
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?
: 06 czerwca 2007, 16:10
autor: Rad
Zobacz na jakim porcie nasłuchuje ten program w
i puść ruch na ten port. Szczerze mówiąc, to nie wiem dokładnie o co ci konkretnie chodzi.
: 06 czerwca 2007, 22:00
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:
Może się komuś przyda.