помогите с iptables

Обсуждение настройки и работы сервисов, резервирования, сетевых настроек и вопросов безопасности ОС.

Модераторы: SLEDopit, Модераторы разделов

nokogerra
Сообщения: 83

помогите с iptables

Сообщение nokogerra »

Доброго времени суток. Есть debian6, на нем был просто нат для доступа из сети 10.0.2.0/23 в 10.22.103.0/28
здесь eth0 - 10.22.103.2, eth1 - 10.0.2.50

Код: Выделить всё

#!/bin/dash

# очистка правил iptables
iptables -F
iptables -t nat -F
iptables -t mangle -F

# политика по умолчанию: разрешается входящий и исходящий трафик, руками запрещаем проходящий через него трафик $
iptables -P FORWARD DROP

# Отбрасывать весь трафик при состоянии соединения invalid (исп модуль conntrack)
iptables -A FORWARD -m conntrack --ctstate INVALID -j DROP

# Принимать трафик только в случае состояния соединения established или related
iptables -A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT

# Передавать трафик из источника 10.0.2.0/23 с if eth1 (input) в eth0 (output)
iptables -A FORWARD -s 10.0.2.0/23 -i eth1 -o eth0 -j ACCEPT

# nat
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

Появилась надобность дать доступ из 10.22.103.0 к машине внутри 10.0.2.0 (10.0.3.45) на порт 1521, добавляю:

Код: Выделить всё

iptables -A FORWARD -d 10.0.3.45 -p tcp --dport 1521 -i eth0 -o eth1 -j ACCEPT
iptables -A PREROUTING -d 10.22.103.2/28 -p tcp --dport 1521 -j DNAT --to-destination 10.0.3.45:1521

и убираю

Код: Выделить всё

iptables -A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT,

все это в файле ipt, пытаюсь запустить:
root@NAT:/home/user# ./ipt
iptables: No chain/target/match by that name.

Заранее благодарен.
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 21498
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: помогите с iptables

Сообщение Bizdelnick »

nokogerra писал(а):
18.07.2013 11:48
iptables -A PREROUTING -d 10.22.103.2/28 -p tcp --dport 1521 -j DNAT --to-destination 10.0.3.45:1521

Если я правильно понял, тут надо -s.
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
nokogerra
Сообщения: 83

Re: помогите с iptables

Сообщение nokogerra »

Bizdelnick писал(а):
18.07.2013 12:38
nokogerra писал(а):
18.07.2013 11:48
iptables -A PREROUTING -d 10.22.103.2/28 -p tcp --dport 1521 -j DNAT --to-destination 10.0.3.45:1521

Если я правильно понял, тут надо -s.

Да, действительно, Вы правы, но результат не изменился. Читал здесь что бывает такое если не хватает модулей, но iptables же должен сам их подгружать? Если честно не понял как их подгрузить руками.
Спасибо сказали:
Аватара пользователя
Bluetooth
Сообщения: 4395
Статус: Блюзовый
ОС: Debian Squeeze amd64

Re: помогите с iptables

Сообщение Bluetooth »

Честно говоря, логичнее просто маршрутизировать пакеты между двумя сетками, нежели нат городить.
Хотя тут, похоже, 10.22.103.0 - сеть провайдера, отсюда и нат :)

В любом случае, что говорит traceroute 10.0.3.45 с машины в 10.22.103.0?

Ну и, похоже, тут дело в том, что не подгружается одно из правил:
root@NAT:/home/user# ./ipt
iptables: No chain/target/match by that name.

В начало скрипта добавляете set -x и смотрите, на какую строчку ругается
Спасибо сказали:
nokogerra
Сообщения: 83

Re: помогите с iptables

Сообщение nokogerra »

Bluetooth писал(а):
18.07.2013 13:05
Честно говоря, логичнее просто маршрутизировать пакеты между двумя сетками, нежели нат городить.
Хотя тут, похоже, 10.22.103.0 - сеть провайдера, отсюда и нат :)

В любом случае, что говорит traceroute 10.0.3.45 с машины в 10.22.103.0?

Ну и, похоже, тут дело в том, что не подгружается одно из правил:
root@NAT:/home/user# ./ipt
iptables: No chain/target/match by that name.

В начало скрипта добавляете set -x и смотрите, на какую строчку ругается

