Code:
*nat
:PREROUTING ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:VSERVER - [0:0]
-A PREROUTING -d 85.x.x.x -j VSERVER
-A PREROUTING -d 172.x.x.x -j VSERVER
-A VSERVER -p tcp -m tcp --dport 4662 -j DNAT --to-destination 192.168.1.55:4662
-A VSERVER -p udp -m udp --dport 4672 -j DNAT --to-destination 192.168.1.55:4672
-A VSERVER -p tcp -m tcp --dport 11223 -j DNAT --to-destination 192.168.1.55:11223
-A VSERVER -p udp -m udp --dport 12223 -j DNAT --to-destination 192.168.1.55:12223
-A VSERVER -p tcp -m tcp --dport 14104 -j DNAT --to-destination 192.168.1.76:14104
-A VSERVER -p udp -m udp --dport 18872 -j DNAT --to-destination 192.168.1.76:18872
-A VSERVER -p tcp -m tcp --dport 33312 -j DNAT --to-destination 192.168.1.55:33312
-A POSTROUTING -o ppp0 ! -s 85.x.x.x -j MASQUERADE
-A POSTROUTING -o vlan1 ! -s 172.x.x.x -j MASQUERADE
-A POSTROUTING -o br0 -s 192.168.1.0/24 -d 192.168.1.0/24 -j MASQUERADE
COMMIT
Code:
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:MACS - [0:0]
:SECURITY - [0:0]
:logaccept - [0:0]
:logdrop - [0:0]
-A SECURITY -p tcp --syn -m limit --limit 1/s -j RETURN
-A SECURITY -p tcp --tcp-flags SYN,ACK,FIN,RST RST -m limit --limit 1/s -j RETURN
-A SECURITY -p udp -m limit --limit 5/s -j RETURN
-A SECURITY -p icmp -m limit --limit 5/s -j RETURN
-A SECURITY -j logdrop
-A INPUT -m state --state INVALID -j logdrop
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -i lo -m state --state NEW -j ACCEPT
-A INPUT -i br0 -m state --state NEW -j ACCEPT
-A INPUT -i ppp0 -m state --state NEW -j SECURITY
-A INPUT -p icmp -j ACCEPT
-A INPUT -p tcp -m tcp --dport 515 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 9100 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 3838 -j ACCEPT
-A INPUT -j logdrop
-A FORWARD -i br0 -o br0 -j ACCEPT
-A FORWARD -m state --state INVALID -j logdrop
-A FORWARD -p tcp --syn -j TCPMSS --clamp-mss-to-pmtu
-A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
-A FORWARD -o ppp0 ! -i br0 -j logdrop
-A FORWARD -o vlan1 ! -i br0 -j logdrop
-A FORWARD ! -i br0 -m state --state NEW -j SECURITY
-A FORWARD -m conntrack --ctstate DNAT -j ACCEPT
-A FORWARD -o br0 -j logdrop
-A logaccept -m state --state NEW -j LOG --log-prefix "ACCEPT " --log-tcp-sequence --log-tcp-options --log-ip-options
-A logaccept -j ACCEPT
-A logdrop -m state --state NEW -j LOG --log-prefix "DROP " --log-tcp-sequence --log-tcp-options --log-ip-options
-A logdrop -j DROP
COMMIT
Некоторые пояснения:
85.x.x.x - мой реальный IP адрес
172.x.x.x - внутрисетевой адрес в моей домашней сети
Все DC++ хабы находятся в локалке.
DC++ клиент в активном режиме (спокойно подключаюсь и к активным и к пассивным пользователям и от них всё отлично качается)
А вот стоит только использовать поиск (для теста ввожу что-нибудь распространненое, напр. "avi"), то выдаёт всего 10-20 найденных файлов (логику я так и не понял) и кучу дропов в логе, о которых я писал выше.
Включаю в опциях "поиск в пассивном режиме" - всё ок - пару тысяч найденых файлов, как и должно быть.
С предыдущей прошивкой всё было ок.