URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID1
Нить номер: 27748
[ Назад ]

Исходное сообщение
"IPtables SNAT DNAT please help!!!"

Отправлено Camb , 18-Мрт-03 16:35 
есть gate.domain.ru, две карты, одна вовне (подняты 81.30.201.6 + 81.30.201.5)
держит зону:
gate.domain.ru. in a 81.30.201.6
www.domain.ru.  in a 81.30.201.5
вторая карта (192.168.0.1) смотрит внутрь сети..

есть внутри веб-сервак (192.168.0.200 def. gateway: 192.168.0.1)

$IPTABLES -t nat -A PREROUTING -p TCP -i $INET_IFACE -d $HTTP_IP \
--dport 80 -j DNAT --to-destination $LAN_HTTP_IP:80

это кидает внешних людей внутрь сетки на web-сервак

а как быть с локальными пользователями? (у них gateway тоже 192.168.0.1)

они набирают www.domain.ru -> resolve: 81,30,201,5 (порт есно 80)
а дальше как должен отработать iptables этот запрос пришедший на LAN_IFACE?

Спасибо!!! Читал про iptables... нормально читал.. help..


Содержание

Сообщения в этом обсуждении
"IPtables SNAT DNAT please help!!!"
Отправлено Sampan , 18-Мрт-03 17:31 
>а дальше как должен отработать iptables этот запрос пришедший на LAN_IFACE?

Нормально должен отработать. Но некрасиво это :-\

Весь вопрос: где лежит зона domain.ru физически?

Если у тебя BIND 9, делишь (split) зону на внешнюю и внутреннюю и для внутренней прописываешь
www.domain.ru.  in a 192.168.0.200
Для внешних все останется по-прежнему, зато локальные юзеры будут прямо на сервак ходить.

Ежели зона хостится где-то у провайдера, можно на шлюзе поставить dns forwarder (типа dnsmasq), в файле /etc/hosts прописать
192.168.0.200   www.domain.ru
и юзерам раздать через dhcp адрес nameserver - 192.168.0.1
Результат будет тот-же



"IPtables SNAT DNAT please help!!!"
Отправлено Camb , 18-Мрт-03 18:42 
Да, bin9 ver. 9.2.1-2 debian

э.. split.. примерно как это сделать?

спасибо!!!!


"IPtables SNAT DNAT please help!!!"
Отправлено Sampan , 19-Мрт-03 00:03 
>Да, bin9 ver. 9.2.1-2 debian
>
>э.. split.. примерно как это сделать?

Примерно так:

named.conf (не все, только по теме)

acl internal    { 172.28.0.0/16; };  # Это у меня внутри
acl external    { any; };
........
options {
    allow-query { any; };
    allow-recursion { "internal";};
.....
};

view "int-zone" {
    match-clients { "internal"; };

    zone "domain.ru" {
        type master;
        file "int.domain.ru";
        notify no;
    };
......
};

view    "ext-zone"    {
    match-clients    { "external"; };

    zone "domain.ru" {
        type master
                        file "ext.domain.ru";
        notify yes;
    };
.....
};

В файле ext.domain.ru описана зона как есть сейчас, т.е. для всего интернета
А в файле int.domain.ru поставь
www.domain.ru.  IN  A    <внутренний_IP>
Если еще есть серверы в domain.ru для внутренних пользователей, их нужно так-же описать в int.domain.ru (реальные или фиктивные адреса)

Аналогично обратные зоны

>спасибо!!!!
Пожалуйста


"Sampan, громадное тебе спасибо!!! "
Отправлено Camb , 19-Мрт-03 06:53 

это просто потрясающе!!! буду пробовать...

Спасибо!

слов нет.. так круто! )))


"IPtables SNAT DNAT please help!!!"
Отправлено Camb , 19-Мрт-03 19:11 
ты знаешь, скорее всего в каждый из "view" надо засунуть зоны (которые идет стандартно) zone "." (рутовые), потом 127.0.0.1 ну и т.п. так?

а то почему-то сам сервер самому себе перестал резолвить...

(при этом внешние и внутренные получает верный резолв...)

Спасибо.


"IPtables SNAT DNAT please help!!!"
Отправлено Sampan , 19-Мрт-03 21:28 
>ты знаешь, скорее всего в каждый из "view" надо засунуть зоны (которые
>идет стандартно) zone "." (рутовые), потом 127.0.0.1 ну и т.п. так?
>
Стандартные зоны достаточно запихнуть в "ext-zone"
По крайней мере, у меня в "int-zone" нету "." и "127...."

>
>а то почему-то сам сервер самому себе перестал резолвить...
>
Вероятно, по причине того, что в int.domain.ru прописано NS на наружний адрес, а не на себя "внутреннего"

