Доброго времени суток всем!
Стоит OpenSuse 11.4 в качестве шлюза. Нужно организовать подключение к рабочему столу и прочим сервисам в локальной сети из инета.
Локальная сеть 192.168.0.0/24
Внешний адрес 1.2.3.4
Внешний сетевой интерфейс eth0
Внутренний сетевой интерфейс eth1
нужно получить доступ к 192.168.0.68 по RDP

# Generated by iptables-save v1.4.10 on Wed Jan 18 09:51:44 2012
*filter
:INPUT ACCEPT [8889:6030007]
:FORWARD ACCEPT [11:540]
:OUTPUT ACCEPT [36936:12626414]
-A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK RST -j DROP 
-A INPUT -p tcp -m tcp --tcp-flags FIN,ACK FIN -j DROP 
-A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG FIN,SYN,RST,PSH,ACK,URG -j DROP 
-A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG NONE -j DROP 
-A INPUT -i eth1 -p tcp -m tcp --dport 80 -j ACCEPT 
-A INPUT -i eth1 -p tcp -m tcp --dport 3128 -j ACCEPT 
-A INPUT -i eth1 -p tcp -m tcp --dport 3306 -j ACCEPT 
-A INPUT -p tcp -m tcp --dport 22 -j ACCEPT 
-A INPUT -i eth1 -p tcp -m tcp --dport 53 -j ACCEPT 
-A INPUT -p tcp -m tcp ! --tcp-flags FIN,SYN,RST,ACK SYN -m state --state NEW -j DROP 
COMMIT
# Completed on Wed Jan 18 09:51:44 2012
# Generated by iptables-save v1.4.10 on Wed Jan 18 09:51:44 2012
*nat
:PREROUTING ACCEPT [2761:213616]
:INPUT ACCEPT [2653:207780]
:OUTPUT ACCEPT [2573:185609]
:POSTROUTING ACCEPT [2579:185905]
-A PREROUTING -d 1.2.3.4/32 -p tcp -m tcp --dport 3389 -j DNAT --to-destination 192.168.0.68:3389 
-A PREROUTING -i eth1 -p tcp -m tcp --dport 80 -j DNAT --to-destination 192.168.0.2:3128 
-A POSTROUTING -s 192.168.0.3/32 -d 0.0.0.0/32 -j MASQUERADE 
COMMIT
# Completed on Wed Jan 18 09:51:44 2012
# Generated by iptables-save v1.4.10 on Wed Jan 18 09:51:44 2012
*mangle
:PREROUTING ACCEPT [34836:8871437]
:INPUT ACCEPT [34825:8870897]
:FORWARD ACCEPT [11:540]
:OUTPUT ACCEPT [36937:12627170]
:POSTROUTING ACCEPT [36948:12627710]
COMMIT
# Completed on Wed Jan 18 09:51:44 2012

На другом шлюзе стоит Debian - там работает.
Почему тут не хочет не пойму, подскажите кто знает...

2

Покажите

cat /proc/sys/net/ipv4/ip_forward
Был, был и весь вышел...

3

0x000000x0 пишет:

На другом шлюзе стоит Debian - там работает.
Почему тут не хочет не пойму, подскажите кто знает...

как я понимаю, адрес статический? тогда почему вы используете DNAT, а не SNAT?
http://www.opennet.ru/docs/RUS/iptables/#STARTINGSNAT

В этом сценарие я использую SNAT вместо MASQUERADE по ряду причин. Первая -- предполагается, что этот сценарий должен работать на сетевом узле, который имеет постоянный IP адрес. Следующая состоит в том, что SNAT работает быстрее и более эффективно. Конечно, если вы не имеете постоянного IP адреса, то вы должны использовать действие MASQUERADE, которое предоставляет более простой способ трансляции адресов, поскольку оно автоматически определяет IP адрес, присвоенный заданному интерфейсу. Однако, по сравнению с SNAT это действие требует несколько больших вычислительных ресурсов, хотя и не значительно. Пример работы с MASQUERADE, вы найдете в сценарии rc.DHCP.firewall.txt.

