LINUX.ORG.RU
ФорумAdmin

Вопрос по iptableds


0

1

Нужно прокинуть хост мимо прокси делаю

#!/bin/bash
#этот модуль позволяет работать с ftp в пассивном режиме
modprobe nf_conntrack_ftp
#очистка цепочек
iptables -F INPUT
iptables -F FORWARD
iptables -F OUTPUT
iptables -t nat -F PREROUTING
iptables -t nat -F POSTROUTING
iptables -t mangle -F
#Запрет всего
iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
iptables -P FORWARD DROP

#включение логов iptables
#iptables -I OUTPUT -o eth0 -j LOG
#префиксы сообщений iptables
#iptables -A INPUT -p tcp  -j LOG --log-prefix "input tcp"
#iptables -A INPUT -p icmp -j LOG --log-prefix "input icmp"
#логи входящих tcp udp icmp
#iptables -A INPUT -j LOG --log-level 4


#разрешаем все входящие пакеты на интрефейс замыкания на себя иначе ничего не работает 
iptables -A INPUT -i lo -j ACCEPT
#РАЗРЕШЕНЫ ТОЛЬКО ВХОДЯЩИЕ СОЗДАННЫЕ НАШИМИ ИСХОДЯЩИМИ
iptables -A INPUT -p TCP -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -p UDP -m state --state ESTABLISHED,RELATED -j ACCEPT
#Правила повышающие безопасность
#Блочим входящие tcp соединения не syn пакетом (либо ошибка либо атака)
iptables -I INPUT -m conntrack --ctstate NEW -p tcp ! --syn -j DROP
iptables -I INPUT -m conntrack --ctstate NEW,INVALID -p tcp --tcp-flags SYN,ACK SYN,ACK -j REJECT
#разрешаем любые входящие и исходящие по icmp
iptables -A INPUT -p icmp -j ACCEPT
iptables -A OUTPUT -p icmp -j ACCEPT

#разрешаем доступ из сети на порты 21(ftp),22(ssh),53(dns),9999(внутрисетевой репозитраий),110 и 143 - pop3 smtp, 995 и 993 - pops smtps
iptables -A INPUT -i eth0 -p tcp -m multiport --dport 22,80,3128,20,110,25,21 -j ACCEPT
#Разрешаем доступ из нета на порты 25,465,993,995 25 почта ,остальные для почт клиентов
#iptables -A INPUT -i ppp0 -p tcp -m multiport --dport 25,465,995,993 -j ACCEPT
#заварачиваем веб трафик на проксик
iptables -t nat -A PREROUTING -s 192.168.3.0/24 -i eth1 -p tcp -m multiport --dport 80,8080 -j REDIRECT --to-ports 3128

#Включаем Nat
iptables -A FORWARD -s 192.168.3.0/24 -j ACCEPT
iptables -A FORWARD -d 192.168.3.0/24 -j ACCEPT

#Банк клиенты , почтовые клиенты и прочаее
#serega pilemov
iptables -t nat -A POSTROUTING -s 192.168.3.127 -d 0.0.0.0/0  -p tcp --dport 25 -j MASQUERADE
iptables -t nat -A POSTROUTING -s 192.168.3.127 -d 0.0.0.0/0  -p tcp --dport 110 -j MASQUERADE
iptables -t nat -A POSTROUTING -s 192.168.3.127 -d 0.0.0.0/0  -p tcp --dport 20 -j MASQUERADE
iptables -t nat -A POSTROUTING -s 192.168.3.127 -d 0.0.0.0/0  -p tcp --dport 21 -j MASQUERADE
iptables -t nat -A POSTROUTING -s 192.168.3.127 -d 93.153.157.82  -p tcp --dport 65229  -j MASQUERADE
iptables -t nat -A POSTROUTING -s 192.168.3.127 -d 193.161.85.43 -p tcp --dport 4003  -j MASQUERADE
iptables -t nat -A POSTROUTING -s 192.168.3.127 -d 62.75.180.22 -p tcp --dport 4003  -j MASQUERADE


На хосте ip машины с проксиком как шлюз , пытаюсь прицепится telnet на порт с хоста который прокинул - глухо.Подскажите где туплю ?

★★

Последнее исправление: drac753 (всего исправлений: 1)

не понял сути задачи... хост надо прокинуть куда? какой? доступ в банк?

iptables -t nat -A POSTROUTING -s адрес.машин.с.которой.лезем -d сервер.куда.лезем -p tcp --dport диапозон портов  -j MASQUERADE
iptables -t nat -A PREROUTING -s сервер.куда.лезем -d адрес.машин.с.которой.лезем -p tcp --dport диапозон портов  -j MASQUERADE

Вроде так раньше делал, нынче на фряхе сижу, дебиана нету под рукой)

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

хост из локалки 192.168.3.127 нет не банк клиент просто чел пользуется внешним почтовым серваком

Нат правильно врубил а то мало ли ?

#Включаем Nat
iptables -A FORWARD -s 192.168.3.0/24 -j ACCEPT
iptables -A FORWARD -d 192.168.3.0/24 -j ACCEPT

drac753 ★★
() автор топика
Последнее исправление: drac753 (всего исправлений: 1)
Ответ на: комментарий от drac753

Сделай

telnet 193.161.85.43 4003
с хоста, IP которого 192.168.3.127 и смотри изменяется ли счетчик пойманных пакетов в iptables для этого правила:
iptables -t nat -nvL
Если счетчик не изменяется, можно проверить доходят ли пакеты с 192.168.3.127 до файрволла с помощью tcpdump:
tcpdump -n -i интерфейс_смотрящий_в_локалку host 192.168.3.127

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

ок спасибо завтра попробу щас уже не на работе

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

кстати браузер в нет выходит с этого хоста без проблем

drac753 ★★
() автор топика
Последнее исправление: drac753 (всего исправлений: 1)

На хосте ip машины с проксиком как шлюз , пытаюсь прицепится telnet на порт с хоста который прокинул - глухо.

Не понял, что именно вы пытались сделать.

Нат правильно врубил а то мало ли ?

NAT — это замена адреса. Она делается правилами SNAT/DNAT/MASQRADE. Так то, вроде, у вас всё должно работать, но, как-то правила выглядят криво. Принято трафик ограничивать в FORWARD, а NAT/MASQUERADE делать уж всему исходящему (прошедшему через FORWARD) трафику. А то сейчас получается, что если 192.168.3.127 пойдёт куда-нибудь в инет на, допустим, 22-ой порт, то в сеть провайдера и уйдёт пакет с src-адресом 192.168.3.127.

И, как-то не логично выглядит "-m state --state ESTABLISHED,RELATED" отдельно для tcp и отдельно для udp. Пусть уж будет одним правилом для всех протоколов, ИМХО.

А вобще у вас странная конфигурация. REDIRECT (видимо) для прозрачного прокси вы делаете с интерфейса eth1, но порты 22, 80 и т.д. вы открыли для eth0, а для eth1 — нет (или я не вижу какое-то правило).

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

По поводу NAT скорее всего проблема в неподключенном модуле iptable_nat !Вообще какие модули нужны для работы NAT ?

Задача - прокинуть хост c IP 192.168.3.127 минуя проксик в нет при обращении с него на 25,20,21,110 порты

#serega pilemov
iptables -t nat -A POSTROUTING -s 192.168.3.127 -d 0.0.0.0/0  -p tcp --dport 25 -j MASQUERADE
iptables -t nat -A POSTROUTING -s 192.168.3.127 -d 0.0.0.0/0  -p tcp --dport 110 -j MASQUERADE
iptables -t nat -A POSTROUTING -s 192.168.3.127 -d 0.0.0.0/0  -p tcp --dport 20 -j MASQUERADE
iptables -t nat -A POSTROUTING -s 192.168.3.127 -d 0.0.0.0/0  -p tcp --dport 21 -j MASQUERADE