Еще можно добавить
view    "ext-zones"    {
match-clients    { "external"; };
allow-query    { localhost; };              #  вот эту запись


"Еще маленько осталось.... ну !!!"
Отправлено Camb , 20-Мрт-03 08:07 
блин.. не получается ну никак...

// --- named.conf ---------

options {
        directory "/var/cache/bind";

        // - by aza -
        forwarders {
            213.24.96.233;
            213.24.96.234;
            };
        allow-query { any; };
        allow-recursion { "internal-ip"; };
        // - by aza end -

        auth-nxdomain no;    # conform to RFC1035

};


// add entries for other zones below here

// - by aza -

acl internal-ip { 172.16.0.0/16; };
acl external-ip { any; };

// - for *** internal *** users -
view "int-zone" {
    match-clients { "internal-ip"; };

    zone "bashkortostan.ru" {
        type master;
        file "/etc/bind/masters/db.int.bashkortostan.ru";
        notify no;
    };
};

// - for *** external *** clients -
view "ext-zone" {
    match-clients { "external-ip"; };
//    allow-query { localhost; }; - не помогло...

// this was as defaults
    zone "." {
        type hint;
        file "/etc/bind/db.root";
    };

    zone "localhost" {
        type master;
        file "/etc/bind/db.local";
    };

    zone "127.in-addr.arpa" {
        type master;
        file "/etc/bind/db.127";
    };

    zone "0.in-addr.arpa" {
        type master;
        file "/etc/bind/db.0";
    };

    zone "255.in-addr.arpa" {
        type master;
        file "/etc/bind/db.255";
    };
// defaults end

    zone "bashkortostan.ru" {
        type master;
        file "/etc/bind/masters/db.ext.bashkortostan.ru";
        notify yes;
    };
};

----------- ext zone file-----------
;
; Internal zone bashkortostan.ru
;
$TTL    86400
@       IN      SOA     bashkortostan.ru. root.bashkortostan.ru. (
                        2003031910      ; Serial yyyymmddxx
                        10800           ; Refresh - 3 hour
                        3600            ; Retry   - 1 hour
                        864000          ; Expire  - 10 days
                        86400 )         ; Minimum -  1 day
;
        IN      NS      ns.bashkortostan.ru.    ; primary ns
        IN      NS      nameserver.bashnet.ru.  ; slave ns
;
        IN      MX      10 mail.bashkortostan.ru.
;
localhost               A       127.0.0.1
;
bashkortostan.ru.       A       213.24.203.25
ns                      A       213.24.203.25
mail                    A       213.24.203.25
;
www                     A       213.24.203.8
ftp                     A       213.24.203.8

------------------- int zone -------------------
;
; External zone bashkortostan.ru
;
$TTL    86400
@       IN      SOA     bashkortostan.ru. root.bashkortostan.ru. (
                        2003031925      ; Serial yyyymmddxx
                        10800           ; Refresh - 3 hour
                        3600            ; Retry   - 1 hour
                        864000          ; Expire  - 10 days
                        86400 )         ; Minimum -  1 day
;
        IN      NS      ns.bashkortostan.ru.    ; primary ns
;
;       IN      MX      10 mail.bashkortostan.ru.
;
localhost               A       127.0.0.1
;
bashkortostan.ru.       A       172.16.0.250
ns                      A       172.16.0.250
mail                    A       172.16.0.250
;
www                     A       172.16.1.245
ftp                     A       172.16.1.245

------------- resolv.conf -----------------------
nameserver 127.0.0.1
search bashkortostan.ru
nameserver 213.24.96.233
nameserver 213.24.96.234

------------- daemon.log------------
starting BIND 9.2.1
using 1 CPU
loading configuration from '/etc/bind/named.conf'
no IPv6 interfaces found
listening on IPv4 interface lo, 127.0.0.1#53
listening on IPv4 interface eth0, 213.24.103.25#53
listening on IPv4 interface eth1, 172.16.0.250#53
command channel listening on 127.0.0.1#953
zone bashkortostan.ru/IN: loaded serial 2003031925
zone 0.in-addr.arpa/IN: loaded serial 1
zone 127.in-addr.arpa/IN: loaded serial 1
zone 255.in-addr.arpa/IN: loaded serial 1
zone localhost/IN: loaded serial 1
zone bashkortostan.ru/IN: loaded serial 2003031910
running
zone bashkortostan.ru/IN: sending notifies (serial 2003031910)

----------------------

пока тачка в сети не зарегена.. тока ip, поэтому извне тестирую дигом типа так: dig @my-ip some-sub.mydomain.ru

результат:

1. для internal: ок (правильно резолвит мой (дает внутр-ip) и чужие домены www.ru - 194.87.0.50 и т.п.)
2. для external: ок (верно резолвит мой домен, но не резолвит чужые иди-ка ты, мол, к рутовым днс... :)
3. для самого себя: фиг - ни секунды думая говорит:
---
mail:/var/log# ping www.ru
ping: unknown host www.ru
mail:/var/log#
----

Плиииз help!
Благодарю!


"Уточнение..."
Отправлено Camb , 20-Мрт-03 08:17 
при ping www.ru
для самого себя он пытается отрезолвить www.ru.my-domain.ru  :(

вот. :(


"Еще одно уточнение..."
Отправлено Camb , 20-Мрт-03 08:25 
дело в том, что на данный момент мой домен реально сущ-ет в инете... (его держат другие ns (точнее другие ip) может из-за этого траблы..

"Уточнение..."
Отправлено Sampan , 20-Мрт-03 12:23 
>при ping www.ru
>для самого себя он пытается отрезолвить www.ru.my-domain.ru  :(
>
Это-то понятно.
Ты же ему сказал в resolv.conf
search bashkortostan.ru
вот он и добавляет к www.ru

Похоже проблема в allow-recursion { "internal-ip"; };
сделай
allow-recursion { "internal-ip"; localhost; };


"Уточнение..."
Отправлено Camb , 22-Мрт-03 13:42 
Все! Отлично все работает!

Всем спасибо!!

Camb.



"IPtables SNAT DNAT please help!!!"
Отправлено Camb , 18-Мрт-03 18:44 
зоан физически у меня - master name server.. внеш ip адресов свободных достаточно.

Спасибо.