о как выдал:

Код: Выделить всё

root@NAT:/home/user# ./ipt
++ iptables -F
++ iptables -t nat -F
++ iptables -t mangle -F
++ iptables -P FORWARD DROP
++ iptables -A FORWARD -m conntrack --ctstate INVALID -j DROP
++ iptables -A FORWARD -s 10.0.2.0/23 -i eth1 -o eth0 -j ACCEPT
++ iptables -A FORWARD -d 10.0.3.45 -p tcp --dport 1521 -i eth0 -o eth1 -j ACCEPT
++ iptables -A PREROUTING -s 10.22.103.2/28 -p tcp --dport 1521 -j DNAT --to-destination 10.0.3.45:1521
iptables: No chain/target/match by that name.
++ iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

получается что ругается на ++ iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE? раньше не ругался, эта строка была изначально.
вот так выглядит целиком:
Spoiler

Код: Выделить всё

set -x
#!/bin/dash

# очистка правил iptables
iptables -F
iptables -t nat -F
iptables -t mangle -F

# политика по умолчанию: разрешается входящий и исходящий трафик, руками запрещаем проходящий через него трафик (неудовл правилам)
iptables -P FORWARD DROP

# Отбрасывать весь трафик при состоянии соединения invalid (исп модуль conntrack)
iptables -A FORWARD -m conntrack --ctstate INVALID -j DROP

# Принимать трафик только в случае состояния соединения established или related
#iptables -A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT

# Передавать трафик из источника 10.0.2.0/23 с if eth1 (input) в eth0 (output)
iptables -A FORWARD -s 10.0.2.0/23 -i eth1 -o eth0 -j ACCEPT
iptables -A FORWARD -d 10.0.3.45 -p tcp --dport 1521 -i eth0 -o eth1 -j ACCEPT
iptables -A PREROUTING -s 10.22.103.2/28 -p tcp --dport 1521 -j DNAT --to-destination 10.0.3.45:1521
#iptables -A FORWARD -d 10.0.2.50 -p tcp --dport 1521 -i eth0 -o eth1 -j ACCEPT
#iptables -A POSTROUTING -d 10.0.3.45 -p tcp --dport 1521 -j SNAT --to-source 10.22.103.2

# nat
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE


кстати по поводу модулей:

Код: Выделить всё

root@NAT:/home/user# lsmod | grep ip
ip6table_filter        12492  0
ip6_tables             17185  1 ip6table_filter
iptable_filter         12488  1
ipt_MASQUERADE         12530  1
iptable_nat            12800  1
nf_nat                 17924  2 iptable_nat,ipt_MASQUERADE
nf_conntrack_ipv4      13726  4 nf_nat,iptable_nat
nf_defrag_ipv4         12443  1 nf_conntrack_ipv4
nf_conntrack           43121  5 nf_conntrack_ipv4,nf_nat,iptable_nat,ipt_MASQUERADE,xt_conntrack
iptable_mangle         12488  0
ip_tables              17079  3 iptable_mangle,iptable_nat,iptable_filter
x_tables               18158  9 ip_tables,iptable_mangle,iptable_nat,ipt_MASQUERADE,iptable_filter,ip6_tables,ip
6table_filter,xt_conntrack,xt_tcpudp

маскарад подключен
Спасибо сказали:
Аватара пользователя
Bluetooth
Сообщения: 4395
Статус: Блюзовый
ОС: Debian Squeeze amd64

Re: помогите с iptables

Сообщение Bluetooth »

Правильная строчка выглядит так:

Код: Выделить всё

iptables -t nat -A PREROUTING -s 10.22.103.2/28 -p tcp --dport 1521 -j DNAT --to-destination 10.0.3.45:1521

если таблицу не указывать, то правила идут в таблицу filter
Спасибо сказали:
winhex
Сообщения: 223
ОС: Debian

Re: помогите с iptables

Сообщение winhex »

Подскажите с вопросом. Для всей сети установлен редирект 80-го порта на порт 82:

Код: Выделить всё

-A PREROUTING -i eth1 -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 82

Пробую исключить один ip-адрес, добавляю такое правило:

Код: Выделить всё

iptables -t nat -A PREROUTING -p tcp -s 192.168.4.20 --dport 80 -j ACCEPT


Но с этого ip все запросы продолжают редиректится на 82-й порт.

Вот полный список правил:

Код: Выделить всё

# Generated by iptables-save v1.3.5 on Wed Dec 18 12:32:23 2013
*nat
:PREROUTING ACCEPT [15554697:1315407495]
:POSTROUTING ACCEPT [4619401:326614583]
:OUTPUT ACCEPT [8726588:575556815]
-A PREROUTING -d 192.168.2.47 -p tcp -m tcp --dport 5000 -j DNAT --to-destination 192.168.4.230:3389
-A PREROUTING -i eth1 -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 82
-A PREROUTING -i eth1 -p tcp -m tcp --dport 443 -j REDIRECT --to-ports 82
-A PREROUTING -i eth1 -p tcp -m tcp --dport 3128 -j REDIRECT --to-ports 82
-A POSTROUTING -s 192.168.4.0/255.255.255.0 -d 192.168.4.230 -p tcp -m tcp --dport 3389 -j SNAT --to-source 192.168.4.1
-A POSTROUTING -o eth0 -j MASQUERADE
COMMIT
# Completed on Wed Dec 18 12:32:23 2013
# Generated by iptables-save v1.3.5 on Wed Dec 18 12:32:23 2013
*mangle
:PREROUTING ACCEPT [1209102367:896492018415]
:INPUT ACCEPT [1049463888:853150834048]
:FORWARD ACCEPT [159500404:43333997116]
:OUTPUT ACCEPT [1148653505:946219156804]
:POSTROUTING ACCEPT [1308179306:989559680853]
COMMIT
# Completed on Wed Dec 18 12:32:23 2013
# Generated by iptables-save v1.3.5 on Wed Dec 18 12:32:23 2013
*filter
:INPUT DROP [378149:75871322]
:FORWARD DROP [0:0]
:OUTPUT DROP [0:0]
:drop-lan - [0:0]
-A INPUT -s 192.168.1.12 -i eth0 -j ACCEPT
-A INPUT -m state --state INVALID -j DROP
-A INPUT -p tcp -m tcp --tcp-flags SYN,ACK SYN,ACK -m state --state NEW -j REJECT --reject-with tcp-reset
-A INPUT -p tcp -m tcp ! --tcp-flags FIN,SYN,RST,ACK SYN -m state --state NEW -j DROP
-A INPUT -s 127.0.0.0/255.0.0.0 -i eth0 -j DROP
-A INPUT -s 169.254.0.0/255.255.0.0 -i eth0 -j DROP
-A INPUT -i lo -j ACCEPT
-A INPUT -i pptp+ -j ACCEPT
-A INPUT -i tun+ -j ACCEPT
-A INPUT -i eth1 -j ACCEPT
-A INPUT -i eth0 -p icmp -m icmp --icmp-type 0 -j ACCEPT
-A INPUT -i eth0 -p icmp -m icmp --icmp-type 3 -j ACCEPT
-A INPUT -i eth0 -p icmp -m icmp --icmp-type 8 -j ACCEPT
-A INPUT -i eth0 -p icmp -m icmp --icmp-type 11 -j ACCEPT
-A INPUT -i eth0 -p udp -m udp --sport 67 --dport 68 -j ACCEPT
-A INPUT -i eth0 -p tcp -m tcp --sport 67 --dport 68 -j ACCEPT
-A INPUT -d 192.168.2.47 -p tcp -m tcp --dport 20 -j ACCEPT
-A INPUT -d 192.168.2.47 -p tcp -m tcp --dport 21 -j ACCEPT
-A INPUT -d 192.168.2.47 -p tcp -m tcp --dport 80 -j ACCEPT
-A INPUT -d 192.168.2.47 -p tcp -m tcp --dport 143 -j ACCEPT
-A INPUT -d 192.168.2.47 -p udp -m udp --dport 1194 -j ACCEPT
-A INPUT -d 192.168.2.47 -p tcp -m tcp --dport 22 -j ACCEPT
-A INPUT -d 192.168.2.47 -p tcp -m tcp --dport 81 -j ACCEPT
-A INPUT -d 192.168.2.47 -p tcp -m tcp --dport 83 -j ACCEPT
-A INPUT -d 192.168.2.47 -p tcp -m tcp --dport 25 -j ACCEPT
-A INPUT -d 192.168.2.47 -p tcp -m tcp --dport 1922 -j ACCEPT
-A INPUT -d 192.168.2.47 -p tcp -m tcp --dport 1875 -j ACCEPT
-A INPUT -i eth0 -p udp -m udp --dport 1024:65535 -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -i eth0 -p tcp -m tcp --dport 1024:65535 -m state --state RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -d 192.168.4.230 -o eth1 -p tcp -m tcp --dport 3389 -j ACCEPT
-A FORWARD -s 192.168.4.0/255.255.255.0 -p tcp -m tcp --dport 1214 -j DROP
-A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -i eth1 -j ACCEPT
-A FORWARD -i pptp+ -j ACCEPT
-A FORWARD -i tun+ -j ACCEPT
-A OUTPUT -d 192.168.1.12 -o eth0 -j ACCEPT
-A OUTPUT -o lo -j ACCEPT
-A OUTPUT -o pptp+ -j ACCEPT
-A OUTPUT -o tun+ -j ACCEPT
-A OUTPUT -o eth1 -j ACCEPT
-A OUTPUT -o eth0 -p icmp -j ACCEPT
-A OUTPUT -o eth0 -p udp -m udp --sport 68 --dport 67 -j ACCEPT
-A OUTPUT -o eth0 -p tcp -m tcp --sport 68 --dport 67 -j ACCEPT
-A OUTPUT -s 192.168.2.47 -o eth0 -p tcp -m tcp --sport 20 -j ACCEPT
-A OUTPUT -s 192.168.2.47 -o eth0 -p tcp -m tcp --sport 21 -j ACCEPT
-A OUTPUT -s 192.168.2.47 -o eth0 -p tcp -m tcp --sport 80 -j ACCEPT
-A OUTPUT -s 192.168.2.47 -o eth0 -p tcp -m tcp --sport 143 -j ACCEPT
-A OUTPUT -s 192.168.2.47 -o eth0 -p udp -m udp --sport 1194 -j ACCEPT
-A OUTPUT -s 192.168.2.47 -o eth0 -p tcp -m tcp --sport 22 -j ACCEPT
-A OUTPUT -s 192.168.2.47 -o eth0 -p tcp -m tcp --sport 81 -j ACCEPT
-A OUTPUT -s 192.168.2.47 -o eth0 -p tcp -m tcp --sport 83 -j ACCEPT
-A OUTPUT -s 192.168.2.47 -o eth0 -p tcp -m tcp --sport 25 -j ACCEPT
-A OUTPUT -s 192.168.2.47 -o eth0 -p tcp -m tcp --sport 1922 -j ACCEPT
-A OUTPUT -s 192.168.2.47 -o eth0 -p tcp -m tcp --sport 1875 -j ACCEPT
-A OUTPUT -o eth0 -j ACCEPT
-A drop-lan -j DROP
COMMIT


В чем моя ошибка?
Спасибо сказали:
Аватара пользователя
Hephaestus
Сообщения: 3728
Статус: Многоуважаемый джинн...
ОС: Slackware64-14.1/14.2

Re: помогите с iptables

Сообщение Hephaestus »

winhex писал(а):
18.12.2013 14:35
Пробую исключить один ip-адрес, добавляю такое правило:
А куда Вы его добавляете? В Вашем списке правил я его не увидел.

[NOSTRADAMUS MODE]
Небось, добавляете в конец, тогда у Вас сначала отрабатывает REDIRECT, и только потом следует Ваше новое правило, до которого очередь просто не доходит.
[/NOSTRADAMUS MODE]

Коротко: порядок правил имеет значение. Если пакет попадает под какое-то правило, то следующие ниже правила к нему уже не применяются.
Добавьте Ваше правило ДО редиректа.
Пускай скрипят мои конечности.
Я - повелитель бесконечности...
Мой блог
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 21498
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: помогите с iptables

Сообщение Bizdelnick »

winhex писал(а):
18.12.2013 14:35
Пробую исключить один ip-адрес, добавляю такое правило:

Код: Выделить всё

iptables -t nat -A PREROUTING -p tcp -s 192.168.4.20 --dport 80 -j ACCEPT

Не -A, а -I надо.
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали: