Войти

Показать полную графическую версию : [решено] Iptables и DC++


Strange_V
28-02-2008, 01:20
Настраиваю iptables, при применении правил не работает клиент DC++ (точнее работает только в пассивном режиме). Гуглил, тем много, но все в основном для шлюза. У меня же не работает непосредственно на компьютере где и запускаются правила.
IPT=/sbin/iptables

LAN_IFACE="eth1"
LAN_IFACE2="eth0"
INET_IFACE="ppp0"

OPENPORTS="7000"
CLOSEPORTS="20,21,25,10000"

echo 1 > /proc/sys/net/ipv4/ip_forward

/sbin/modprobe ip_nat_ftp
/sbin/modprobe ip_conntrack_ftp

$IPT -F
$IPT -t nat -F
$IPT -t mangle -F
$IPT -X
$IPT -t nat -X
$IPT -t mangle -X

$IPT -P INPUT DROP
$IPT -P FORWARD DROP
$IPT -P OUTPUT ACCEPT

$IPT -A INPUT -m state --state INVALID -j DROP
$IPT -A FORWARD -m state --state INVALID -j DROP

$IPT -A INPUT -i lo -j ACCEPT
$IPT -A OUTPUT -o lo -j ACCEPT

$IPT -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPT -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT

$IPT -t nat -I PREROUTING -i $LAN_IFACE -s 10.0.0.1/32 -j ACCEPT

$IPT -A INPUT -p icmp -m icmp -i $LAN_IFACE --icmp-type source-quench -j ACCEPT
$IPT -A OUTPUT -p icmp -m icmp -o $LAN_IFACE --icmp-type source-quench -j ACCEPT

$IPT -A INPUT -p tcp -m tcp -i $LAN_IFACE --dport 6000:6063 -j REJECT --reject-with tcp-reset --syn

$IPT -A INPUT -p tcp -m tcp -m multiport -i $LAN_IFACE -j REJECT --reject-with tcp-reset --destination-ports $CLOSEPORTS

$IPT -A INPUT -p tcp -m tcp -m multiport -i $LAN_IFACE2 -j REJECT --reject-with tcp-reset --destination-ports $CLOSEPORTS

$IPT -A INPUT -i $LAN_IFACE2 -j ACCEPT
$IPT -A FORWARD -i $LAN_IFACE2 -j ACCEPT

$IPT -t nat -A POSTROUTING -p tcp -s 192.168.0.1/24 -m multiport --dport 20,21,80,110,2525,5190 -o $INET_IFACE -j MASQUERADE
Может что пропустил, или DC как-то настроить надо?

BuGfiX
28-02-2008, 11:28
В правила не вдавался, но раз Вы говорите что нашли информацию как настроить шлюз, то локальный фаервол можно настроить аналогично. На шлюзе используется цепочка FORWARD, у вас же будут задействованы INPUT и OUTPUT.

must die
28-02-2008, 11:30
Strange_V, клиент DC++ работает через какой интерфейс (eth0, eth1 или ppp0)?

Strange_V
28-02-2008, 13:11
BuGfiX,
Интересная мысль

must die,
eth1, он смотрит во внутреннюю сеть провайдера

must die
28-02-2008, 13:24
Strange_V, А что вы хотите, входящие пакеты на eth1 вы отбрасываете :)



$IPT -A INPUT -p tcp -m tcp -i $LAN_IFACE --dport 6000:6063 -j REJECT --reject-with tcp-reset --syn
$IPT -A INPUT -p tcp -m tcp -m multiport -i $LAN_IFACE -j REJECT --reject-with tcp-reset --destination-ports $CLOSEPORTS

Strange_V
28-02-2008, 22:21
must die, эти правила блокируют конкретные порты. Но по умолчанию политика DROP, а разрешения на входящие к DC, как вы и заметили, действительно нет.
Просто я наивно предполагал, что инициированное мной соединение попадет под правило
$IPT -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

Итого, в linuxdcpp прописал использовать 7000 порт, добавил:
$IPT -A INPUT -p tcp -m tcp -m multiport -i $LAN_IFACE -j ACCEPT --destination-ports 7000
все успешно работает.

Спасибо всем.

must die
29-02-2008, 08:04
Просто я наивно предполагал, что инициированное мной соединение попадет под правило »

Соединения в активном режиме инициируются не вами, поэтому и не работало.




© OSzone.net 2001-2012