The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  ВХОД  слежка  RSS
"Помогите с DNAT & SNAT в iptables"
Вариант для распечатки Архивированная нить - только для чтения! 
Пред. тема | След. тема 
Форумы OpenNET: Виртуальная конференция (Public)
Изначальное сообщение [Проследить за развитием треда]

"Помогите с DNAT & SNAT в iptables"
Сообщение от interprise emailИскать по авторуВ закладки on 04-Авг-02, 14:03  (MSK)
Есть такая проблема стоит сетка 192.168.0.0/16 в ней 5 подсетей , стоит firewall на linux в сети 192.168.1.0/24 стоят сервера баз данных , в сетях 192.168.2.0/24 , 3.0/24 , 4.0/24 , 5.0/24 живут разные пользователи
Так вот проблема на локальных серверах стоят www на порту 80 и 443 (в каждом сервере 2 сетевухи) и соответственно 2 адреса . 1 адрес из внутренней сети (к примеру 192.168.1.100/32) и 1 из сети которая смотрит прямо в INTERNET через firewall (выдана провайдером). Смысл этой затеи в следующем (для пользователей из внутренней сети давать соединение по 100Мбит прямо на локальный адрес) и не пускать их через ИНТЕРНЕТ , а для всех остальных пришедших из ИНЕТА есть выделенка с IP 217.134.х.44 на который они благополучно поподают.
Так вот проблема в следующем : на внешнем интерфейсе вижу ЗЛО огромный трафик ! я в удивлении 8-( Оказалось что пакет бежит до DNS сервера за пределами локальной сети резольвит имя (моего внутреннего сервера в IP) и получает IP внешнего интерфейса и удачно на него влетает. при этом он (в идеале) должен был бы влететь на внутренний интерфейс.
Как бы мне сделать так чтобы если пакет скажем посланный из внутренней сети (192.168.2.2) на порт 192.168.1.100/32:80 не выпускался бы наружу в интернет а форвардился бы принудительно на 192.168.1.100/32:80 и при этом пакет посланный на !192.168.1.100/32:80 вылитал и бежал куда надо ?

p.s Сейчас почти все так только все пакеты вылетают наружу и часть сразу бежит обратно.
p.s.s Буду крайне признателен за помощь , так как клиентов около 300 трафик просто ядерный и машинка с установленным SHAPER просто умирает.

  Рекомендовать в FAQ | Cообщить модератору | Наверх

 Оглавление

Индекс форумов | Темы | Пред. тема | След. тема
Сообщения по теме

1. "RE: Помогите с DNAT & SNAT в iptables"
Сообщение от Sampan Искать по авторуВ закладки on 05-Авг-02, 16:41  (MSK)
Наверное, оптимальнее будет решать это не средствами DNAT & SNAT

Для начала поставь DNSmasq - замечательный маленький кэширующий DNS сервер

Затем вешаешь tcpgate или fastforward с нужным тебе принудительным форвардом

  Рекомендовать в FAQ | Cообщить модератору | Наверх

2. "RE: Помогите с DNAT & SNAT в iptables"
Сообщение от interprise emailИскать по авторуВ закладки on 05-Авг-02, 17:03  (MSK)
>Наверное, оптимальнее будет решать это не средствами DNAT & SNAT
>
>Для начала поставь DNSmasq - замечательный маленький кэширующий DNS сервер
>
>Затем вешаешь tcpgate или fastforward с нужным тебе принудительным форвардом

У меня стоит DNS master вот в нем то все и дело !
если я пишу скажем отрезольвить мне внешний IP (217.195.22.70) то получаю
www.test.test.spb.ru , а если пише отрезольвить внутренний IP (192.168.1.2) то получаю www.test.local.test.spb.ru , а все локальные пользователи наровят набрать www.test.test.spb.ru в результате чего весь трафик летит через внешний интерфейс ;( В связи с этим геморой !
Так что решил сделать или принудительное DNAT на конкретный IP

типа
iptables -t nat -a prerouting -p tcp -d 192.168.1.2 --dport 80 -j redirect --to 192.168.1.2:80

Я так понимаю если в пакете IP адрес назначения 192.168.1.2 и порт 80 то мы его независимо ни от чего бросаем на 192.168.1.2 на порт 80
или я чегото не понимаю ?

Или же сделать хитрый CNAME в DNS который бы при наборе во внутренней сети www.test.local.test.spb.ru и www.test.test.spb.ru автоматически бросал бы на 192.168.1.2 а не бегал к DNS и не спрашивал кто есть кто.

p.s проблема крайне актуальна (время впритык) буду крайне признателен за помощ.
p.p.s все перечисленные компоненты отдельно работают наура.

  Рекомендовать в FAQ | Cообщить модератору | Наверх

3. "RE: Помогите с DNAT & SNAT в iptables"
Сообщение от Firewalker emailИскать по авторуВ закладки on 06-Авг-02, 00:06  (MSK)
у меня:
выдумываеш себе домен несуществующий (например firma.lnet)
и делаеш:

локальная мастер зона:
локальные имена серверов -> локальные (приватные ір)

реверс:
локальные (приватные ір) всех компов -> имена

  Рекомендовать в FAQ | Cообщить модератору | Наверх

4. "Вопрос уже перешел в разряд DNS или маркировки пакетов и при..."
Сообщение от interprise emailИскать по авторуВ закладки on 06-Авг-02, 09:43  (MSK)
>у меня:
>выдумываеш себе домен несуществующий (например firma.lnet)
>и делаеш:
Все так и сделано (естественно есть локальный домен)
>
>локальная мастер зона:
>локальные имена серверов -> локальные (приватные ір)
>
>реверс:
>локальные (приватные ір) всех компов -> имена

и реверс с мастером есть и работают

Вкраце надо если я пишу www.test.test.spb.ru то для пришедших из интернета выдавался бы внешний адрес (сейчас так и есть !) , а для пришедших из локальной сети на www.test.test.spb.ru выдавался бы локальный адрес этого же сервера тоесть 192.168.1.2
В сервере 2 сетевухи !

  Рекомендовать в FAQ | Cообщить модератору | Наверх

5. "RE: Вопрос уже перешел в разряд DNS или маркировки пакетов и..."
Сообщение от BartSimpson emailИскать по авторуВ закладки on 06-Авг-02, 10:15  (MSK)
Смотри в сторону view (bind).
  Рекомендовать в FAQ | Cообщить модератору | Наверх

6. "RE: Вопрос уже перешел в разряд DNS или маркировки пакетов и..."
Сообщение от Sampan Искать по авторуВ закладки on 06-Авг-02, 10:30  (MSK)
>Смотри в сторону view (bind).

Полностью согласен.
Проблема решается посредством view в BIND 9.2.1

  Рекомендовать в FAQ | Cообщить модератору | Наверх

7. "RE: Вопрос уже перешел в разряд DNS или маркировки пакетов и..."
Сообщение от interprise emailИскать по авторуВ закладки on 06-Авг-02, 15:25  (MSK)
>>Смотри в сторону view (bind).
>
>Полностью согласен.
>Проблема решается посредством view в BIND 9.2.1
Можно пример , а то чегойто я не понял

скажем у меня есть мастер зона для
named.conf
options {
directory "/var/named";
allow-transfer{
any;
};
allow-query{
any;
};
listen-on port 53{
any;
};
transfer-format many-answers;
cleaning-interval 60;
interface-interval 60;
statistics-interval 60;
deallocate-on-exit no;
};
controls{
inet 127.0.0.1 allow{
any;
} keys{
"key";
};
};
// generated by named-bootconf.pl
// secret must be the same as in /etc/rndc.conf
key "key"{
algorithm hmac-md5;
secret "c3Ryb25nIGVub3VnaCBmb3IgYSBtYW4gYnV0IG1hZGUgZm9yIGEgd29tYW4K";
};
view "root" {
     match-clients { any; };
     zone "." {
type hint;
file "named.ca";
    };
};
view "internal.peterstar.test.spb.ru" {
    // in my internal networks.
     match-clients { 192.168.0.0/16;127/8; };
     zone "test.spb.ru" {
type master;
file "internal.peterstar.test.spb.ru";
notify yes;
    };
};

view "external.peterstar.test.spb.ru" {
    // in my external networks.
     match-clients { any; };
     zone "test.spb.ru" {
type master;
file "peterstar.test.spb.ru";
notify yes;
allow-transfer{
any;
};
allow-query{
any;
};
    };
};
view "external2" {
    // in my external networks.
     match-clients { any; };

     zone "locals.test.spb.ru" {
type master;
file "locals.test.spb.ru";
notify yes;
allow-transfer{
192.168.0.0/16;
};
allow-query{
192.168.0.0/16;
};
allow-update{
192.168.0.0/16;
};
    };
};
view "external3" {
    // in my external networks.
     match-clients { any; };

     zone "0.0.127.IN-ADDR.ARPA" IN {
type master;
file "127.0.0";
    };
};
view "external4" {
    // in my external networks.
     match-clients { any; };

     zone "83.195.217.IN-ADDR.ARPA" IN {
type master;
file "217.195.83";
notify yes;
allow-transfer{
any;
};
allow-query{
any;
};
    };
};
view "external14" {
    // in my external networks.
     match-clients { any; };

     zone "83.195.217.internal.IN-ADDR.ARPA" IN {
type master;
file "internal.217.195.83";
notify yes;
allow-transfer{
any;
};
allow-query{
any;
};
    };
};

view "external14" {
     match-clients { 192.168.0.0/16; };

     zone "83.195.217.IN-ADDR.ARPA" IN {
type master;
file "internal.217.195.83";
notify yes;
allow-transfer{
any;
};
allow-query{
any;
};
    };
};

view "external5" {
    // in my external networks.
     match-clients { any; };

     zone "168.192.IN-ADDR.ARPA" IN {
type master;
file "192.168";
notify yes;
allow-transfer{
192.168.0.0/16;
};
allow-query{
192.168.0.0/16;
};
allow-update{
192.168.0.0/16;
};
    };
};

Файл external.peterstar.test.spb.ru выглядит так

$TTL 43200
@ IN SOA ns1.test.spb.ru. 111.hotmail.com. (
2002070501 ; serial
1H ; refresh
15 ; retry
7D ; expire
12H ; default_ttl
)
ns1 IN A 217.195.83.11
freebsd.locals IN A 192.168.1.1
qnx IN CNAME ns1.test.spb.ru.
ftp IN CNAME ns1.test.spb.ru.
freebsd IN CNAME ns1.test.spb.ru.
post IN CNAME ns1.test.spb.ru.
mail IN A 217.195.83.22
nord IN CNAME mail.test.spb.ru.
lotus0 IN CNAME mail.test.spb.ru.
sauto IN A 217.195.83.33
itest IN A 217.195.83.44
i-test IN CNAME ibank.test.spb.ru.
www.itest IN CNAME ibank.test.spb.ru.
www.i-test IN CNAME ibank.test.spb.ru.
www IN CNAME ibank.test.spb.ru.
@ IN A 217.195.83.44
@ IN NS ns1.test.spb.ru.
@ IN NS ns.peterstar.ru.
@ IN NS ns2.peterstar.ru.
@ IN MX 5 mail.test.spb.ru.
@ IN MX 10 relay.peterstar.ru.
@ IN MX 15 relay2.peterstar.ru.
@ IN MX 20 ns1.test.spb.ru.

Файл internal.peterstar.test.spb.ru выглядит так

$TTL 43200
@ IN SOA ns1.test.spb.ru. 111.hotmail.com. (
2002080601 ; serial
1H ; refresh
15 ; retry
7D ; expire
12H ; default_ttl
)
ns1 IN A 217.195.83.11
freebsd.locals IN A 192.168.1.1
qnx IN CNAME ns1.test.spb.ru.
ftp IN CNAME ns1.test.spb.ru.
freebsd IN CNAME ns1.test.spb.ru.
post IN CNAME ns1.test.spb.ru.
mail IN A 192.168.1.170
nord IN CNAME mail.test.spb.ru.
lotus0 IN CNAME mail.test.spb.ru.
sauto IN A 217.195.83.22
itest IN A 192.168.1.4
i-test IN CNAME itest.test.spb.ru.
www.itest IN CNAME itest.test.spb.ru.
www.i-test IN CNAME itest.test.spb.ru.
www IN CNAME itest.test.spb.ru.
@ IN NS ns1.test.spb.ru.
@ IN NS ns.peterstar.ru.
@ IN NS ns2.peterstar.ru.
@ IN MX 5 mail.test.spb.ru.
@ IN MX 10 relay.peterstar.ru.
@ IN MX 15 relay2.peterstar.ru.
@ IN MX 20 ns1.test.spb.ru.

Я так понял мы external.peterstar.test.spb.ru подставляем для внешних клиентов (у них резольв проходит без проблем), internal.peterstar.test.spb.ru подставляем локальным пользователям
(так вот всеравно видится глобальный адрес 217.195.83.44 а должен 192.168.1.4)
Если набираю из локальной сети itest.test.spb.ru получаю 217.195.83.44 а хотелось бы 192.168.1.4
В чем я не прав ?

  Рекомендовать в FAQ | Cообщить модератору | Наверх

8. "Большое всем спасибо !!!"
Сообщение от interprise emailИскать по авторуВ закладки on 06-Авг-02, 20:54  (MSK)
Пол дня траха и все зажило как в сказке
потоки пошли куда надо и т.д
Наливаю виртуальное пиво в ваши провода (да будет ваша сетевуха или модем ) счастлива !
  Рекомендовать в FAQ | Cообщить модератору | Наверх


Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Пожалуйста, прежде чем написать сообщение, ознакомьтесь с данными рекомендациями.




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2025 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру