LinuxForum.Fans
Тема

iptables Настройка

Автор: u1684 8 сообщений 7238 просмотров
#12331

Вводная:
- подсеть клиентов с IP 10.0.120.0/24;
- файрвол с внутренним IP 10.0.120.12;
внешний IP 10.0.120.14;
- общий сервер с СУБД Firebird на IP 192.168.21.19, порт 3050.

Необходимо обеспечить возможность клиентов из подсети через файрвол подключаться к СУБД.

Пробовал чаерез redir. Но как-то он медленно на Debiane работает (коннект к БД занимает порядка 15мин(!)), хотя на Fedore (старый файрвол) менее 1сек.

Сейчас iptables-save возвращает:

text
*nat
:PREROUTING ACCEPT [] 
:POSTROUTING ASSEPT []
:OUTPUT ACCEPT []
-A PREROUTING -d 10.0.120.12/32 -p tcp -m tcp --dport 3050 -j DNAT --to-destination 192.168.21.19
-A POSTROUTING -d 192.168.21.19/32 -p tcp -m tcp --dpord 3050 -j SNAT --to-source 10.0.120.14
-A OUTPUT -d 10.0.120.12/32 -p tcp -m tcp --dport 3050 -j DNAT --to-destination 192.168.21.19
COMMIT
#Остальные ветки пустые

Подключение к БД не работает.
Что необходимо поправить в настройках iptables?
Версия Debian 5.03; iptables 1.4.2

#12340

вроде все так, только:
1. Почему у вас внутрений и внешний адрес в одной подсети?
2. Почему 10.0.120.12/32 ?
3/ во второй строке не тот Ip - вы же в первой строке подменили

text

INET_IP=10.0.120.14
USER_MASK=10.0.120.0/24
FB_IP=192.168.21.19
LAN_IP=192.168.21.XXX  # имхо надо менять

iptables -A INPUT -s ! $USER_MASK -p tcp --dport 3050 -j DROP iptables -t nat -A PREROUTING --dst $INET_IP -p tcp --dport 3050 -j DNAT --to-destination $FB_IP iptables -t nat -A POSTROUTING -p tcp --dst $FB_IP --dport 3050 -j SNAT --to-source $LAN_IP iptables -t nat -A OUTPUT --dst $INET_IP -p tcp --dport 3050 -j DNAT --to-destination $FB_IP

#12352

Чего-то я не врубаюсь в саму схему вашей сети.. внутренний IP сервера из подсети клиентов, и внешний тоже. Внешний адрес вроде ж должен быть в подсети сервера субд, если я не ошибаюсь. Тогда обычным роутингом (возможно с фильтрацией в таблице FORWARD) можно настроить доступ к серверу СУБД, а можно маскарадить, но тогда на субд все клиенты будут ити по одному IP, что немного не гибко.

#12608
voral написал:
вроде все так, только:
1. Почему у вас внутрений и внешний адрес в одной подсети?
2. Почему 10.0.120.12/32 ?
3/ во второй строке не тот Ip - вы же в первой строке подменили

1. Есть общая сеть предприятия, которая разбита на подсети. Не я занимался выделением IP и организацией структуры. В общем так повелось ...
2. О значении IP = 10.0.120.12, то именно на него через программу происходит коннект клиентов. При этом могут быть ещё и внешние клиенты, которые знают только о 10.0.120.14 и хотят тож подключиться к FB, но это уже потом нужно будет сделать...

3. Вторая строка это возможно:

cx написал:
-A POSTROUTING -d 192.168.21.19/32 -p tcp -m tcp --dpord 3050 -j SNAT --to-source 10.0.120.14

по аналогии с Вашей

voral написал:
iptables -t nat -A POSTROUTING -p tcp --dst $FB_IP --dport 3050 -j SNAT --to-source $LAN_IP

Но опять же это на потом...

Сейчас пишу единственное правило:

text
iptable -t nat -A PREROUTING --dst 10.0.120.12 -p tcp --dport 3050 -j DNAT --to-destination 192.168.21.19

При подключении к СУБД Firebird выдаёт^

Попытка установить соединение была безуспешной, т.к. от другого компьютера за требуемое время не получен нужный отклик...

Что ещё нужно настроить для получения ответов с СУБД?

с обеих IP 10.0.120.12 и 10.0.120.14 пинги идут на 192.168.21.19

#12613
cx написал:
Что ещё нужно настроить для получения ответов с СУБД?

http://www.opennet.ru/docs/RUS/iptables/ 6.5.2. Действие DNAT
Подробно расписана именно ваша ситуация