По поводу

#РАЗРЕШЕНЫ ТОЛЬКО ВХОДЯЩИЕ СОЗДАННЫЕ НАШИМИ ИСХОДЯЩИМИ
iptables -A INPUT -p TCP -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -p UDP -m state --state ESTABLISHED,RELATED -j ACCEPT
Можете привести пример правила для всех протоколов ?

По поводу REDIRECT - скорее всего я немного запутался (у меня не прозрачный шлюз у меня пркоси - squid+sasms ) , задумка была такая - поскольку открыт 80 порт для лан открыт вдруг ктото будет на него стучаться тогда мы его шлем на проксик.

К eth1 уменя подключен adsl модем , а так как с наружи мне ни для чего доступа давать не надо я на этой сетевухе ничего и не открывал.

drac753 ★★
() автор топика
Последнее исправление: drac753 (всего исправлений: 2)
Ответ на: комментарий от drac753

вдруг ктото будет на него стучаться тогда мы его шлем на проксик

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

Нужно прокинуть хост мимо прокси делаю

что-что нужно?

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

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

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

Вы уверены насчёт модуля? Посмотрите вывод ″lsmod″. Нужные для nat модули у вас должны были загрузиться при первом создаваемом правилие с целью ″-j MASQRADE″. Я все модули для nat не перечислю, должны быть conntrack, iptable_nat. Ещё название модулей меняется от версии ядра и иногда нужно загружать дополнительные модули для nat'а отдельных протоколов (например, ftp в активном режиме), но, повторю ещё раз, команда ″iptables″ сама загружает базовые нужны для NAT модули. Другое дело, если у вас ядро самосборное и вы не скомпилировали эти модули.

Разрешение всех протоколов:

iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

К eth1 уменя подключен adsl модем

Тогда почему ″-s 192.168.3.0/24 -i eth1″, если локалка подключена к eth0?

прокинуть хост c IP 192.168.3.127 минуя проксик в нет

У вас формулировка задачи немного неправильная. Точнее, по вашим правилам на squid у вас заворачиваются только порты 80 и 8080, а весь остальной трафик проходит в Инет, так как разрешён в FORWARD. То, что вы не всему уходящему в инет трафику делаете nat — это другой разговор, но так, у вас всё уходит в Инет.

По хорошему, вам нужно сделать как-то так:

-P FORWARD DROP
iptables -A FORWARD -d 192.168.3.0/24 -j ACCEPT
iptables -A FORWARD -s 192.168.3.127 -o eth1 -p tcp -m multiport --dport 25,20,21,110 -j ACCEPT
iptables -A FORWARD -s 192.168.3.127 -d 93.153.157.82  -p tcp --dport 65229  -j ACCEPT
iptables -A FORWARD -s 192.168.3.127 -d 193.161.85.43 -p tcp --dport 4003  -j ACCEPT
iptables -A FORWARD -s 192.168.3.127 -d 62.75.180.22 -p tcp --dport 4003 -j ACCEPT

iptables -t nat -I POSTROUTING -s 192.168.3.0/24 -o eth1 -j MASQUERADE
то есть куча разрешающих правил в FORWARD (с политикой DROP) и одно в POSTROUTING.

А вобще, у вас прокси то работает? А то я не понял, что вы делаете с https-трафиком.

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

eth0- локальная сеть

eth1- сетевуха к которой подключён модем

ppp0 - инет

Новый скрипт фаервола

#!/bin/bash

#этот модуль позволяет работать с ftp в пассивном режиме
modprobe ip_tables
modprobe ip_conntrack
modprobe ip_conntrack_ftp
modprobe ip_conntrack_irc
modprobe iptable_nat
modprobe ip_nat_ftp
modprobe ip_nat_irc
#очистка цепочек
iptables -F INPUT
iptables -F FORWARD
iptables -F OUTPUT
iptables -t nat -F PREROUTING
iptables -t nat -F POSTROUTING
iptables -t mangle -F
#Запрет всего
iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
iptables -P FORWARD DROP

#включение логов iptables
#iptables -I OUTPUT -o eth0 -j LOG
#префиксы сообщений iptables
#iptables -A INPUT -p tcp  -j LOG --log-prefix "input tcp"
#iptables -A INPUT -p icmp -j LOG --log-prefix "input icmp"
#логи входящих tcp udp icmp
#iptables -A INPUT -j LOG --log-level 4


#разрешаем все входящие пакеты на интрефейс замыкания на себя иначе ничего не работает 
iptables -A INPUT -i lo -j ACCEPT
#РАЗРЕШЕНЫ ТОЛЬКО ВХОДЯЩИЕ СОЗДАННЫЕ НАШИМИ ИСХОДЯЩИМИ
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
#Правила повышающие безопасность
#Блочим входящие tcp соединения не syn пакетом (либо ошибка либо атака)
iptables -I INPUT -m conntrack --ctstate NEW -p tcp ! --syn -j DROP
iptables -I INPUT -m conntrack --ctstate NEW,INVALID -p tcp --tcp-flags SYN,ACK SYN,ACK -j REJECT
#разрешаем любые входящие и исходящие по icmp
iptables -A INPUT -p icmp -j ACCEPT
iptables -A OUTPUT -p icmp -j ACCEPT

#разрешаем доступ из сети на порты 21(ftp),22(ssh),53(dns),9999(внутрисетевой репозитраий),110 и 143 - pop3 smtp, 995 и 993 - pops smtps
iptables -A INPUT -i eth0 -p tcp -m multiport --dport 22,3128,80 -j ACCEPT

#Форвардим трафик между eth0 и ppp0
iptables -A FORWARD -i ppp0 -o eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -i eth0 -o ppp0 -j ACCEPT


#Прокидываем ip 192.168.4.53 в нет напрямую минуя проксик
iptables -t nat -A POSTROUTING -s 192.168.4.53 -d 0.0.0.0/0  -j MASQUERADE

По Nat заработало после следующего

iptables -A FORWARD -i ppp0 -o eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -i eth0 -o ppp0 -j ACCEPT

по поводу


У вас формулировка задачи немного неправильная. Точнее, по вашим правилам на squid у вас заворачиваются только порты 80 и 8080, а весь остальной трафик проходит в Инет, так как разрешён в FORWARD. То, что вы не всему уходящему в инет трафику делаете nat — это другой разговор, но так, у вас всё уходит в Инет.

По хорошему, вам нужно сделать как-то так: 
-P FORWARD DROP
iptables -A FORWARD -d 192.168.3.0/24 -j ACCEPT
iptables -A FORWARD -s 192.168.3.127 -o eth1 -p tcp -m multiport --dport 25,20,21,110 -j ACCEPT
iptables -A FORWARD -s 192.168.3.127 -d 93.153.157.82  -p tcp --dport 65229  -j ACCEPT
iptables -A FORWARD -s 192.168.3.127 -d 193.161.85.43 -p tcp --dport 4003  -j ACCEPT
iptables -A FORWARD -s 192.168.3.127 -d 62.75.180.22 -p tcp --dport 4003 -j ACCEPT

iptables -t nat -I POSTROUTING -s 192.168.3.0/24 -o eth1 -j MASQUERADE
 то есть куча разрешающих правил в FORWARD (с политикой DROP) и одно в POSTROUTING.


А вобще, у вас прокси то работает? А то я не понял, что вы делаете с https-трафиком.

Получается что если мне нужно будет прокидывать не один ip к примеру с 10 на разные порты мне нужно будет для каждого описывать кучу правил в forward + по 1 в POSTROUTING ? Может звучит по нубски но для сокращения писанины заворачивать весь трафик с eth0 на squid ? к примеру так

iptables -t nat -A PREROUTING -s 192.168.3.0/24 -i eth0  -j REDIRECT --to-ports 3128

А для нужных ip делать правило в POSTROUTING ?

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

Https на проксике работает, конектился к ящику gmail.com. Возникла еще одна проблема - к примеру хочу пробросить ip из сети наружу по полному доменному имени (к примеру mail.ru) Делаю

iptables -t nat -A POSTROUTING -s 192.168.4.53 -d www.mail.ru  -j MASQUERADE

В настройках сети тачки с которой пытаюсь делать telnet указан только внутри-сетевой dns не имеющий контактов с нетом , соответственно telnet не проходит. Ка быть в этой ситуации ?

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

По поводу ″--state ESTABLISHED,RELATED -j ACCEPT″ в FORWARD не возражаю. А вот по поводу ″-i eth0 -o ppp0 -j ACCEPT″ повторяю ещё раз, что не нужно выпускать все пакеты из локальной сети в Инет. Раз у вас инет на ppp0, значит в том моём правиле нужно было заменить ″-o eth1″ на ″-o ppp0″.

Получается что если мне нужно будет прокидывать не один ip к примеру с 10 на разные порты мне нужно будет для каждого описывать кучу правил в forward + по 1 в POSTROUTING ?

В POSTROUTING одно правило, только одно. Не нужно там делать кучу правил, весь уходящий в Инет трафик маскарадить (или SNAT'ить) и всё:

iptables -I POSTROUTING -o ppp0 -j MASQUERADE

Чтобы было меньше писанины, нужно использовать цепочки. Допустим создаём цепочку, в которой разрешаем нужные порты/протоколы. А в FORWARD пакеты с нужных ip-адресов отправляем в эту цепочку. Получим, что заданных ip-адресов на заданные порты.

Аналогично, содаём цепочку с адресами банковских серверов и с пакеты с нужны ip-адресов локальной сети отправляем в эту цепочку.

По поводу заворачивания в squid и POSTROUTING я нифига не понял, squid ведь это только http-прокси, как в него все порты завернуть, если там другой протокол?

P.S. Сначала у вас делался NAT для 192.168.3.127, теперь для 192.168.4.53. Причём у вас сейчас вобще нет PREROUTING с прозрачным прокси. Как бы определитесь.

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

″-d http://www.mail.ru

Надеюсь, вы понимаете, что это значит? А именно, что на момент выполнения правила будут определены ip-адреса, соответсвующие A-записи в DNS и подставлены в правило. И в дальнейшем эти адреса будут меняться только при пересоздании этого правила. И, допустим http://www.mail.ru и mail.ru лично у меня резолвятся в разные адреса.

Ка быть в этой ситуации ?

Прописать на тачке нормальный DNS? Сделать для mail.ru записи в /etc/hosts или %SystemRoot%\System32\Drivers\Etc\hosts ? Ходить через прокси в нормальном режиме (указав его явно в настройках браузера)? Особо вариантов то нет, все одно поддержку libastral в telnet не скоро запилят :-)

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

делаю следующее

#!/bin/bash

#этот модуль позволяет работать с ftp в пассивном режиме
modprobe ip_tables
modprobe ip_conntrack
modprobe ip_conntrack_ftp
modprobe ip_conntrack_irc
modprobe iptable_nat
modprobe ip_nat_ftp
modprobe ip_nat_irc
#очистка цепочек
iptables -F INPUT
iptables -F FORWARD
iptables -F OUTPUT
iptables -t nat -F PREROUTING
iptables -t nat -F POSTROUTING
iptables -t mangle -F
#Запрет всего
iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
iptables -P FORWARD DROP

#разрешаем все входящие пакеты на интрефейс замыкания на себя иначе ничего не работает 
iptables -A INPUT -i lo -j ACCEPT

#РАЗРЕШЕНЫ ТОЛЬКО ВХОДЯЩИЕ СОЗДАННЫЕ НАШИМИ ИСХОДЯЩИМИ
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT


#Правила повышающие безопасность
#Блочим входящие tcp соединения не syn пакетом (либо ошибка либо атака)
iptables -I INPUT -m conntrack --ctstate NEW -p tcp ! --syn -j DROP
iptables -I INPUT -m conntrack --ctstate NEW,INVALID -p tcp --tcp-flags SYN,ACK SYN,ACK -j REJECT

#разрешаем любые входящие и исходящие по icmp
iptables -A INPUT -p icmp -j ACCEPT
iptables -A OUTPUT -p icmp -j ACCEPT

#разрешаем доступ из сети на порты 21(ftp),22(ssh),53(dns),9999(внутрисетевой репозитраий),110 и 143 - pop3 smtp, 995 и 993 - pops smtps
iptables -A INPUT -i eth0 -p tcp -m multiport --dport 22,80,3128 -j ACCEPT

iptables -A FORWARD -d 192.168.3.0/24 -j ACCEPT
iptables -A FORWARD -i ppp0 -o eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -s 192.168.4.53 -o ppp0 -p tcp -m multiport --dport 4003 -j ACCEPT

iptables -t nat -I POSTROUTING -s 192.168.4.0/24 -o ppp0 -j MASQUERADE

То есть разрешаем трафик с 192.168.4.53 наружу на любой ip на порт 4003 Делаю с вин тачки telnet telnet 193.161.85.43 4003 телнет не проходит может что где упустил ?

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

Вроде всё на месте. Попробуйте посмотреть вывод:

iptables -L -n -v -x

Там будут видны счётчики правил. Посмотрите, что у правила ″FORWARD -s 192.168.4.53 -o ppp0 -p tcp″ они не нулевые. Если они нулевые, возможно что не включён forward в ядре, или винда чудит, или у вас ppp-интерфейс при переподключении стал ppp1.

Если счётчики не нулевые, попробуйте добавить правло:

iptables -I FORWARD -d 192.168.4.53 -p tcp --sport 4003 -j ACCEPT

и посмотреть что будет и будут ли у этого правила меняться счётчики при выполнении ″telnet″.

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

к вопросу по DNS имее такие правила для этого ip (Банк клиенты налоговая и т.п.)

#Марина Лотос

iptables -A FORWARD -s 192.168.3.*1 -d onp-r61.nalog.ru -o ppp0 -j ACCEPT
iptables -A FORWARD -s 192.168.3.*1 -d sos40.keydisk.ru -o ppp0 -j ACCEPT
iptables -A FORWARD -s 192.168.3.*1 -d rostov.pfr190p.keydisk.ru -o ppp0 -j ACCEPT
iptables -A FORWARD -s 192.168.3.*1 -d 94.79.10.44 -o ppp0 -j ACCEPT
iptables -A FORWARD -s 192.168.3.*1 -d iit.keydisk.ru -o ppp0 -j ACCEPT
iptables -A FORWARD -s 192.168.3.*1 -d gpr.keydisk.ru -o ppp0 -j ACCEPT
iptables -A FORWARD -s 192.168.3.*1 -d edi.iitrust.ru -o ppp0 -j ACCEPT

Поскольку 192.168.3.*1 ходит к этим fqdn мимо прокси , соответсвтвенно не выполняется dns запросов через него в итоге 192.168.3.*1 не подключается. Вижу 3 вариата

1) Прописать в настройках сети 192.168.3.*1 дополнительный нетовский dns (8.8.8.8) и дать доступ к нему.

2) Установить dns резолвер к примеру dnsmasq и заюзать его как дополнительный dns, в дополнение к виндовому.Использовать dnsmasq разделяя запросы между интернетовскими dns и виндовым dns не хочу (Как-то юзал периодически лезли глюки).

Есть еще вариант задать для виндового сервера dnsmasq как основной и не добавлять его клиенту в настройки сети , но я не хочу чтобы вин сервак имел доступ нет даже на уровне dns запросов.

3) Поставить bind и использовать его как дополнительный dns сервер в настройках подключения клиента.(Также как и dnsmasq)

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

Настройки dnsmasq.conf

filterwin2k
interface=eth0
no-dhcp-interface=eth0
log-facility=/var/log/dnsmasq.log

Вроде с этим dnsmasq работает нормально , но может что упустил ?

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

Собственный рекурсивный кеширующий DNS-сервер поднять можно (не обязательно bind). Тогда ваш прокси-сервер не будет завязан на DNS-провайдера.

Какие настройки у bind'а в Дебиане «из коробки» я не помню. В RHEL, ЕМНИП, после установки bind у него пустой файл конфигурации. Но ничего сложного там нет.

Как я понял, все три варианта основаны на том, что на клиентской машине с Windows основным DNS-сервером прописывается виндовый сервер, а дополнительным DNS-сервером прописывается какой-то DNS-сервер, смотрящий в Инет. Тут я не знаю, насколько рабочая и надёжная эта схема. Я не знаю, всегда ли Винда сначала спрашивает основной, а потом дополнительный DNS-сервера и не возникнет ли ситуации, когда винда захочет работать только с дополнительным DNS, перестанет опрашиват основной DNS и потеряет «сетевое окружение» и пр.

Я видел несколько контор, у которых Виндовый DNS ходит в инет и не вижу в этом ничего страшного. У кого-то с реальным ip, у других через NAT, у третьих через bind. И этот вариант, когда в настройках клиента указан один, только виндовый DNS мне нравится больше. Другое дело, что в bind можно разрешить рекурсивные запросы только для определённых ip-адресов, чтобы клиентские компы, которым не разрешён выход в инет, не генерили лишний траффик в виде бессмысленных dns-запросов. Хотя подобным никто заморачиватся не хочет.

но может что упустил

Так как вашие правила iptables содержат dns-имена, они могут загружатся только после инициализации сетевых интерфейсов и появления устойчивого соединения с Инетом. Возможно, что эти правила (именно содержащие DNS-имена) лучше вынести в отдельную цепочку (цепочки) и заполнять эти цепочки в скрипте /etc/ppp/ip-up или контролировать по cron'у что в этих цепочках есть правила.

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

Тогда вопрос по варианту 1 dns в настройках сети , какие вообще должны быть настройки у bind для этой ситуации нужно ли создавать зоны и если да то с какими записями? Еще вопрос нужно ли как-то фильтровать или защищать трафик идущий с интернет к вин dns через bind ?

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

Тогда вопрос по варианту 1

У вас вариант 1 был «Прописать в настройках сети 192.168.3.*1 дополнительный нетовский dns (8.8.8.8)», bind'а там вобще не было.

Если вопрос о настройках bind, чтобы он просто был рекурсивным dns-сервером, то вот пример конфига: http://www.zytrax.com/books/dns/ch6/#caching

Фактически, всё что нужно это определить корневую зону с типом ″hint″. Зоны для 127.0.0.1 (прямая и обратная) тоже нужны. Хотя это уже не рекурсия, но неправильно отправлять во вне запросы о localhost. Правила логгирования по вкусу/по потребности. Можно ещё добавить сервера провайдера в список forwarders.

С DNS-ом в винде, более менее, во всяком случае было пару лет. Поэтому, ИМХО, пусть отправляет любые DNS-запросы. Тем более, если запросы идут через bind, то ответы, прошедщие через bind будут заведомо корректы (в плане контрольной суммы и внутренней структуры).

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

Огромнейшее спасибо за оказанную помощь!

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