iptables, мать его...:)

  • Автор теми Автор теми leg0las
  • Дата створення Дата створення
Статус: Офлайн
Реєстрація: 31.10.2008
Повідом.: 521
iptables, мать его...:)

значит у нас имеется роутерная тачка-сервак, eth0 [10.0.32.208] в мир и eth1 [192.168.0.1] - на домашнюю тачку смотрит, и домашняя тачка с 192.168.0.2.
значит есть конфиг роутера:
Код:
/etc/network/interfaces
## This file describes the network interfaces available on your system
## and how to activate them. For more information, see interfaces(5).

## The loopback network interface
auto lo
iface lo inet loopback

## The primary network interface
allow-hotplug eth0
iface eth0 inet static
address 10.0.32.208
netmask 255.255.255.0
gateway 10.0.32.254

up route add -net 10.0.0.0/8 gw 10.0.32.254
up route add -net 192.168.0.0/16 gw 10.0.32.254
up route add -net 172.16.0.0/12 gw 10.0.32.254
up route add -net 95.69.128.0 netmask 255.255.224.0 gw 10.0.32.254
up route add -host 195.69.244.2 gw 10.0.32.254
up route del default

## The secondary network interface
allow-hotplug eth1
iface eth1 inet static
address 192.168.0.1
netmask 255.255.255.0
network 192.168.0.0
broadcast 192.168.0.255

up route add -net 192.168.0.0 netmask 255.255.255.0 gw 192.168.0.1
конфиг домашней (ну тут ничего сложного)
Код:
/etc/network/interfaces
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
allow-hotplug eth0
iface eth0 inet static
address 192.168.0.2
netmask 255.255.255.0
network 192.168.0.0
broadcast 192.168.0.255
gateway 192.168.0.1

и значит есть скриптик с NAT на роутере:
Код:
/usr/sbin/nat_local.sh
#!/bin/bash
iptables -F
iptables -t nat -F
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD DROP
export LAN=eth1
export WAN=ppp0
iptables -I INPUT 1 -i ${LAN} -j ACCEPT
iptables -I INPUT 1 -i lo -j ACCEPT
iptables -A INPUT -p UDP --dport bootps -i ! ${LAN} -j REJECT
iptables -A INPUT -p UDP --dport domain -i ! ${LAN} -j REJECT
iptables -A INPUT -p TCP --dport ssh -i ${WAN} -j ACCEPT
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -I FORWARD -i ${LAN} -d 192.168.0.0/255.255.255.0 -j DROP
iptables -A FORWARD -i ${LAN} -s 192.168.0.0/255.255.255.0 -j ACCEPT
iptables -A FORWARD -i ${WAN} -d 192.168.0.0/255.255.255.0 -j ACCEPT
iptables -A FORWARD -i eth0 -d 192.168.0.0/255.255.255.0 -j ACCEPT
##############################################
#Torrents* * * * * * * * * * * * * * * * * * #
##############################################
iptables -t nat -A PREROUTING -i ppp0 -p tcp --dport 61926 -j DNAT --to-destination 192.168.0.2:61926
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 61926 -j DNAT --to-destination 192.168.0.2:61926
iptables -A FORWARD -d 192.168.0.2 -p tcp --dport 61926 -j ACCEPT
iptables -A FORWARD -d 192.168.0.2 -p udp --dport 61926 -j ACCEPT
#############################################
#ICQ/Jabber Files                           #
#############################################
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 64544 -j DNAT --to-destination 192.168.0.2:64544
iptables -t nat -A PREROUTING -i eth0 -p udp --dport 64544 -j DNAT --to-destination 192.168.0.2:64544
iptables -A FORWARD -d 192.168.0.2 -p tcp --dport 64544 -j ACCEPT
iptables -A FORWARD -d 192.168.0.2 -p udp --dport 64544 -j ACCEPT
###############################################
#DC++* * * * * * * * * * * * * * * * * * * *  #
##############################################
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 35477 -j DNAT --to-destination 192.168.0.2:35477
iptables -A FORWARD -d 192.168.0.2 -p tcp --dport 35477 -j ACCEPT
#
iptables -t nat -A PREROUTING -i eth0 -p udp --dport 35466 -j DNAT --to-destination 192.168.0.2:35466
iptables -A FORWARD -d 192.168.0.2 -p udp --dport 35466 -j ACCEPT
#
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 35455 -j DNAT --to-destination 192.168.0.2:35455
iptables -A FORWARD -d 192.168.0.2 -p tcp --dport 35455 -j ACCEPT
#
iptables -t nat -A POSTROUTING -o ${WAN} -j MASQUERADE
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
echo 1 > /proc/sys/net/ipv4/ip_forward
for f in /proc/sys/net/ipv4/conf/*/rp_filter ; do echo 1 > $f ; done
теперь вопрос знатокам. на роутерной тачке крутится дс-хаб, так вто у пользователей с этого хаба я не могу скачать файллист, и у пользователей какая-то трабла при скачке с меня. в настройках дс мой IP поставил 192.168.0.2 (verlihub который на серваке пишет то же самое).
предлжения?
З.Ы. на домашней все открыто, полный iptables -F:)
 
а при чем тут "через роутер"??? у меня дс-хаб на самом роутере крутится! там бля прямее некуда 192.168.0.2->192.168.0.1.
сетевые хабы мой внутренний IP хавают, качаю/качают без проблем.
 
кста а что в echo 1 >/proc/sys/net/ipv4/ip_forward

да и вроде необходимо указывать про маршрутизацию пакетов в sysctl конф

А что тебе не нравится? По умолчанию правило- всё нахуй. А потом начинаем вписывать что можно.

ну кто как воспитан , я наоборот всё можно а потом что нельзя ... но специфика разная

а и кста попробуй не указывая tcp

типа пример iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to-source xxx.xxx.xxx.xxx
 
Вот violent всё и сказал шо проверить нада

:пиво: с него :D

А что тебе не нравится? По умолчанию правило- всё нахуй. А потом начинаем вписывать что можно.

ну моя логика такова , это тоже самое что запретить ребёнку абсолютно всё ...в том числе и дышать ,двигаться ,жрать,ссать срать и тд и тп ... не проще ле разрешыть ему всё и потом расказать ему что нельзя принимать наркотики что срать надо в унитаз и жопу подтирать, вилку держать в левой руке а нож в правой , говно жрать незя и тд и тп ... ну это моя ебанутая логика ,и бля она правильная как показывает лично мой опыт :)

да и кроме того шо она правильная она эффективна ,но подчеркну спецыфика везде разная ...я б вобще там сервер не ставил ,но это я у меня есть запас цысок :D

убрал дроп. все равно не пашет. дело не в нем.

конешно


я то написал не для того .... просто было в лом что либо другое спрашивать .... пиво давало о себе знать :)
 
кста а что в echo 1 >/proc/sys/net/ipv4/ip_forward

это разрешение на пересылку пакетов внутри ядра между внутр интерфейсами (етх0 и етх1)

а вот начало скрипта должнобыть такого вида:
#
# reset the default policies in the filter table.
#
$IPTABLES -P INPUT ACCEPT
$IPTABLES -P FORWARD ACCEPT
$IPTABLES -P OUTPUT ACCEPT

#
# reset the default policies in the nat table.
#
$IPTABLES -t nat -P PREROUTING ACCEPT
$IPTABLES -t nat -P POSTROUTING ACCEPT
$IPTABLES -t nat -P OUTPUT ACCEPT

#
# reset the default policies in the mangle table.
#
$IPTABLES -t mangle -P PREROUTING ACCEPT
$IPTABLES -t mangle -P OUTPUT ACCEPT

#
# flush all the rules in the filter and nat tables.
#
$IPTABLES -F
$IPTABLES -t nat -F
$IPTABLES -t mangle -F
#
# erase all chains that's not default in filter and nat table.
#
$IPTABLES -X
$IPTABLES -t nat -X
$IPTABLES -t mangle -X


#
# politika po umolchaniyu
#
$IPTABLES -P FORWARD DROP

кстати, не мешало бы добавить и такое:
$IPTABLES -A INPUT -i $INET_IFACE -p tcp -m multiport --dports 111,139,445,953,1723,2628 -j REJECT --reject-with icmp-port-unreachable

#
# bad_tcp_packets
#
$IPTABLES -N bad_tcp_packets
$IPTABLES -A bad_tcp_packets -p tcp --tcp-flags SYN,ACK SYN,ACK -m state --state NEW -j REJECT --reject-with tcp-reset
$IPTABLES -A bad_tcp_packets -p tcp ! --syn -m state --state NEW -j DROP
$IPTABLES -A INPUT -p tcp -j bad_tcp_packets
$IPTABLES -A FORWARD -p tcp -j bad_tcp_packets
$IPTABLES -A OUTPUT -p tcp -j bad_tcp_packets
# END bad_tcp_packets

ну и конечно смотреть, шо ж у нас не так
tcpdump -i [eth0|eth1]
 
блядь там врубить роутинг и добавить нат правилом вайлент написал всё
остальное нахуй ненужно и опционально, нада попробовать завести шоп ваще работало а дальше уже рюшки цеплять
 
ну это моя ебанутая логика ,и бля она правильная как показывает лично мой опыт :)

Ну а мне опыт подсказывает что когда по умолчанию всё нахуй и разрешаешь что можно и чтото забыл разрешить- оно явным образом сразу вылезет, а если по умолчанию всё можно и начинаешь запрещять- чтото забудешь запретить всёравно. Лучше перебдеть чем недобдеть, но это моя ебанутая логика :пиво:
 
блядь там врубить роутинг и добавить нат правилом вайлент написал всё
остальное нахуй ненужно и опционально, нада попробовать завести шоп ваще работало а дальше уже рюшки цеплять

а это у ТСа хуй собачий?
#
iptables -t nat -A POSTROUTING -o ${WAN} -j MASQUERADE
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

Ну а мне опыт подсказывает что когда по умолчанию всё нахуй и разрешаешь что можно и чтото забыл разрешить- оно явным образом сразу вылезет, а если по умолчанию всё можно и начинаешь запрещять- чтото забудешь запретить всёравно. Лучше перебдеть чем недобдеть, но это моя ебанутая логика :пиво:

это единственно правильная логика.

вот это
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
по-правильному надо заменить на SNAT ибо маскарадинг используется для ip адресов назначенных по dhcp и более требователен к ресурсам, но это так, штрихи.

имхо, это
iptables -I FORWARD -i ${LAN} -d 192.168.0.0/255.255.255.0 -j DROP
надо заменить на:
iptables -А FORWARD -i ${LAN} -d 192.168.0.0/255.255.255.0 -j ACCEPT
потому как пакет идет сначала как источник, но может же и быть дестинейшен
 
Останнє редагування:
эммм.. а если внимательно прочитать что же сопсна хочет ТС...

Вот дебильный вопрос, но всёже. Ты в свойствах дисихи проброшенные порты прописал? Попробуй и в свойствах клиента и сервера поставить одинаковые порты, которые рпоброшены.

Это, блять, мой конйиг и всё с ним нормально :)
 
во нафлудили... попробую попорядку.
по сути echo чего-то там делает то же самое, что и конфиг, ладно то дело десятое... в общем конфиг подправил, поставтил snat - перестает работать все, на iptables -L тупит очень долго на этапе Chain FORWARD. вернул маскарадинг, на нем все работает отлично.

Ты в свойствах дисихи проброшенные порты прописал? Попробуй и в свойствах клиента и сервера поставить одинаковые порты, которые рпоброшены.
а то я не догадался:D
если не те порты указываешь, дс-ха банально ругается. плюс читай выше - качаю/качают на других хабах прекрасно. торрент прекрасно раздает, psi принимает/отправляет файло.

проблема, блять только с моим хабом, который крутится на серваке-роутере, и все. внешний мир мы не трогаем.
 
iptables -nL и tcpdump -i eth1
спасут ТСа
я правильно понял тебя, что ты дал конфиг ТСу?

ты прально понял. я конфиг допилил уже под себя, руководствуясь маном.
добавил твое в скрипт, спс. так он выглядит логичней:)

имхо, это
Код:
iptables -I FORWARD -i ${LAN} -d 192.168.0.0/255.255.255.0 -j DROP
надо заменить на:
Код:
iptables -А FORWARD -i ${LAN} -d 192.168.0.0/255.255.255.0 -j ACCEPT
потому как пакет идет сначала как источник, но может же и быть дестинейшен
глянь внимательно, эта строка (-A FORWARD) у меня есть:)
 
ага,увидел.тогда строчка с дропом точно не нужна.

мне просто не привычно такое написание правил. я привык к цепочкм.
например:
# ALLOWED
#

$IPTABLES -N allowed
$IPTABLES -A allowed -p TCP --syn -j ACCEPT
$IPTABLES -A allowed -p TCP -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A allowed -p icmp -j ACCEPT
$IPTABLES -A allowed -p TCP -j DROP
#
# END-ALLOWED
$IPTABLES -A FORWARD -p TCP -m state --state ESTABLISHED,RELATED -j ACCEPT

$IPTABLES -A FORWARD -s $DIR_IP -j allowed
$IPTABLES -A FORWARD -d $DIR_IP -j allowed
 
ну за основу был взят ренегатовский скрипт (когда мне его скинули я в iptables был дуб-валенок), он и переделывался:)
собствеено вопрос открыт. особенно меня очень сильно интересует, почему не пашет SNAT. указывал как и едеиничный адрес, так и диапазон - без разницы.
 
Назад
Зверху Знизу