The OpenNET Project / Index page

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

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

"iptables: делать NAT, если удовлетворяет условию"  
Сообщение от jork on 14-Апр-08, 21:43 
Привет всем!
хочу в линуксе сделать NAT, при условии что tcp-пакеты имеют в качестве порта назначаения, например 110. При всех других случаях НАТ делать не надо.
Тривиальная задача и в ipfw/PF я делал подобное много раз. В линуксе - выдает ошибку.Подскажите, как быть, пожалуйста!
# iptables -t nat -A POSTROUTING -s 10.0.0.0/24 --destination-port 110 -p tcp -j MASQUERADE --to 192.168.0.32
iptables v1.3.8: Unknown arg `--destination-port'
Try `iptables -h' or 'iptables --help' for more information.
а в мане такое слово как "destination-port" есть... ничего не понимаю!
а вообще мне по хорошему ещё нужно указать сеть назначения:
# iptables -t nat -A POSTROUTING -s 10.0.0.0/24 --destination 1.1.1.0/24 --destination-port 110 -p tcp -j MASQUERADE --to 192.168.0.32
iptables v1.3.8: Unknown arg `--destination-port'
Try `iptables -h' or 'iptables --help' for more information.
та же ошибка...

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

 Оглавление

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


1. "iptables: делать NAT, если удовлетворяет условию"  
Сообщение от reader (??) on 14-Апр-08, 22:33 
>[оверквотинг удален]
>-j MASQUERADE --to 192.168.0.32
>iptables v1.3.8: Unknown arg `--destination-port'
>Try `iptables -h' or 'iptables --help' for more information.
>а в мане такое слово как "destination-port" есть... ничего не понимаю!
>а вообще мне по хорошему ещё нужно указать сеть назначения:
># iptables -t nat -A POSTROUTING -s 10.0.0.0/24 --destination 1.1.1.0/24 --destination-port 110
>-p tcp -j MASQUERADE --to 192.168.0.32
>iptables v1.3.8: Unknown arg `--destination-port'
>Try `iptables -h' or 'iptables --help' for more information.
>та же ошибка...

при -j MASQUERADE, IP не указывается, подразумевается подстановка адреса исходящего интерфейса
iptables -t nat -A POSTROUTING -s 10.0.0.0/24 -d 1.1.1.0/24 -dport 110 -p tcp -j MASQUERADE

если указывается IP, то используется -j SNAT
iptables -t nat -A POSTROUTING -s 10.0.0.0/24 -d 1.1.1.0/24 -dport 110 -p tcp -j SNAT --to-source 192.168.0.32


http://www.opennet.me/docs/RUS/iptables/

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

2. "iptables: делать NAT, если удовлетворяет условию"  
Сообщение от reader (??) on 14-Апр-08, 22:36 
>[оверквотинг удален]
>при -j MASQUERADE, IP не указывается, подразумевается подстановка адреса исходящего интерфейса
>iptables -t nat -A POSTROUTING -s 10.0.0.0/24 -d 1.1.1.0/24 -dport 110 -p
>tcp -j MASQUERADE
>
>если указывается IP, то используется -j SNAT
>iptables -t nat -A POSTROUTING -s 10.0.0.0/24 -d 1.1.1.0/24 -dport 110 -p
>tcp -j SNAT --to-source 192.168.0.32
>
>
>http://www.opennet.me/docs/RUS/iptables/

--dport 110

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

3. "iptables: делать NAT, если удовлетворяет условию"  
Сообщение от jork on 15-Апр-08, 11:31 
>[оверквотинг удален]
>при -j MASQUERADE, IP не указывается, подразумевается подстановка адреса исходящего интерфейса
>iptables -t nat -A POSTROUTING -s 10.0.0.0/24 -d 1.1.1.0/24 -dport 110 -p
>tcp -j MASQUERADE
>
>если указывается IP, то используется -j SNAT
>iptables -t nat -A POSTROUTING -s 10.0.0.0/24 -d 1.1.1.0/24 -dport 110 -p
>tcp -j SNAT --to-source 192.168.0.32
>
>
>http://www.opennet.me/docs/RUS/iptables/

# iptables -t nat -A POSTROUTING -s 10.0.0.0/24 -d 1.1.1.0/24 -dport 110 -p tcp -j SNAT --to-source 192.168.0.32
iptables v1.3.8: multiple -d flags not allowed
Try `iptables -h' or 'iptables --help' for more information.
теперь вот так ругается..

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

4. "iptables: делать NAT, если удовлетворяет условию"  
Сообщение от reader (ok) on 15-Апр-08, 11:52 
>[оверквотинг удален]
>>tcp -j SNAT --to-source 192.168.0.32
>>
>>
>>http://www.opennet.me/docs/RUS/iptables/
>
># iptables -t nat -A POSTROUTING -s 10.0.0.0/24 -d 1.1.1.0/24 -dport 110
>-p tcp -j SNAT --to-source 192.168.0.32
>iptables v1.3.8: multiple -d flags not allowed
>Try `iptables -h' or 'iptables --help' for more information.
>теперь вот так ругается..

--dport 110

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

5. "iptables: делать NAT, если удовлетворяет условию"  
Сообщение от jork on 15-Апр-08, 12:17 
>[оверквотинг удален]
>>>
>>>http://www.opennet.me/docs/RUS/iptables/
>>
>># iptables -t nat -A POSTROUTING -s 10.0.0.0/24 -d 1.1.1.0/24 -dport 110
>>-p tcp -j SNAT --to-source 192.168.0.32
>>iptables v1.3.8: multiple -d flags not allowed
>>Try `iptables -h' or 'iptables --help' for more information.
>>теперь вот так ругается..
>
>--dport 110

# iptables -t nat -A POSTROUTING -s 10.0.0.0/24 -d 1.1.1.0/24 --dport 110 -p tcp -j SNAT --to-source 192.168.0.32
iptables v1.3.8: Unknown arg `--dport'
Try `iptables -h' or 'iptables --help' for more information.

# iptables -t nat -A POSTROUTING -s 10.0.0.0/24 -d 1.1.1.0/24 --destination-port 110 -p tcp -j SNAT --to-source 192.168.0.32
iptables v1.3.8: Unknown arg `--destination-port'
Try `iptables -h' or 'iptables --help' for more information.

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

6. ".............."  
Сообщение от Andrey Mitrofanov on 15-Апр-08, 13:23 
>Привет всем!
>хочу в линуксе сделать NAT, при условии что tcp-пакеты имеют в качестве
>порта назначаения, например 110. При всех других случаях НАТ делать не
>надо.
>Тривиальная задача и в ipfw/PF я делал подобное много раз. В линуксе

-----# firehol explain

: firehol.sh,v 1.256 2007/05/22 22:52:53 ktsaou Exp $
(C) Copyright 2003, Costa Tsaousis <costa@tsaousis.gr>
FireHOL is distributed under GPL.
Home Page: http://firehol.sourceforge.net

# FireHOL [:] > FROM="10.0.0.0/24"
# Cmd Line : 1
# Command  : FROM="10.0.0.0/24"
# > OK <

# FireHOL [:] > MYEXT="192.168.0.32"
# Cmd Line : 2
# Command  : MYEXT="192.168.0.32"
# > OK <

# FireHOL [:] > DST="1.1.1.0/24"
# Cmd Line : 3
# Command  : DST="1.1.1.0/24"
# > OK <

# FireHOL [:] > snat to "$MYEXT" proto tcp src "$FROM" dst "$DST" dport "110"
# Cmd Line : 4
# Command  : snat to "$MYEXT" proto tcp src "$FROM" dst "$DST" dport "110"

# Creating chain 'nat.1' under 'POSTROUTING' in table 'nat'
/sbin/iptables -t nat -N nat.1
/sbin/iptables -t nat -A POSTROUTING -p tcp -s 10.0.0.0/24 -d 1.1.1.0/24 --dport 110 -j nat.1

# Taking the NAT action: 'snat'
/sbin/iptables -t nat -A nat.1 -p tcp -j SNAT --to-source 192.168.0.32

# > OK <

# FireHOL [:] > router mailpass src "$FROM" dst "$DST" dport "110"
# Cmd Line : 5
# Command  : router mailpass src "$FROM" dst "$DST" dport "110"

# Creating chain 'in_mailpass' under 'FORWARD' in table 'filter'
/sbin/iptables -t filter -N in_mailpass
/sbin/iptables -t filter -A FORWARD -s 10.0.0.0/24 -d 1.1.1.0/24 --dport 110 -j in_mailpass

# Creating chain 'out_mailpass' under 'FORWARD' in table 'filter'
/sbin/iptables -t filter -N out_mailpass
/sbin/iptables -t filter -A FORWARD -s 1.1.1.0/24 --sport 110 -d 10.0.0.0/24 -j out_mailpass

# > OK <
# FireHOL [router:mailpass] > server "pop3" accept
# Cmd Line : 6
# Command  : server "pop3" accept

# Preparing for service 'pop3' of type 'server' under interface 'mailpass'

# Creating chain 'in_mailpass_pop3_s1' under 'in_mailpass' in table 'filter'
/sbin/iptables -t filter -N in_mailpass_pop3_s1
/sbin/iptables -t filter -A in_mailpass -j in_mailpass_pop3_s1

# Creating chain 'out_mailpass_pop3_s1' under 'out_mailpass' in table 'filter'
/sbin/iptables -t filter -N out_mailpass_pop3_s1
/sbin/iptables -t filter -A out_mailpass -j out_mailpass_pop3_s1

# Running simple rules for  server 'pop3'
/sbin/iptables -t filter -A in_mailpass_pop3_s1 -p tcp --sport 1024:65535 --dport 110 -m state --state NEW\,ESTABLISHED -j ACCEPT
/sbin/iptables -t filter -A out_mailpass_pop3_s1 -p tcp --sport 110 --dport 1024:65535 -m state --state ESTABLISHED -j ACCEPT

# > OK <

# FireHOL [router:mailpass] > quit

version 5
    FROM="10.0.0.0/24"
    MYEXT="192.168.0.32"
    DST="1.1.1.0/24"
    snat to "$MYEXT" proto tcp src "$FROM" dst "$DST" dport "110"

router mailpass src "$FROM" dst "$DST" dport "110"
    server "pop3" accept

-----# _

Да, не маскарад. Мне просто со SNAT-ом привычнее.
Да, три команды, получившиеся из "snat to ..." можно склеить в одну. Мне лениво.
Да, "router ..." + "accept pop3" тоже нужны: не всё ж пускать...

И, да, ещё ip_forward надо включить -- в firehol debug он бы был, но... %)

Успехов в решении тривиальных задач! ;)

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

7. ".............."  
Сообщение от reader (ok) on 15-Апр-08, 14:47 
iptables -t nat -A POSTROUTING -p tcp -s 10.0.0.0/24 -d 1.1.1.0/24 --dport 110 -j SNAT --to-source 192.168.0.32
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

8. ".............."  
Сообщение от jork on 15-Апр-08, 16:24 
>iptables -t nat -A POSTROUTING -p tcp -s 10.0.0.0/24 -d 1.1.1.0/24 --dport
>110 -j SNAT --to-source 192.168.0.32

reader, спасибо дружище!
оказалось всё просто - переставить указание протокола в самое начало;)

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

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

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




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

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