LINUX.ORG.RU
ФорумAdmin

Iptables и IP alias (доп. IP адрес)


0

0

Здравствуйте.
Не могу понять как фильтровать трафик средствами IPTABLES.

uname -a
Linux 2.6.26-2-xen-686 #1 SMP Sat Oct 17 20:37:07 UTC 2009 i686

iptables v1.4.6

ip address show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN qlen 1000
link/ether 00:a6:3e:27:a4:41 brd ff:ff:ff:ff:ff:ff
inet 94.127.27.176/24 brd 94.127.27.255 scope global eth0
inet 94.127.21.31/32 scope global eth0
inet6 fe80::216:3eff:ff27:f441/64 scope link
valid_lft forever preferred_lft forever


Основной: IP 94.127.27.176 eth0
дополнительный IP 94.127.21.31, добавляю командой:
ip address add 94.127.21.31 dev eth0

теперь если ставлю правило:
IPTABLES -A INPUT -p ALL -d 94.127.21.31 -j DROP
оно не срабатывает, а если (основной IP):
IPTABLES -A INPUT -p ALL -d 94.127.27.176 -j DROP
то работает правильно.

Объясните в чем причина?, в какие цепочки приходит трафик дополнительного ip?, как его фильтровать средствами iptables?



З.Ы. адреса вымышленые.



Я так понял ты Алиасом его назначил ? так определи тогда устройство -o eth0:0

Tok ★★ ()
Ответ на: комментарий от Tok

да я алиасом добавил IP адрес, а iptables игнорирует правила в которых этот адрес участвует.

iptables не понимает алиасы интерфейса, на -o eth0:0 он сыпит: Warning: weird character in interface `eth0:0' (No aliases, :, ! or *).

meta-com ()
Ответ на: комментарий от meta-com

> да я алиасом добавил IP адрес, а iptables игнорирует правила в которых этот адрес участвует.

Именно. Потому как интерфейс один, и зовется он eth0. С точки зрения iptables

no-dashi ★★★★★ ()
Ответ на: комментарий от no-dashi

Так я пишу правило, в котором имя интерфейса вообще не участвует:

1. IPTABLES -A INPUT -p ALL -d 94.127.21.31 -j DROP
2. IPTABLES -A INPUT -p ALL -d 94.127.27.176 -j DROP

Второе работает, а первое нет!

meta-com ()
Ответ на: комментарий от Bers666

>iptables-tutorial уже прочитан?

Да, и не однократно. Более пяти роутеров по нему настраивал, а тут за VDS взялся... с алиасами никогда не сталкивался, и мануалов по этой теме не нашел (я имею ввиду связку iptables и ip aliasing).

meta-com ()
Ответ на: комментарий от ventilator

>Больше правил никаких нету,только эти два?
Отчегож есть и другие, эти правила я в качестве проверки ставил первыми в цепочку INPUT, если интересно вот полный листинг:

#!/bin/sh

echo «1.1 Internet Configuration.»
INET_IP1=«94.127.27.176»
INET_IP2=«94.127.21.31»
LO_IP=«127.0.0.1»
LO_IFACE=«lo»

echo «1.5 IPTables Configuration.»
IPTABLES=«/sbin/iptables»

echo «1.6 Other Configuration.»
$IPTABLES -t nat -F
$IPTABLES -t mangle -F
$IPTABLES -t filter -F

$IPTABLES -X allowed
$IPTABLES -X bad_tcp_packets
$IPTABLES -X tcp_packets
$IPTABLES -X udp_packets
$IPTABLES -X icmp_packets
$IPTABLES -X input_chain

echo «4.1.1 Set policies»
$IPTABLES -P INPUT DROP
$IPTABLES -P OUTPUT DROP
$IPTABLES -P FORWARD DROP

echo «4.1.2 Create userspecified chains»
echo «Create chain for bad tcp packets»
$IPTABLES -N bad_tcp_packets

echo «Create separate chains for ICMP, TCP and UDP to traverse»
$IPTABLES -N allowed
$IPTABLES -N tcp_packets
$IPTABLES -N udp_packets
$IPTABLES -N icmp_packets
$IPTABLES -N input_chain

echo «4.1.3 Create content in userspecified chains»
echo «bad_tcp_packets chain»
$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

echo «allowed chain»

for port in 22 21; do
iptables -A allowed -p tcp -m state --state NEW --dport $port -m recent --update --seconds 20 -j TARPIT
iptables -A allowed -p tcp -m state --state NEW --dport $port -m recent --set -j ACCEPT
done;

$IPTABLES -A allowed -p tcp --syn -j ACCEPT
$IPTABLES -A allowed -p tcp -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A allowed -p tcp -j DROP

echo «TCP rules:»
$IPTABLES -A tcp_packets -p tcp --dport 21 -j allowed    #ftp
$IPTABLES -A tcp_packets -p tcp --dport 22 -j allowed    #ssh
$IPTABLES -A tcp_packets -p tcp --dport 25 -j allowed    #smtp
$IPTABLES -A tcp_packets -p tcp --dport 53 -j allowed    #dns
$IPTABLES -A tcp_packets -p tcp --dport 110 -j allowed    #pop3
$IPTABLES -A tcp_packets -p tcp --dport 143 -j allowed    #imap
$IPTABLES -A tcp_packets -p tcp --dport 80 -j allowed   #http
$IPTABLES -A tcp_packets -p tcp --dport 8000 -j allowed #shoutcast out
$IPTABLES -A tcp_packets -p tcp --dport 8001 -j allowed #shoutcast in


echo «UDP ports:»
$IPTABLES -A udp_packets -p udp --dport 53 -j ACCEPT   #dns


echo «ICMP rules:»
$IPTABLES -A icmp_packets -p icmp --icmp-type 8 -j ACCEPT   #Echo request
$IPTABLES -A icmp_packets -p icmp --icmp-type 0 -j ACCEPT   #Echo Reply


echo «Input Chain:»
$IPTABLES -A input_chain -p tcp -m tcp -j tcp_packets
$IPTABLES -A input_chain -p udp -m udp -j udp_packets
$IPTABLES -A input_chain -p icmp -m icmp -j icmp_packets


echo «4.1.4 INPUT chain»
$IPTABLES -A INPUT -p tcp -j bad_tcp_packets
$IPTABLES -A INPUT -p ALL -i $LO_IFACE -s $LO_IP -j ACCEPT
$IPTABLES -A INPUT -p ALL -i $LO_IFACE -s $INET_IP1 -j input_chain
$IPTABLES -A INPUT -p ALL -i $LO_IFACE -s $INET_IP2 -j input_chain

$IPTABLES -A INPUT -p ALL -d $INET_IP1 -j input_chain
$IPTABLES -A INPUT -p ALL -d $INET_IP2 -j input_chain

$IPTABLES -A INPUT -p ALL -d $INET_IP1 -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A INPUT -p ALL -d $INET_IP2 -m state --state ESTABLISHED,RELATED -j ACCEPT


echo «4.1.6 OUTPUT chain»
$IPTABLES -A OUTPUT -p tcp -j bad_tcp_packets
$IPTABLES -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A OUTPUT -p ALL -s $LO_IP -j ACCEPT
$IPTABLES -A OUTPUT -p ALL -s $INET_IP1 -j ACCEPT
$IPTABLES -A OUTPUT -p ALL -s $INET_IP2 -j ACCEPT

exit 0

meta-com ()
Ответ на: комментарий от meta-com

1. IPTABLES -A INPUT -p ALL -d 94.127.21.31 -j DROP

2. IPTABLES -A INPUT -p ALL -d 94.127.27.176 -j DROP

Второе работает, а первое нет!

inet 94.127.21.31/32 scope global eth0

94.127.21.31/32

/32

может, с этим связано?

azure ★★ ()
Ответ на: комментарий от meta-com

в цепочке INPUT адрес с маской /32 не имеет смысла. Ведь сеть, с которой взаимодействует адрес ограничивается одним этим компьютером (или, точнее, нулем). поэтому netfilter вполне имеет право это правило игнорировать. Логично?

azure ★★ ()
Ответ на: комментарий от azure

Тема закрыта

Всё оказалось еще смешнее, мой VDS хостер два дня назад перенёс сервер, а маршрут первого ip адреса оставил смотреть на старый сервер, а второй ip адрес прокинул на новый, в итоге получилось что я поднимал алиас на том сервере куда из внешнего мира пакеты вообще не ходили... чуть головой не поехал...

Какое счастье когда у тебя все дома )))

meta-com ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.