URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID1
Нить номер: 79818
[ Назад ]

Исходное сообщение
"iptables: делать NAT, если удовлетворяет условию"

Отправлено jork , 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.
та же ошибка...


Содержание

Сообщения в этом обсуждении
"iptables: делать NAT, если удовлетворяет условию"
Отправлено reader , 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/


"iptables: делать NAT, если удовлетворяет условию"
Отправлено reader , 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


"iptables: делать NAT, если удовлетворяет условию"
Отправлено jork , 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.
теперь вот так ругается..


"iptables: делать NAT, если удовлетворяет условию"
Отправлено reader , 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


"iptables: делать NAT, если удовлетворяет условию"
Отправлено jork , 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.


".............."
Отправлено Andrey Mitrofanov , 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 он бы был, но... %)

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


".............."
Отправлено reader , 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

".............."
Отправлено jork , 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, спасибо дружище!
оказалось всё просто - переставить указание протокола в самое начало;)