The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"Проброс порта"
Вариант для распечатки  
Пред. тема | След. тема 
Форумы OpenNET: Виртуальная конференция (Public)
Изначальное сообщение [ Отслеживать ]

"Проброс порта"  
Сообщение от Xruman (ok) on 31-Мрт-09, 10:18 
Здравствуйте. Имеется сервер на opensuse10.1 , нужно пробросить один порт в локалку, помогите это сделать. Вот настройки iptables которые сейчас работают

#! /bin/sh
#
# /etc/init.d/iptables
#
### BEGIN INIT INFO
# Provides: iptables
# Required-Start: $network
# X-UnitedLinux-Should-Start: $network
# Required-Stop: $network
# X-UnitedLinux-Should-Stop: $network
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 2 6
# Short-Description: Load iptables rules
# Description: Loads iptables rules
### END INIT INFO
# X-SuSE-Dep-Only

# Указываем пути
IPT="/usr/sbin/iptables"
IPT_SAVE="/usr/sbin/iptables-save"
IPT_REST="/usr/sbin/iptables-restore"

# Внешний сетевой интерфейс
INET_DEV="eth1"

# Внутренний сетевой интерфейс
LAN_DEV="eth2"

#
EXT_R_IP="xxx"
PORT1="50000"

# Открытые порты для LAN (TCP)
OPENPORTS_INT_TCP="21,25,22,80,110,27015,5190,5900,6000,58000"

# Открытые порты для LAN (UDP)
OPENPORTS_INT_UDP="53"

start_fw()
{

echo "1" > /proc/sys/net/ipv4/ip_forward
echo "1" > /proc/sys/net/ipv4/conf/all/rp_filter # Активация IP Spoofing Protection
#echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts # Игнорирование Broadcast Request


# Модули
/sbin/modprobe ip_queue # Необходимо для работы Netams
/sbin/modprobe ip_nat_ftp
/sbin/modprobe ip_conntrack_ftp
#/sbin/modprobe ip_nat_irc
#/sbin/modprobe ip_conntrack_irc


## Правила iptables
##

# Определяем политики по умолчанию
$IPT -P INPUT DROP
$IPT -P FORWARD DROP
$IPT -P OUTPUT DROP

# Создаем цепочки
$IPT -N input_int
$IPT -N input_ext
#$IPT -N forward_int
#$IPT -N forward_ext

# Пакеты на входе
$IPT -A INPUT -s 192.168.0.0/24 -p all -j ACCEPT

$IPT -A INPUT -i lo -j ACCEPT # Разрешаем прохождение трафика через петлевой интерфейс
$IPT -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT #
$IPT -A INPUT -i $LAN_DEV -j input_int # Перейти к цепочке input_int если пакет из LAN
$IPT -A INPUT -i $INET_DEV -j input_ext # Перейти к цепочке input_ext если пакет из Интернета
$IPT -A INPUT -j input_ext # Перейти к цепочке input_ext если пакет не из LAN или Интернет
$IPT -A INPUT -j DROP #


# Пакеты на выходе
$IPT -A OUTPUT -p all -j QUEUE
$IPT -A OUTPUT -o lo -j ACCEPT # Разрешаем прохождение трафика через петлевой интерфейс
$IPT -A OUTPUT -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT #

# Правила input_int
$IPT -A input_int -p ALL -s ! 192.168.0.0/24 -j DROP # Принимаем пакеты только из этой подсети
$IPT -A input_int -m state --state INVALID -j DROP # Отбрасываем пакеты которые не могут быть идентифицированы
$IPT -A input_int -p icmp -s 192.168.0.1/24 -j ACCEPT # Пинг из LAN
$IPT -A input_int -p tcp -m multiport --dport $OPENPORTS_INT_TCP -j REJECT # Открытые порты TCP
$IPT -A input_int -p udp -m multiport --dport $OPENPORTS_INT_UDP -j REJECT # Открытые порты UDP
$IPT -A input_int -p ALL -j DROP #

# Правила input_ext
$IPT -A input_ext -p ALL -j REJECT
$IPT -A input_ext -m state --state INVALID -j DROP # Отбрасываем пакеты которые не могут быть идентифицированы
$IPT -A input_ext -p icmp -j ACCEPT # Принимать icmp из Интернет
$IPT -A input_ext -j DROP # Все остальное отбрасываем

# Транзитные пакеты
#$IPT -A FORWARD -p icmp -j ACCEPT # Пропускаем icmp из LAN в Интернет
$IPT -A FORWARD -p ALL -j QUEUE # Заворот пакетов в Netams

# NAT
$IPT -t nat -A PREROUTING -p tcp -d $EXT_R_IP --dport $PORT1 -j DNAT --to-destination 192.168.0.22:50000
$IPT -A FORWARD -i eth1 -d 192.168.0.22 -p tcp --dport 50000 -j ACCEPT
$IPT -t nat -A POSTROUTING -s 192.168.0.0/24 -o $INET_DEV -j MASQUERADE
}