Карусель разнесло по цепочке за час
Всех известий — конец
Да, весна началась!
(всё к лицу подлецу, как родному отцу, не рассказывай, батя, и так всё пройдёт)

4

# cat /proc/sys/net/ipv4/ip_forward
1

Так же подгружаю модули

modprobe iptable_mangle
modprobe ipt_MASQUERADE
modprobe iptable_nat
modprobe ipt_REJECT
modprobe nf_nat
modprobe nf_conntrack_ipv4
modprobe nf_conntrack
modprobe ip_tables

5 (18.01.2012 08:15:00 отредактировано 0x000000x0)

drBatty пишет:
0x000000x0 пишет:

На другом шлюзе стоит Debian - там работает.
Почему тут не хочет не пойму, подскажите кто знает...

как я понимаю, адрес статический? тогда почему вы используете DNAT, а не SNAT?
http://www.opennet.ru/docs/RUS/iptables/#STARTINGSNAT

В этом сценарие я использую SNAT вместо MASQUERADE по ряду причин. Первая -- предполагается, что этот сценарий должен работать на сетевом узле, который имеет постоянный IP адрес. Следующая состоит в том, что SNAT работает быстрее и более эффективно. Конечно, если вы не имеете постоянного IP адреса, то вы должны использовать действие MASQUERADE, которое предоставляет более простой способ трансляции адресов, поскольку оно автоматически определяет IP адрес, присвоенный заданному интерфейсу. Однако, по сравнению с SNAT это действие требует несколько больших вычислительных ресурсов, хотя и не значительно. Пример работы с MASQUERADE, вы найдете в сценарии rc.DHCP.firewall.txt.


Да адрес статический. Потому что на сколько я знаю, нужно именно DNAT использовать когда нужно получить доступ из вне в локальную сеть, а SNAT из локальной сети в интернет.
Если это не так, как должно выглядеть правило? Давайте проверим:)

6

0x000000x0 пишет:

Доброго времени суток всем!
Стоит OpenSuse 11.4 в качестве шлюза. Нужно организовать подключение к рабочему столу и прочим сервисам в локальной сети из инета.
Локальная сеть 192.168.0.0/24
Внешний адрес 1.2.3.4
Внешний сетевой интерфейс eth0
Внутренний сетевой интерфейс eth1
нужно получить доступ к 192.168.0.68 по RDP

# Generated by iptables-save v1.4.10 on Wed Jan 18 09:51:44 2012
*filter
:INPUT ACCEPT [8889:6030007]
:FORWARD ACCEPT [11:540]
:OUTPUT ACCEPT [36936:12626414]
-A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK RST -j DROP 
-A INPUT -p tcp -m tcp --tcp-flags FIN,ACK FIN -j DROP 
-A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG FIN,SYN,RST,PSH,ACK,URG -j DROP 
-A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG NONE -j DROP 
-A INPUT -i eth1 -p tcp -m tcp --dport 80 -j ACCEPT 
-A INPUT -i eth1 -p tcp -m tcp --dport 3128 -j ACCEPT 
-A INPUT -i eth1 -p tcp -m tcp --dport 3306 -j ACCEPT 
-A INPUT -p tcp -m tcp --dport 22 -j ACCEPT 
-A INPUT -i eth1 -p tcp -m tcp --dport 53 -j ACCEPT 
-A INPUT -p tcp -m tcp ! --tcp-flags FIN,SYN,RST,ACK SYN -m state --state NEW -j DROP 
COMMIT
# Completed on Wed Jan 18 09:51:44 2012
# Generated by iptables-save v1.4.10 on Wed Jan 18 09:51:44 2012
*nat
:PREROUTING ACCEPT [2761:213616]
:INPUT ACCEPT [2653:207780]
:OUTPUT ACCEPT [2573:185609]
:POSTROUTING ACCEPT [2579:185905]
-A PREROUTING -d 1.2.3.4/32 -p tcp -m tcp --dport 3389 -j DNAT --to-destination 192.168.0.68:3389 
-A PREROUTING -i eth1 -p tcp -m tcp --dport 80 -j DNAT --to-destination 192.168.0.2:3128 
-A POSTROUTING -s 192.168.0.3/32 -d 0.0.0.0/32 -j MASQUERADE 
COMMIT
# Completed on Wed Jan 18 09:51:44 2012
# Generated by iptables-save v1.4.10 on Wed Jan 18 09:51:44 2012
*mangle
:PREROUTING ACCEPT [34836:8871437]
:INPUT ACCEPT [34825:8870897]
:FORWARD ACCEPT [11:540]
:OUTPUT ACCEPT [36937:12627170]
:POSTROUTING ACCEPT [36948:12627710]
COMMIT
# Completed on Wed Jan 18 09:51:44 2012

