настройка NAT + BIND с форвардингом... [РЕШЕНО]
Благодаря joper, решил проблему форвардинга...
Если кому-то понадобится...
необходимые пакеты iptables, bind...
также необходимо настроить ядро для iptables...
Как настроить ядро можно прочитать тут http://www.gentoo.org/doc/ru/home-router-howto.xml
Сделал файл со скриптом ниже, установив его в загрузку
#!/bin/bash IPT='/sbin/iptables' ############################################### ############## POLICES ############################## # Drop all chains $IPT -F $IPT -X $IPT -t nat -F $IPT -t mangle -F # Defauil polices $IPT -P INPUT DROP $IPT -P OUTPUT ACCEPT $IPT -P FORWARD DROP ########## I/O polices############ # Allow trafic for lo interface $IPT -A INPUT -i lo -j ACCEPT $IPT -A OUTPUT -o lo -j ACCEPT #If interfase not lo, ban entering in list it adreses $IPT -A INPUT -s 127.0.0.1/255.0.0.0 ! -i lo -j DROP # Accept packets for established connections $IPT -A INPUT -p ALL -i eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT $IPT -A INPUT -p ALL -i eth1 -m state --state ESTABLISHED,RELATED -j ACCEPT # Accept outgoing "ping" $IPT -A INPUT -p icmp -m icmp --icmp-type echo-reply -j ACCEPT $IPT -A OUTPUT -p icmp -m icmp --icmp-type echo-request -j ACCEPT # Accept imcoming "ping" $IPT -A INPUT -p icmp -m icmp --icmp-type echo-request -j ACCEPT $IPT -A OUTPUT -p icmp -m icmp --icmp-type echo-reply -j ACCEPT # Accept ssh connections $IPT -A INPUT -p tcp -m tcp --dport 22 -j ACCEPT $IPT -A OUTPUT -p tcp -m tcp --sport 22 -j ACCEPT # Сквид сам дпишешь, взависимости от порта на котором он слушается ########################## NAT and FORWARD ############################ echo 1 > /proc/sys/net/ipv4/ip_forward # Outgoing connections from internal network 192.168.0.0/24 to internet $IPT -A POSTROUTING -t nat -s 192.168.0.0/255.255.224.0 -o eth0 -j SNAT --to-source ТВОЙ_ВНЕШНИЙ_IP # Accept forwarding from internal network $IPT -A FORWARD -s 192.168.0.0/255.255.224.0 -i eth1 -p all -j ACCEPT # Accept forwarding to us $IPT -A FORWARD -i eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT
добавляем скрипт в автозагрузку при старте сервера
rc-update add /путь/к/нашему/скрипту default
далее ковыряем named.conf
/etc/bind/named.conf - для тех кто ставил бинд из портежей...
предположим у нас
iternet DNS = 217.40.12.1 и 217.40.12.21
intranet DNS = 192.168.0.3
options { directory "/var/bind"; forward first; forwarders { 217.40.12.1; 217.40.12.21; }; // по умолчанию все запросы передаются // на ДНС сервер вашего провайдера }; //Стандартная локальная зона zone "0.168.192.in-addr.arpa" { type master; file "named.local"; }; // Эти права более приоритетны! zone "12.40.217.in-addr.arpa" in{ type forward; forward first; forwarders { 217.40.12.1; 217.40.12.21; }; // для этой зоны все запросы передаются // на ДНС сервера провайдера }; zone "domain.name.net" in{ type forward; forward first; forwarders {192.168.0.3;}; // для этой зоны все запросы передаются // на ДНС сервера локальной сети };
в коталоге /var/bind необходимо положить файл named.local (если у вас такового еще нет)
примерно такого содержания
$TTL 86400 @ IN SOA localhost. root.localhost. ( 1997022700 ; Serial 28800 ; Refresh 14400 ; Retry 3600000 ; Expire 86400 ) ; Minimum IN NS localhost. 1 IN PTR localhost.
правим теперь файл /etc/conf.d/net
добавляем/меняем следующее содержание
dns_servers_lo=( "127.0.0.1" )
перезагружаем интерфейс
/etc/init.d/net.lo restart
проверяем файл
nano /ets/resolf.conf
на наличие данного содержания
nameserver 127.0.0.1
пробуем пингануть ваш сервер нетбиос именем...
ping domain.name.net
пингует?! Значит пашет форвард...
дальше на клиентской манише в настройках пишем
ипишник клиентской машины, маску вашей сети, шлюз вашего сервера на котором все прописывали, и днс где настраивали намед... Должно все работать!
Спасибо еще рас joper!
- Для комментирования войдите или зарегистрируйтесь
ывывыв
Скинь вывод
И ещё кинь содержание своего /etc/conf.d/net
А это что ещё такое? Похоже на либо недописанное правило, либе неправильно перенесённое..
Мне кажется ты не очень разбираешься в айпитейблс... Вот изучи, мне оч помогло в своё время
http://www.opennet.ru/docs/RUS/iptables/
как просили
~ # route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
85.21.46.192 0.0.0.0 255.255.255.240 U 0 0 0 eth0
192.168.0.0 0.0.0.0 255.255.224.0 U 0 0 0 eth1
127.0.0.0 0.0.0.0 255.0.0.0 U 0 0 0 lo
0.0.0.0 85.21.46.193 0.0.0.0 UG 0 0 0 eth0
eth0 - internet
eth1 - intranet
содержимое /etc/cong.d/net
config_eth0=( "xx.xx.xx.xx netmask 255.255.255.240 brd xx.xx.xx.xx" )
routes_eth0=( "default gw шл.юз.провай.дера" )
config_eth1=( "192.168.0.9 netmask 255.255.224.0 brd 192.168.31.255" )
dns_servers_lo=( "127.0.0.1" )
да там в iptables я чето пропустил, недописал шлюз инета...
1
Меня смущает эта строчка... обычно маска для локалки берётся 255.255.255.0, ты уверен, что у тя указана именно нужная маска, как на локальных тачках?
А вообще если сеть правильно настроенна, и айпитейблс отключен всё должно пинговаться сразу.
Теперь по поводу скрипта для таблиц.
Попробуй следующий
После твоего
После твоего скрипта теперь вообще ни один интерфейс не пашет :)
Вернее что-то с named случилось, сервер не останавливается :)
:)Ладно.Давай
:)
Ладно.
Давай по порядку...
1. разрешаем весь траф для айпитейблс.
2. останавливаем пока намед, ибо пока с сетью не разобрались.
Меняем dns_servers_lo на
dns_servers_lo=( "195.14.50.1 195.14.50.21" )
И перезапускаем интерфейс, если, конечно я правильно понял, что 195.14.50.1 и 195.14.50.21 - твои днс сервера.
3. Провеяем правильность настройки сети, ответь мне - таки на вопрос по-поводу подсетей:
config_eth1=( "192.168.0.9 netmask 255.255.224.0 brd 192.168.31.255" )
Меня смущает эта строчка... обычно маска для локалки берётся 255.255.255.0. Ты уверен, что у тя указана именно нужная маска, как на локальных тачках?
4. Проверяем пингуется-ли иинет.
ЗЫ: Ответь плиз по пунктам прямо.
1 сделано 2
1 сделано
2 сделано
3 сделано
иерархию сети не я делал, это уже было доменя все сделано :)... Да маска правильная!
4 сделал пингуеца...
Вот :)
Отлично. 5.
Отлично.
5. Пингуются-ли компы из локалки(тока пингуй по айпишнегам, а не по нетбиос именам)?
6. Пингуется-ли сервак с локальных компов?
5. да 6. да =)
5. да
6. да
=) такое ощущение что ты решил помоч мне настроить форвардинг? :) А то уже с понедельника никак разобраца не могу, первый раз шлюз на генту подымаю... да и вообще на линуксе :)
Намёк понял
Намёк понял :)
Значить, всё, сетка работает, след шаг- это дать клиентским компам инет.
7. Пробуем запустить айпитаблесы. На 1-ой из клиентских тачек пропиши пока шлюз- новый сервак и днсы провайдера, чтобы тестить инет.
8. После запуска айпитейблсов- проверь, пингуется ли с сервака инет?
9. пингуется ли инет с клиентской тачки, на которой ты прописывал шлюз и днс?
сразу такой
сразу такой вопрос... Мне нужно допустим 5 машин из 10 разрешить НАТ...
Правильно будет если я пропишу так
Всмысле
Всмысле разрешить NAT?
Тебе надо чтобы в инет ходить могли?
мне надо чтобы
мне надо чтобы в инет ходить могли все, но только 5 из 10 напрямую, остальные все только через сквид :)
Ааааа, ясно. А
Ааааа, ясно. А сквид настроен и работает?
ага
да, настроен и работает! :)
Значит
Значит касательно сквида, и доступа для пользователей по айпишнекам, всё это рулится с помощью айпитейблс. Я мог бы тебе написать, но пора и самому поучится
прочти http://www.opennet.ru/docs/RUS/iptables/
Настоятельно рекомендую... Вопросов бует меньше намного...
Подсказка: тебе нужно запертить(достаточно его не разрешать, т.к. по-умолчанию он у тя запрещён) форвардинг для адресов которые не должны ходить в инте напрямую и сделать с !форвард портов(не путать с форвардом трафика общим)! с этих адресов с 80 на порт который слушает сквид.
Информация по свиду http://squid.opennet.ru/
Ещё подсказка: тебе нужен прозрачный прокси.
после запуска
после запуска скрипта выдает следующее
Bad argument `ACCEPT'
Try `iptables -h' or 'iptables --help' for more information.
Bad argument `ACCEPT'
Try `iptables -h' or 'iptables --help' for more information.
Ты запускал,
Ты запускал, скрипт какой? Который я тебе кинул в пункте 7 или поправил его как в своём передыдущем посте?
как в пункте 7 =)
как в пункте 7 =)
Тогда, попробуй
Тогда, попробуй все ACCEPT'ы заново переписать с клавиатуры, я мог случайно по-русски 1 из них написать, а судя по ругани написал даже 2 :)
непомагло :(
непомагло :(
А блин вроде
А блин вроде нашёл проблему.
$IPT -A INPUT -i $loface -j ACCEPT
$IPT -A OUTPUT -o $loface -j ACCEPT
Заменить на
$IPT -A INPUT -i lo -j ACCEPT
$IPT -A OUTPUT -o lo -j ACCEPT
отлично, все
отлично, все работает, в данный момент сижу через новый сервер...
на клиентской машине прописал шлюз новой тачки а днс оставил интернета...
Отлично. теперь
Отлично. теперь разбирайся в айпитейбс, сквиде и bind'e.
Поставь [РЕШЕНО] в теме.
спасибо
спасибо большое...