. /etc/rc.status

rc_reset

case "$1" in
start)
echo -n "Flushing Firewall rules "
$IPT -F
$IPT -t nat -F
$IPT -t mangle -F
rc_status -v
echo -n "Clearing Firewall rules "
$IPT -X
$IPT -t nat -X
$IPT -t mangle -X
rc_status -v
$IPT -Z
echo -n "Loading Firewall rules "
start_fw
rc_status -v
touch /var/lock/subsys/iptables
;;
stop)
echo -n "Flushing Firewall rules "
$IPT -F
$IPT -t nat -F
$IPT -t mangle -F
rc_status -v
echo -n "Clearing Firewall rules "
$IPT -X
$IPT -t nat -X
$IPT -t mangle -X
rc_status -v
echo -n "Resetting built-in chains to default ACCEPT policy "
$IPT -P INPUT ACCEPT && $IPT -P OUTPUT ACCEPT && $IPT -P FORWARD ACCEPT
rc_status -v
;;
save)
echo -n "Saving current rules to $RULES: "
$IPT_SAVE -c > $RULES
rc_status -v
;;
restart|force-reload)
$0 start
rc_status
;;
status)
echo "Checking the status of the Firewall "
$IPT -L || rc_failed 3
;;
*)
echo "Usage: $0 {start|stop|save|status|restart|reload}"
exit 1
;;
esac

# Set exit status
rc_exit