На другом шлюзе стоит Debian - там работает.
Почему тут не хочет не пойму, подскажите кто знает...

Как Вы получили эту таблицу, как загружаете ей?

7

Как Вы получили эту таблицу, как загружаете ей?

да просто скриптом таким

#!/bin/sh
iptables -F INPUT
iptables -F FORWARD
iptables -F OUTPUT
iptables -t nat -F
iptables -A INPUT -p tcp --tcp-flags SYN,ACK,FIN,RST RST -j DROP
iptables -A INPUT -p tcp -m tcp --tcp-flags FIN,ACK FIN -j DROP
iptables -A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG FIN,SYN,RST,PSH,ACK,URG -j DROP
iptables -A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG NONE -j DROP
iptables -A INPUT -i eth1 -p TCP --dport 80 -j ACCEPT
iptables -A INPUT -i eth1 -p TCP --dport 3128 -j ACCEPT
iptables -A INPUT -i eth1 -p TCP --dport 3306 -j ACCEPT
iptables -A INPUT -p TCP --dport 22 -j ACCEPT
iptables -A INPUT -i eth1 -p TCP --dport 53 -j ACCEPT
iptables -A INPUT -p TCP ! --syn -m state --state NEW -j DROP
iptables -A INPUT -d $INETIP -p TCP --syn -j DROP
iptables -t nat -A PREROUTING -d 1.2.3.4 -p TCP --dport 3389 -j DNAT --to-destination 192.168.0.68:3389
iptables -t nat -A PREROUTING -i eth1 -p tcp -m tcp --dport 80 -j DNAT --to-destination 192.168.0.2:3128
iptables -t nat -A POSTROUTING -s 192.168.0.3 -d 0.0.0.0/32 -j MASQUERADE
echo "1" > /proc/sys/net/ipv4/ip_forward

8

Попробуй отключить правила фильтрации трафика и посмотреть будет подключаться или нет может ты сам себя режешь и вообще нужно определится с политикой по умолчанию или ты все разрешаешь а потом ставишь запрет или все запрещаешь а потом правилами разрешаешь нужное тебе а то какая-то путаница в правилах получается.

Мой Проект LinuxTime.Org

9 (18.01.2012 13:54:50 отредактировано UTiM)

То, что вы знаете iptables - это круто, но поищите уже волшебные слова "SuseFirewall" здесь и на http://unixforum.org. Через него это делается в пару кликов.  Просто - если разработчики данного дистрибутива предусмотрели данный механизм - зачем лезть в окно - чтобы потом гадать - почему вдруг настройки   iptables сами сбрасываюся....  Если iptables осилили - то уж и про это почитать можно.

На вскидку (В сотый раз копипастю сам себя):
1. Тема, содержащая примерный порядок настроек http://unixforum.org/index.php?showtopic=111464
2. Ссылка на русскую вебморду с русским описанием параметров http://unixforum.org/index.php?showtopi … ntry978028
3. Неплохие описания настроек фаервола простенько  http://mysuse.com.ua/main/act/articles/14 и подробно http://mysuse.com.ua/main/act/articles/show/26  (похоже умерли ссылки - тогда в веб-архив)

10

UTiM пишет:

То, что вы знаете iptables - это круто, но поищите уже волшебные слова "SuseFirewall" здесь и на http://unixforum.org. Через него это делается в пару кликов.  Просто - если разработчики данного дистрибутива предусмотрели данный механизм - зачем лезть в окно - чтобы потом гадать - почему вдруг настройки   iptables сами сбрасываюся....  Если iptables осилили - то уж и про это почитать можно.

На вскидку (В сотый раз копипастю сам себя):
1. Тема, содержащая примерный порядок настроек http://unixforum.org/index.php?showtopic=111464
2. Ссылка на русскую вебморду с русским описанием параметров http://unixforum.org/index.php?showtopi … ntry978028
3. Неплохие описания настроек фаервола простенько  http://mysuse.com.ua/main/act/articles/14 и подробно http://mysuse.com.ua/main/act/articles/show/26

Попробую что-то решить из выше написанного:)

11

0x000000x0 пишет:

Как Вы получили эту таблицу, как загружаете ей?

да просто скриптом таким

#!/bin/sh
iptables -F INPUT
iptables -F FORWARD
iptables -F OUTPUT
iptables -t nat -F
iptables -A INPUT -p tcp --tcp-flags SYN,ACK,FIN,RST RST -j DROP
iptables -A INPUT -p tcp -m tcp --tcp-flags FIN,ACK FIN -j DROP
iptables -A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG FIN,SYN,RST,PSH,ACK,URG -j DROP
iptables -A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG NONE -j DROP
iptables -A INPUT -i eth1 -p TCP --dport 80 -j ACCEPT
iptables -A INPUT -i eth1 -p TCP --dport 3128 -j ACCEPT
iptables -A INPUT -i eth1 -p TCP --dport 3306 -j ACCEPT
iptables -A INPUT -p TCP --dport 22 -j ACCEPT
iptables -A INPUT -i eth1 -p TCP --dport 53 -j ACCEPT
iptables -A INPUT -p TCP ! --syn -m state --state NEW -j DROP
iptables -A INPUT -d $INETIP -p TCP --syn -j DROP
iptables -t nat -A PREROUTING -d 1.2.3.4 -p TCP --dport 3389 -j DNAT --to-destination 192.168.0.68:3389
iptables -t nat -A PREROUTING -i eth1 -p tcp -m tcp --dport 80 -j DNAT --to-destination 192.168.0.2:3128
iptables -t nat -A POSTROUTING -s 192.168.0.3 -d 0.0.0.0/32 -j MASQUERADE
echo "1" > /proc/sys/net/ipv4/ip_forward

Понятно. В suse надо пользоваться либо SuSEFirewall, либо его удалить.Если просто SuseFirewll не запускать, он всё равно стартует неявно и гробит правила iptables созданные вручную.

12

0x000000x0 пишет:

Да адрес статический. Потому что на сколько я знаю, нужно именно DNAT использовать когда нужно получить доступ из вне в локальную сеть, а SNAT из локальной сети в интернет.

вообще-то нет никакой разницы в "локальной" и "внешней" сети. Это всё абсолютно одно и то же. Единственная разница в том, что локальные сети ВСЕ изолированны друг от друга, и потому, там могут быть одинаковые IP. Ну например 192.168.1.1. В глобальной сети все IP уникальные. Что-бы преобразовать локальный IP в глобальный, как раз таки и нужен NAT.

В чём разница между SNAT и DNAT? В первом всё просто - переделка адреса отправителя для исходящих пакетов происходит в самом конце цепочки. Это для нас намного проще, в силу того, что NAT не мешает нам создавать свои правила. Но нам в таком случае нужно знать этот адрес отправителя, для исходящих в Сеть пакетов этот адрес == ваш внешний IP. Вот его-то мы и меняем, как раз перед тем, как пакеты покидают наш  шлюз.

DNAT работает с другого конца - исходящий пакет меняет свой IP сразу после поступления на шлюз, проходит через весь шлюз (по цепочке FORWARD), и отправляется в Сеть. При этом нам сложнее контролировать его перемещение(внутри шлюза), ведь его IP динамический, и его нельзя забить в скрипт. Необходимость делать NAT на входе возникает от того, что только на входе мы можем определить, откуда поступил данный пакет (с какого eth). Потом все пакеты смешиваются, и определить это уже будет невозможно. Имеется естественно костыль MASQUERADE, который позволяет отслеживать данные пакеты. Но сами понимаете - это костыль. Я, помнится даже на динамическом IP всё равно использовал SNAT - мой провайдер каждые 24 часа ронял сеть для смены IP, и мой скрипт после подъёма сети переписывал SNAT на новый IP. Сам автор пишет следующее:

Сценарий The rc.DHCP.firewall.txt очень похож на оригинал rc.firewall.txt. Однако, этот сценарий больше не использует переменную STATIC_IP, это и является основным отличием от оригинала rc.firewall.txt. Причина в том, что rc.firewall.txt не будет работать в случае динамического IP адреса. Изменения, по сравнению с оригиналом - минимальны. Этот сценарий будет полезен в случае DHCP, PPP и SLIP подключения к Интернет.

Сценарий требует, чтобы следующие опции были скомпилированы либо статически, либо как модули. Без какой либо из них сценарий будет неработоспособен

    CONFIG_NETFILTER

    CONFIG_IP_NF_CONNTRACK

    CONFIG_IP_NF_IPTABLES

    CONFIG_IP_NF_MATCH_LIMIT

    CONFIG_IP_NF_MATCH_STATE

    CONFIG_IP_NF_FILTER

    CONFIG_IP_NF_NAT

    CONFIG_IP_NF_TARGET_MASQUERADE

    CONFIG_IP_NF_TARGET_LOG

Главное отличие данного скрипта состоит в удалении переменной STATIC_IP и всех ссылок на эту переменную. Вместо нее теперь используется переменная INET_IFACE. Другими словами -d $STATIC_IP заменяется на -i $INET_IFACE. Собственно это все, что нужно изменить в действительности. (Хочется отметить, что в данном случае под STATIC_IP автор понимает переменную INET_IP прим. перев.)

А вообще - прочитайте этот мануал: http://www.opennet.ru/docs/RUS/iptables/
на самом деле, там нет ничего сложного. Если что - пишите, разберёмся.

0x000000x0 пишет:

Если это не так, как должно выглядеть правило? Давайте проверим:)

что проверять? я-бы не написал этого поста, и лишился-бы работы, если-бы в своё время с этим не разобрался.

CyberDaemon пишет:

В suse надо пользоваться либо SuSEFirewall, либо его удалить.Если просто SuseFirewll не запускать, он всё равно стартует неявно и гробит правила iptables созданные вручную.

как разработчик гуёв - расскажу по секрету: он и должен гнобить ваши правила. Выбирайте что-то одно. Если вам просто надо поднять шлюз и забыть(забить), юзайте SUSEFirewall. Иначе удалите его к чертям, и разбирайтесь сами. Третьего не дано.

Карусель разнесло по цепочке за час
Всех известий — конец
Да, весна началась!
(всё к лицу подлецу, как родному отцу, не рассказывай, батя, и так всё пройдёт)

13

drBatty пишет:

как разработчик гуёв - расскажу по секрету: он и должен гнобить ваши правила. Выбирайте что-то одно. Если вам просто надо поднять шлюз и забыть(забить), юзайте SUSEFirewall. Иначе удалите его к чертям, и разбирайтесь сами. Третьего не дано.

Если SUSEFirewall отключен а именно отключены сервисы:

[user@root:/home/user]# chkconfig --list | grep SuSE*
SuSEfirewall2_init        0:off  1:off  2:off  3:off  4:off  5:off  6:off
SuSEfirewall2_setup       0:off  1:off  2:off  3:off  4:off  5:off  6:off

то ни какие правила iptables не затираются и ничего удалять не надо просто отключить SUSEFirewall командой.

[user@root:/home/user]# chkconfig -s SuSEfirewall2_init off
[user@root:/home/user]# chkconfig -s SuSEfirewall2_setup off

а в файле /etc/sysconfig/network/config переменную "FIREWALL" выставить в "no". После перезагрузки SUSEFirewall не стартует.

Мой Проект LinuxTime.Org

14

sev16 пишет:

то ни какие правила iptables не затираются и ничего удалять не надо

понятное дело, ничего он не затирает, если его не включать  :lol:

Карусель разнесло по цепочке за час
Всех известий — конец
Да, весна началась!
(всё к лицу подлецу, как родному отцу, не рассказывай, батя, и так всё пройдёт)

15 (17.02.2012 21:35:55 отредактировано oles_rid)

Доброго времени суток! Помогите побороть проброс на 21 порт.
Скрипт c правилами IPTABLES:

#!/bin/sh
echo "1" > /proc/sys/net/ipv4/ip_forward
modprobe iptable_nat
modprobe ip_conntrack_ftp
modprobe ip_nat_ftp
# Clear all old rules
iptables -F
iptables -F -t nat
iptables -F -t mangle

#------Close all from everyone outside
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP

# lo allow
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
# Attack BLOCK
iptables -A FORWARD -p tcp --syn -m limit --limit 1/s -j ACCEPT
iptables -A FORWARD -p tcp --tcp-flags SYN,ACK,FIN,RST RST -m limit --limit 1/s -j ACCEPT
iptables -A FORWARD -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT

# Block port scanning
iptables -A INPUT -m recent --name portscan --rcheck --seconds 86400 -j DROP
iptables -A FORWARD -m recent --name portscan --rcheck --seconds 86400 -j DROP
iptables -A INPUT -p tcp -m tcp --dport 139 -m recent --name portscan --set -j LOG --log-prefix "Portscan:"
iptables -A INPUT -p tcp -m tcp --dport 139 -m recent --name portscan --set -j DROP
iptables -A FORWARD -p tcp -m tcp --dport 139 -m recent --name portscan --set -j LOG --log-prefix "Portscan:"
iptables -A FORWARD -p tcp -m tcp --dport 139 -m recent --name portscan --set -j DROP

# Allow local users
iptables -A INPUT -i eth1 -j ACCEPT
iptables -A OUTPUT -o eth1 -j ACCEPT

#------Connect 3 times a minute
iptables -I INPUT -p tcp --dport 22 -i eth0 -m state --state NEW -m recent --set
iptables -I INPUT -p tcp --dport 22 -i eth0 -m state --state NEW -m recent --update --seconds 60 --hitcount 3 -j DROP
iptables -I INPUT -p tcp --dport 3389 -i eth0 -m state --state NEW -m recent --set
iptables -I INPUT -p tcp --dport 3389 -i eth0 -m state --state NEW -m recent --update --seconds 60 --hitcount 3 -j DROP

# Already connected ports
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
#iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
#iptables -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT

# Turn on Masquerading
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE

# Forward
iptables -A FORWARD -s 192.168.21.2 -i eth1 -o eth0 -p tcp --dport 37618 -j ACCEPT #  37618
iptables -A FORWARD -d 192.168.21.2 -i eth0 -o eth1 -p tcp --sport 37618 -j ACCEPT #  37618


# Forward 80  to squid
iptables -A PREROUTING -t nat -i eth1 -p tcp --dport 80 -j REDIRECT --to-port 3128

iptables -t nat -A PREROUTING -p tcp -i eth0 --dport 21 -j DNAT --to-destination 192.168.21.2:21
iptables -A FORWARD -i eth0 -d 192.168.21.2 -p tcp --dport 21 -j ACCEPT

eth0 - cмотрит в инет
eth1 - смотрит в локалку
порт форвардится успешно после раскоментирования iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
но тогда открываються все порты для пользователей.  Помогите пожалуйста...  ac

16 (18.02.2012 14:11:56 отредактировано Kettler)

oles_rid пишет:

порт форвардится успешно после раскоментирования iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
но тогда открываються все порты для пользователей.  Помогите пожалуйста...  ac

Не так! Ведь вы блокируете тут:

iptables -A FORWARD -s 192.168.21.2 -i eth1 -o eth0 -p tcp --dport 37618 -j ACCEPT #  37618

А чтоб работало как вы хотите добавьте к этому правилу

iptables -A FORWARD -i eth0 -d 192.168.21.2 -p tcp --dport 21 -j ACCEPT

обратное прохождение.

iptables -A FORWARD -s 192.168.21.2 -o eth0 -p tcp --sport 21 -j ACCEPT
Ищу дополнительный заработок (удалёнка).
Пьянка без секса – признак алкоголизма.

17

Kettler пишет:

А чтоб работало как вы хотите добавьте к этому правилу

iptables -A FORWARD -i eth0 -d 192.168.21.2 -p tcp --dport 21 -j ACCEPT

обратное прохождение.

iptables -A FORWARD -s 192.168.21.2 -o eth0 -p tcp --sport 21 -j ACCEPT

Cпасибо вам огромное!!! Всё завелось!!!  :cool:

18 (11.09.2012 18:23:48 отредактировано Макс1)

0x000000x0 пишет:

Так же подгружаю модули

Модули можно подгрузить в файле в /etc/sysconfig/SuSEfirewall2 строчкой типа:
FW_LOAD_MODULES="nf_conntrack_netbios_ns nf_conntrack_ftp nf_nat_ftp"

0x000000x0 пишет:

да просто скриптом таким

В SUSE, на мой взгляд, лучше пользоваться SuSEFirewall2 и включать правила iptables в файл скрипта SuSEfirewall2-custom (см. ниже), без этого скрипта.

CyberDaemon пишет:

В suse надо пользоваться либо SuSEFirewall, либо его удалить.Если просто SuseFirewll не запускать, он всё равно стартует неявно и гробит правила iptables созданные вручную.

В /etc/sysconfig/SuSEfirewall2 добавляется строчка:
FW_CUSTOMRULES="/etc/sysconfig/scripts/SuSEfirewall2-custom",
и в этот файл записываются любые правила iptables, которые "гробиться" не будут, а будут добавляться к правилам SuSEfirewall2, который при такой конфигурации удалять не надо.

drBatty пишет:

как разработчик гуёв - расскажу по секрету: он и должен гнобить ваши правила. Выбирайте что-то одно. Если вам просто надо поднять шлюз и забыть(забить), юзайте SUSEFirewall. Иначе удалите его к чертям, и разбирайтесь сами. Третьего не дано.

SuSEfirewall2 настраивается не только через GUI, но и вручную через редактирование файла /etc/sysconfig/SuSEfirewall2 (не уверен, что все его настройки можно сделать через YaST, и по большей части настраиваю его вручную). "Третий", и на мой взгляд, оптимальный путь, это сделать базовые настройки через YaST, а затем добавлять правила вручную в файлы /etc/sysconfig/SuSEfirewall2 и /etc/sysconfig/scripts/SuSEfirewall2-custom.

oles_rid пишет:

порт форвардится успешно после раскоментирования iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
но тогда открываються все порты для пользователей.

Если не разрешены NEW, то открываются только для уже установленных по другим портам соединений. Для ftp достаточно открыть верхние порты с параметрами ESTABLISHED,RELATED и в файле /etc/sysconfig/SuSEfirewall2 не забыть подключить модули nf_conntrack_ftp и, если надо, nf_nat_ftp. В файл /etc/sysconfig/scripts/SuSEfirewall2-custom добавляются строчки:
iptables -A forward_int -s 192.168.x.0/24 -d 0/0 -p tcp -m state --state ESTABLISHED,RELATED --dport 1024:65535 -j ACCEPT
iptables -A forward_ext -s 0/0 -d 192.168.x.0/24 -p tcp -m state --state ESTABLISHED,RELATED --sport 1024:65535 -j ACCEPT

Где x - число, используемое в локальной сети.

Проброс портов в локальную сеть делается в файле /etc/sysconfig/SuSEfirewall2 следующим образом:

FW_FORWARD_MASQ="0/0,[ip-адрес компьютера в локальной сети],[протокол, например tcp],[порт на сервере, к которому обращаются извне],[порт компьютера в локальной сети],[внешний ip]
[Еще правила, каждое с новой строки (если не ошибаюсь, можно также через пробел)]"

Или с помощью непосредственно iptables в файле /etc/sysconfig/scripts/SuSEfirewall2-custom
iptables -A FORWARD -i eth0 -p tcp -d [ip-адрес компьютера в локальной сети] --dport [порт компьютера в локальной сети] -j ACCEPT
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport [порт на сервере, к которому обращаются извне] -j DNAT --to [ip-адрес компьютера в локальной сети]:[порт компьютера в локальной сети]

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