-d 10.0.120.12/32 - все пакеты которые направляются на IP удвлетворяющие этой маске
-d 10.0.120.14 - приходящие на адрес FW


Если у вас разбито на несколько подсетей. ФВ должен иметь адреса в каждой из них. И потом только дублируйте эти правила перекидывая пакеты из одной сети в сеть 192.168.21. точнее на сервер.

Т.е кто ломится на 120.12 должны и ответ получать ос этого адреса, те кто с 120.14 именно с этого адреса. Иначе пакеты будут отброшены.

По второй строке. У вас она не работает: вы в первой строке подменили адрес. И таких пакетов больше нет. В моем случае во второй строке фигурирует подставленный в первой строке адрес сервера фаерберда.

Ну и главное, ФВ должны иметь адрес и в подсети с сервером БД. (хотя возможно у вас это както маршрутизацией настроено)... но я бы переделал.

cx написал:

Сейчас пишу единственное правило:
text
iptable -t nat -A PREROUTING --dst 10.0.120.12 -p tcp --dport 3050 -j DNAT --to-destination 192.168.21.19

При подключении к СУБД Firebird выдаёт^

Попытка установить соединение была безуспешной, т.к. от другого компьютера за требуемое время не получен нужный отклик...

А с какого адреса вы пробуете подключаться и на какой адрес пытаетесь?

Кроме того полезно для осознания ситуации

text

iptable -A INPUT -p tcp --dport 3050 -j LOG --log-prefix "FBCON: "
iptable -A OUTPUT -p tcp --dport 3050 -j LOG --log-prefix "FBCON: "

попробуйте коннектится, а потом

text

dmesg | grep FBCON
#12620

Статью читал. Именно по неё и писал

cx написал:
Сейчас iptables-save возвращает:

Сейчас для меня пока не важна обработка запросов на 10.0.120.14

Прежде всего хочу отладить работу с 10.0.120.12

voral написал:
Ну и главное, ФВ должны иметь адрес и в подсети с сервером БД. (хотя возможно у вас это както маршрутизацией настроено)... но я бы переделал.

Да, маршрутизацией.

cx написал:
с обеих IP 10.0.120.12 и 10.0.120.14 пинги идут на 192.168.21.19

Проблема в том, что клиент не может получить ответ от сервера, т.е. ответ отбрасывается и это при наличаи всего одного правила

iptable -t nat -A PREROUTING --dst 10.0.120.12 -p tcp --dport 3050 -j DNAT --to-destination 192.168.21.19

При этом если использовать redir соединение работает (только медленно порядка 15-20сек)

Пытаюсь с 10.0.120.20 yf 10.0.120.12
Сейчас попробую:

voral написал:
Кроме того полезно для осознания ситуации
iptable -A INPUT -p tcp --dport 3050 -j LOG --log-prefix "FBCON: "
iptable -A OUTPUT -p tcp --dport 3050 -j LOG --log-prefix "FBCON: "

попробуйте коннектится, а потом
dmesg | grep FBCON

Отредактировано (Сегодня 10:02:29)
cx написал:
dmesg | grep FBCON

Не вернул результата

#12628
cx написал:

Проблема в том, что клиент не может получить ответ от сервера, т.е. ответ отбрасывается и это при наличаи всего одного правила
iptable -t nat -A PREROUTING --dst 10.0.120.12 -p tcp --dport 3050 -j DNAT --to-destination 192.168.21.19

Хм. Возможно тогда дело в настройке в маршрутах на сервере БД. У вас на нем есть фаервол. Посмотрите приходят ли туда пакеты?
Могу предположить, что пакеты туда приходят, но обратно они проходет не через фаервол.


Какой гейтвей указан на серере БД?
Какие маршруты прописаныы на фаерволе и на серевере БД?

вывод dmesg | grep nf_

#12633

К серверу БД Firebird я отношения не имею, отдел другой.
Может это и не сервер а ФВ, х.з. Об этом можно узнать теперь только в понедельник - уже конец рабочей недели тамошних админов :D.
Спасибо, voral за помощь!
Надеюсь в понедельник тема прояснится.

Проблема решилась:

text

INET_IP=10.0.120.12
FB_IP=192.168.21.19
iptables -t nat -F # очитка nat
iptables -F # очистка фильтров
iptables -t nat -A PREROUTING -p tcp -d $INET_IP --dport -j DNAT --to-destination $FB_IP
iptables -t nat -A POSTROUTING -p tcp --dst $FB_IP --dport 3050 -j SNAT --to-source $INET_IP

#Самое главное, что мне нужно было сделать

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

Войдите или зарегистрируйтесь, чтобы ответить.