Я пробовал добавить такие строки
$IPT -t nat -A PREROUTING -p tcp -d $EXT_R_IP --dport $PORT1 -j DNAT --to-destination 192.168.0.22:50000
$IPT -A FORWARD -i eth1 -d 192.168.0.22 -p tcp --dport 50000 -j ACCEPT
но наверное не правильно сделал, т.к. ничего не заработало :( помогите решить проблему

Высказать мнение | Ответить | Правка | Cообщить модератору

 Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "Проброс порта"  
Сообщение от reader (ok) on 31-Мрт-09, 10:26 
https://www.opennet.ru/docs/RUS/iptables/#DNATTARGET
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

2. "Проброс порта"  
Сообщение от geekkoo (ok) on 31-Мрт-09, 11:05 
>[оверквотинг удален]
>rc_exit
>
>
>Я пробовал добавить такие строки
>$IPT -t nat -A PREROUTING -p tcp -d $EXT_R_IP --dport $PORT1 -j
>DNAT --to-destination 192.168.0.22:50000
>$IPT -A FORWARD -i eth1 -d 192.168.0.22 -p tcp --dport 50000 -j
>ACCEPT
>но наверное не правильно сделал, т.к. ничего не заработало :( помогите решить
>проблему

А $EXT_R_IP вообще говоря поднят (вдруг на интерфейсе несколько IP сидят)?

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

3. "Проброс порта"  
Сообщение от Xruman (ok) on 31-Мрт-09, 11:23 
>>Я пробовал добавить такие строки
>>$IPT -t nat -A PREROUTING -p tcp -d $EXT_R_IP --dport $PORT1 -j
>>DNAT --to-destination 192.168.0.22:50000
>>$IPT -A FORWARD -i eth1 -d 192.168.0.22 -p tcp --dport 50000 -j
>>ACCEPT
>>но наверное не правильно сделал, т.к. ничего не заработало :( помогите решить
>>проблему
>
>А $EXT_R_IP вообще говоря поднят (вдруг на интерфейсе несколько IP сидят)?

тоесть, не совсем понял.. в верху я создал в правилах EXT_R_IP="мой ip" или этого не достаточно??

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

4. "Проброс порта"  
Сообщение от Xruman (ok) on 31-Мрт-09, 11:39 
попробовал вот так добавить  
iptables -t nat -A PREROUTING -p tcp -d $EXT_R_IP --dport $PORT1 -j DNAT --to-destination 192.168.0.22:50000
написалось что iptables v1.3.8: host/network `--dport' not found :(


Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

5. "Проброс порта"  
Сообщение от reader (ok) on 31-Мрт-09, 14:47 
>попробовал вот так добавить
>iptables -t nat -A PREROUTING -p tcp -d $EXT_R_IP --dport $PORT1 -j
>DNAT --to-destination 192.168.0.22:50000
>написалось что iptables v1.3.8: host/network `--dport' not found :(

а если вместо переменных писать значения?

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

6. "Проброс порта"  
Сообщение от konst email(??) on 31-Мрт-09, 15:21 
>попробовал вот так добавить
>iptables -t nat -A PREROUTING -p tcp -d $EXT_R_IP --dport $PORT1 -j
>DNAT --to-destination 192.168.0.22:50000
>написалось что iptables v1.3.8: host/network `--dport' not found :(

1) -t nat -A PREROUTING -i ethX ...
2) --dport $PORT1 д.б. открыт в INPUT (м.б.)

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

7. "Проброс порта"  
Сообщение от Xruman (ok) on 01-Апр-09, 12:14 
>>попробовал вот так добавить
>>iptables -t nat -A PREROUTING -p tcp -d $EXT_R_IP --dport $PORT1 -j
>>DNAT --to-destination 192.168.0.22:50000
>>написалось что iptables v1.3.8: host/network `--dport' not found :(
>
>1) -t nat -A PREROUTING -i ethX ...
>2) --dport $PORT1 д.б. открыт в INPUT (м.б.)

Добавил в открытые нужный порт. Вроде что-то изменилось, ошибку не выдает, пробую телнетом подключиться к нужной мне программе, она выдает ошибку сокет еррор. Что-то значит блокируется? А как можно разрешить все протоколы на этот порт? пробовал -p ALL ставить, но не получилось ничего :(


Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

8. "Проброс порта"  
Сообщение от reader (ok) on 01-Апр-09, 12:21 
>[оверквотинг удален]
>>>DNAT --to-destination 192.168.0.22:50000
>>>написалось что iptables v1.3.8: host/network `--dport' not found :(
>>
>>1) -t nat -A PREROUTING -i ethX ...
>>2) --dport $PORT1 д.б. открыт в INPUT (м.б.)
>
>Добавил в открытые нужный порт. Вроде что-то изменилось, ошибку не выдает, пробую
>телнетом подключиться к нужной мне программе, она выдает ошибку сокет еррор.
>Что-то значит блокируется? А как можно разрешить все протоколы на этот
>порт? пробовал -p ALL ставить, но не получилось ничего :(

должно быть открыто в FORWARD как для запросов, так и для ответов

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

9. "Проброс порта"  
Сообщение от Xruman (ok) on 02-Апр-09, 10:01 
>должно быть открыто в FORWARD как для запросов, так и для ответов
>

А нельзя ли поподробней, не совсем понял :(
У меня ведь стоит чуть ниже
$IPT -A FORWARD -i eth1 -d 192.168.0.22 -p tcp --dport 50000 -j ACCEPT

или это только в одну сторону разрешает?

я пробовал чуть выше этих строчек вставлять
$IPT -A FORWARD -p ALL -j ACCEPT

но так ничего не получилось

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

10. "Проброс порта"  
Сообщение от reader (ok) on 02-Апр-09, 10:55 
>>должно быть открыто в FORWARD как для запросов, так и для ответов
>>
>
>А нельзя ли поподробней, не совсем понял :(
>У меня ведь стоит чуть ниже
>$IPT -A FORWARD -i eth1 -d 192.168.0.22 -p tcp --dport 50000 -j
>ACCEPT
>
>или это только в одну сторону разрешает?

именно
>
>я пробовал чуть выше этих строчек вставлять
>$IPT -A FORWARD -p ALL -j ACCEPT

это разрешит весь транзит
>
>но так ничего не получилось

на 192.168.0.22 послушайте интерфейс на предмет входящих и ответов с него.

и покажите текущий вид правил iptables-save

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

11. "Проброс порта"  
Сообщение от Xruman (ok) on 02-Апр-09, 12:07 
>[оверквотинг удален]
>>я пробовал чуть выше этих строчек вставлять
>>$IPT -A FORWARD -p ALL -j ACCEPT
>
>это разрешит весь транзит
>>
>>но так ничего не получилось
>
>на 192.168.0.22 послушайте интерфейс на предмет входящих и ответов с него.
>
>и покажите текущий вид правил iptables-save

тоесть если я вместо
$IPT -A FORWARD -i eth1 -d 192.168.0.22 -p tcp --dport 50000 -j ACCEPT
поставлю
$IPT -A FORWARD -p ALL -j ACCEPT
я разрешу все проходящие пакеты и так должно работать?

вот мой iptables-save

# Generated by iptables-save v1.3.8 on Thu Apr  2 04:53:56 2009
*mangle
:PREROUTING ACCEPT [65048836:47399899463]
:INPUT ACCEPT [6612691:5717719568]
:FORWARD ACCEPT [58421949:41680457618]
:OUTPUT ACCEPT [5028933:1272414761]
:POSTROUTING ACCEPT [63451633:42952695581]
COMMIT
# Completed on Thu Apr  2 04:53:56 2009
# Generated by iptables-save v1.3.8 on Thu Apr  2 04:53:56 2009
*nat
:PREROUTING ACCEPT [2200790:170284224]
:POSTROUTING ACCEPT [68289:4289884]
:OUTPUT ACCEPT [68028:4280943]
-A PREROUTING -d 77.x.x.x -p tcp -m tcp --dport 50000 -j DNAT --to-destination 192.168.0.22:50000
-A PREROUTING -d 77.x.x.x -p udp -m udp --dport 50000 -j DNAT --to-destination 192.168.0.22:50000
-A POSTROUTING -s 192.168.0.0/255.255.255.0 -o eth1 -j MASQUERADE
COMMIT
# Completed on Thu Apr  2 04:53:56 2009
# Generated by iptables-save v1.3.8 on Thu Apr  2 04:53:56 2009
*filter
:INPUT DROP [0:0]
:FORWARD DROP [1:1500]
:OUTPUT DROP [0:0]
:input_ext - [0:0]
:input_int - [0:0]
-A INPUT -s 192.168.0.0/255.255.255.0 -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -i eth2 -j input_int
-A INPUT -i eth1 -j input_ext
-A INPUT -j input_ext
-A INPUT -j DROP
-A FORWARD -j ACCEPT
-A FORWARD -j QUEUE
-A FORWARD -d 192.168.0.22 -i ethX -p tcp -m tcp --dport 50000 -j ACCEPT
-A FORWARD -d 192.168.0.22 -i ethX -p udp -m udp --dport 50000 -j ACCEPT
-A OUTPUT -j QUEUE
-A OUTPUT -o lo -j ACCEPT
-A OUTPUT -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT
-A input_ext -j REJECT --reject-with icmp-port-unreachable
-A input_ext -m state --state INVALID -j DROP
-A input_ext -p icmp -j ACCEPT
-A input_ext -j DROP
-A input_int -s ! 192.168.0.0/255.255.255.0 -j DROP
-A input_int -m state --state INVALID -j DROP
-A input_int -s 192.168.0.0/255.255.255.0 -p icmp -j ACCEPT
-A input_int -p tcp -m multiport --dports 21,25,22,80,110,27015,5190,5900,6000,58000,50000 -j REJECT --reject-with icmp-port-unreachable
-A input_int -p udp -m multiport --dports 53,50000 -j REJECT --reject-with icmp-port-unreachable
-A input_int -j DROP
COMMIT
# Completed on Thu Apr  2 04:53:56 2009

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

12. "Проброс порта"  
Сообщение от reader (ok) on 02-Апр-09, 13:54 
>тоесть если я вместо
>$IPT -A FORWARD -i eth1 -d 192.168.0.22 -p tcp --dport 50000 -j
>ACCEPT
>поставлю
>$IPT -A FORWARD -p ALL -j ACCEPT
>я разрешу все проходящие пакеты и так должно работать?

да, и это уже прописано, хотя в плане безопасности не самая лучшая конструкция, но это исправите когда все заработает

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

13. "Проброс порта"  
Сообщение от konst email(??) on 02-Апр-09, 14:39 
>[оверквотинг удален]
>
>тоесть если я вместо
>$IPT -A FORWARD -i eth1 -d 192.168.0.22 -p tcp --dport 50000 -j
>ACCEPT
>поставлю
>$IPT -A FORWARD -p ALL -j ACCEPT
>я разрешу все проходящие пакеты и так должно работать?
>
>вот мой iptables-save
>

...

>-A FORWARD -d 192.168.0.22 -i ethX -p tcp -m tcp --dport 50000

eth"X" так и прописано?
-d <локал.адрес>?
----
Не вник во все эти правила... Но должно работать, если:
в input -d <ваш.внеш.ip> -s <ip-клиента с которого конектитесь> --dport 50000 -j ACCEPT

в nat:
-A PREROUTING -i eth<внеш.сетевая> -p tcp -d <ваш внеш.ip> -s <ip-клиентов> --dport 50000 -j DNAT --to-destination 192.168.0.22:50000


Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

14. "Проброс порта"  
Сообщение от reader (ok) on 02-Апр-09, 14:59 
>[оверквотинг удален]
>>-A FORWARD -d 192.168.0.22 -i ethX -p tcp -m tcp --dport 50000
>
>eth"X" так и прописано?
>-d <локал.адрес>?
>----
>Не вник во все эти правила... Но должно работать, если:
>в input -d <ваш.внеш.ip> -s <ip-клиента с которого конектитесь> --dport 50000 -j ACCEPT
>
>в nat:
>-A PREROUTING -i eth<внеш.сетевая> -p tcp -d <ваш внеш.ip> -s <ip-клиентов> --dport 50000 -j DNAT --to-destination 192.168.0.22:50000

PREROUTING выполняется до маршрутизации или после?
каким образом пакеты попадут в правила INPUT?

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

15. "Проброс порта"  
Сообщение от konst email(??) on 02-Апр-09, 15:26 
>[оверквотинг удален]
>>-d <локал.адрес>?
>>----
>>Не вник во все эти правила... Но должно работать, если:
>>в input -d <ваш.внеш.ip> -s <ip-клиента с которого конектитесь> --dport 50000 -j ACCEPT
>>
>>в nat:
>>-A PREROUTING -i eth<внеш.сетевая> -p tcp -d <ваш внеш.ip> -s <ip-клиентов> --dport 50000 -j DNAT --to-destination 192.168.0.22:50000
>
>PREROUTING выполняется до маршрутизации или после?
>каким образом пакеты попадут в правила INPUT?

конечно FORWARD. Это я по своей схеме написал. У меня все INPUT и FORWARD разнозначны:
-A INPUT -j RH-Firewall-1-INPUT
-A FORWARD -j RH-Firewall-1-INPUT
и далее вся работа идет с RH-Firewall-1-INPUT... Потому и написал про INPUT сдуру...

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

16. "Проброс порта"  
Сообщение от urusha (ok) on 02-Апр-09, 21:28 
если намудрили и не работает, потестите на простой конфигурации, есть такой скрипт, попробуйте:

IPT=/sbin/iptables
LPDIF=lo #петля
INTIF=eth2 #внутри
EXTIF=eth1 #снаружи
INTNET="192.168.0.0/24" сеть
INTUSER="192.168.0.22" ип куда бросаем
INTUSERPORT="50000" порт
EXTIP="xx.xx.xx.xx" внешний ип

MODULES="ip_tables ip_conntrack ip_gre iptable_filter iptable_mangle iptable_nat ipt_LOG ipt_limit ipt_owner ipt_state ipt_owner ipt_REJECT ipt_MASQUERADE ipt_mark ipt_tcpmss ip_nat_ftp ip_conntrack_ftp ip_conntrack_irc"
for i in $MODULES;
do
  modprobe $i
done

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

$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 OUTPUT DROP
$IPT -P FORWARD DROP

$IPT -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPT -A INPUT -i $LPDIF -j ACCEPT
$IPT -A INPUT -i $INTIF -j ACCEPT

$IPT -A OUTPUT -j ACCEPT

$IPT -A FORWARD -i $INTIF -o $EXTIF -j ACCEPT
$IPT -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPT -A FORWARD -i $EXTIF -o $INTIF -p tcp --dport $INTUSERPORT -j ACCEPT
$IPT -A FORWARD -i $EXTIF -o $INTIF -p udp --dport $INTUSERPORT -j ACCEPT


$IPT -t nat -A PREROUTING -p tcp -i $EXTIF -d $EXTIP --dport $INTUSERPORT -j DNAT --to-destination $INTUSER:$INTUSERPORT
$IPT -t nat -A PREROUTING -p udp -i $EXTIF -d $EXTIP --dport $INTUSERPORT -j DNAT --to-destination $INTUSER:$INTUSERPORT
$IPT -t nat -A POSTROUTING -o $EXTIF -s $INTNET-j MASQUERADE

заработает, так постепенно усложняйте, режте лишнее

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Оцените тред (1=ужас, 5=супер)? [ 1 | 2 | 3 | 4 | 5 ] [Рекомендовать для помещения в FAQ]




Спонсоры:
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2022 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру