Здравствуйте. Хотелось бы получить консультацию по такому вопросу:
есть компьютер-маршрутизатор, он же выполняет функции веб сервера,
подключены два внутренние сети, одна по nfe0 (и её же VPN по ng0), вторая сеть - по ADSL-модему, который подключен к общей сети. Т.е. организация такая:Router 192.168.1.1
|.......|
|nfe0--------Prov1 homenet
|.ng0--------Prov1 internet(VPN)
|.......|
|.......| Switch ______
|fxp0--------|1 2|-------------|ADSL |
|fxp1| | 3|-Comp1 |modem|-----Prov2 homenet
|____| | 4|-Comp2 |______|
|__5|-... 192.168.1.254
А задача состоит вот в чем: у провайдера 1 есть внутренние адреса на 10.0.0.0/8 (ну и еще некоторые разные, не столь важно) и еще белые адреса (но их в расчет пока можно и не брать). У второго провайдера вот такие диапазоны (почти все - белые айпи): 81.20.192.0/20, 93.180.0.0/18, 172.16.0.0/12, 195.34.224.0/19, 95.179.0.0/17 и недавно появился 10.0.0.0/8. Нужно чтобы при заходе по адресу domain1.ru (привязан к айпи внешнему подключения Prov1) для пользователей Prov1 этот сайт был внутренним ресурсом, пользователям же Prov2 веб-сервер (nginx, если что) выдавал сообщение о том, что им надо вместо адреса domain1.ru использовать domain2.ru (или происходил жесткий редирект на него, адрес приявязан в белому айпи Prov2), соответственно для пользователей Prov2 domain2.ru доолжен быть внутренним ресурсом. А сайт domain3.ru должен для всех грузиться одинаково (либо это для всех будет внешка, либо, хотя бы для Prov1 это должа быть внутренняя сеть, на крайний случай, редирект на domain4.ru для абонентов Prov2).
Если просто прописать маршрутизацию, то:
во-первых, теряется диапазон 10.0.0.0/8 для Prov2
во-вторых, при попытке пользователя Prov2 зайти на сайт domain1.ru по правилам маршрутизации ответ отправляется через ADSL-модем, так что пользователь считате, что сервер ему просто не отвечает, а на самом деле его комп отвергает подключение от совсем другого айпи, на который не посылал запрос)Если такое в принципе осуществимо, то надеюсь на вашу помощь в этой интересной задачке :)
Может зайти с другого конца?
Имхо, маршрутизация здесь ни при чём. Пользователям в разных сетях должны выдаваться разные IP по запросу одного и того-же доменного имени, смотрите в сторону DNS
>Может зайти с другого конца?
>Имхо, маршрутизация здесь ни при чём. Пользователям в разных сетях должны выдаваться
>разные IP по запросу одного и того-же доменного имени, смотрите в
>сторону DNSТ.е. вы предлагаете организовать у себя на сервере еще и DNS-сервер? Где тогда можно подробнее почитать как осуществить выдачу DNSкой для разных айпи клиента разных айпи сервера?
>>Может зайти с другого конца?
>>Имхо, маршрутизация здесь ни при чём. Пользователям в разных сетях должны выдаваться
>>разные IP по запросу одного и того-же доменного имени, смотрите в
>>сторону DNS
>
>Т.е. вы предлагаете организовать у себя на сервере еще и DNS-сервер? Где
>тогда можно подробнее почитать как осуществить выдачу DNSкой для разных айпи
>клиента разных айпи сервера?то, что вам нужно называется - view
http://www.zytrax.com/books/dns/ch7/view.html
>[оверквотинг удален]
>>>разные IP по запросу одного и того-же доменного имени, смотрите в
>>>сторону DNS
>>
>>Т.е. вы предлагаете организовать у себя на сервере еще и DNS-сервер? Где
>>тогда можно подробнее почитать как осуществить выдачу DNSкой для разных айпи
>>клиента разных айпи сервера?
>
>то, что вам нужно называется - view
>
>http://www.zytrax.com/books/dns/ch7/view.htmlСпасибо за подсказку, почитаю и буду пробывать :)
>[оверквотинг удален]
>>>разные IP по запросу одного и того-же доменного имени, смотрите в
>>>сторону DNS
>>
>>Т.е. вы предлагаете организовать у себя на сервере еще и DNS-сервер? Где
>>тогда можно подробнее почитать как осуществить выдачу DNSкой для разных айпи
>>клиента разных айпи сервера?
>
>то, что вам нужно называется - view
>
>http://www.zytrax.com/books/dns/ch7/view.htmldns настроил, но вот проблема - он не виден ни из внутренней сети, ни из внешней.
т.е. я пытаюсь сделять nslookup мой_домен 192.168.1.1 (и с сервера и с другой локальной машины) и nslookup мой_домен мой_внешний_айпи - и просто наступает таймаут, а dns не отвечает. а вот на nslookup мой_домен 127.0.0.1 отвечает нормально.
соответственно, проблема в pf. я в нем уже по-разному пробывал разрешать, сейчас написано вот так:
pass in proto { tcp udp } from any to any port domain
...
pass out all keep stateи все равно не работает
>[оверквотинг удален]
>таймаут, а dns не отвечает. а вот на nslookup мой_домен 127.0.0.1
>отвечает нормально.
>соответственно, проблема в pf. я в нем уже по-разному пробывал разрешать, сейчас
>написано вот так:
>pass in proto { tcp udp } from any to any port
>domain
>...
>pass out all keep state
>
>и все равно не работаетnetstat
в студию
>[оверквотинг удален]
>>написано вот так:
>>pass in proto { tcp udp } from any to any port
>>domain
>>...
>>pass out all keep state
>>
>>и все равно не работает
>
>netstat
>в студию#netstat
Active Internet connections
Proto Recv-Q Send-Q Local Address Foreign Address (state)
tcp4 0 0 192.168.1.1.ftp 192.168.1.1.62966 ESTABLISHED
tcp4 0 0 192.168.1.1.62966 192.168.1.1.ftp ESTABLISHED
tcp4 0 0 localhost.ftp-proxy 192.168.1.3.4887 ESTABLISHED
tcp4 0 52 192.168.1.1.ssh 192.168.1.3.4441 ESTABLISHED
tcp4 0 0 10.94.4.193.65531 pe38-br2-l0.lip..pptp ESTABLISHED
udp4 0 0 95-31-247-61.bro.ntp *.*
udp4 0 0 localhost.ntp *.*
udp6 0 0 localhost.ntp *.*
udp6 0 0 fe80:6::1.ntp *.*
udp4 0 0 192.168.1.1.ntp *.*
udp4 0 0 10.94.4.193.ntp *.*
udp4 0 0 localhost.domain *.*
Active UNIX domain sockets
Address Type Recv-Q Send-Q Inode Conn Refs Nextref Addr
ffffff000754d000 stream 0 0 ffffff000741adc8 0 0 0 /tmp/mysql.sock
ffffff0003f096c8 stream 0 0 0 ffffff0003f09000 0 0
ffffff0003f09000 stream 0 0 0 ffffff0003f096c8 0 0
ffffff0003f09c98 stream 0 0 ffffff0003f179d8 0 0 0 /var/run/devd.pipe
ffffff0003f099b0 stream 0 0 0 ffffff0003f098b8 0 0
ffffff0003f098b8 stream 0 0 0 ffffff0003f099b0 0 0
ffffff0003f0ad90 dgram 0 0 0 ffffff0003f094d8 0 ffffff000754d0f8
ffffff000754d0f8 dgram 0 0 0 ffffff0003f094d8 0 ffffff0003f09aa8
ffffff0003f09aa8 dgram 0 0 0 ffffff0003f094d8 0 ffffff0003f09d90
ffffff0003f0a000 dgram 0 0 0 ffffff0003f093e0 0 0
ffffff0003f09d90 dgram 0 0 0 ffffff0003f094d8 0 ffffff0003f091f0
ffffff0003f091f0 dgram 0 0 0 ffffff0003f094d8 0 ffffff0003f097c0
ffffff0003f097c0 dgram 0 0 0 ffffff0003f094d8 0 ffffff0003f09ba0
ffffff0003f09ba0 dgram 0 0 0 ffffff0003f094d8 0 ffffff0003f090f8
ffffff0003f090f8 dgram 0 0 0 ffffff0003f094d8 0 0
ffffff0003f092e8 dgram 0 0 ffffff0003fbedc8 0 0 0 /var/named/var/run/log
ffffff0003f093e0 dgram 0 0 ffffff0007031000 0 ffffff0003f0a000 0 /var/run/log
ffffff0003f094d8 dgram 0 0 ffffff00070311f8 0 ffffff0003f0ad90 0 /var/run/logpriv
ffffff0003f095d0 dgram 0 0 ffffff00070313f0 0 0 0 /var/run/log
> udp4 0 0 localhost.domain *.*так он только на localhost слушает
Добавь
listen-on { 127.0.0.1; xxx.xxx.xxx.xxx; yyy.yyy.yyy.yyy; zzz.zzz.zzz.zzz; };
>> udp4 0 0 localhost.domain *.*
>
>так он только на localhost слушаетя уже догадался, только так и ен понял как изменить что он будет слушать. поидее, в rc.conf пропичывать, вопрос только что именно прописывать.
ага, спс, сейчас попробую
>> udp4 0 0 localhost.domain *.*
>
>так он только на localhost слушает
>
>Добавь
>
>listen-on { 127.0.0.1; xxx.xxx.xxx.xxx; yyy.yyy.yyy.yyy; zzz.zzz.zzz.zzz; };так, ну на внутреннем айпи и на айпи в локалке заработало, а вот на внешке пока не работает, видимо потому что VPN поднимается позже.
а если я после того как VPN поднимается пишу rndc reload, то он мне в логи выдает вот это:
Oct 28 19:02:45 lipetsk-media named[915]: could not listen on UDP socket: permission denied
Oct 28 19:02:45 lipetsk-media named[915]: creating IPv4 interface ng0 failed; interface ignored
Oct 28 19:02:45 lipetsk-media named[915]: the working directory is not writable
Oct 28 19:02:45 lipetsk-media named[915]: could not listen on UDP socket: permission denied
Oct 28 19:02:45 lipetsk-media named[915]: creating IPv4 interface ng0 failed; interface ignoredесть какие-нибудь варианты решения этой проблемы?
нехватка прав?
>нехватка прав?а как это можно проверить?
просто на других-то интерфейсах нормально слушает. изначально не может его начать слушать, т.к. mpd еще не запустился, а вот потом почему - не понятно.
>нехватка прав?оказалось, что если остановить named, а потом его запустить, то он начинает нормально слушать ng0. сейчас попробую добавить перезапуск named при запуске vpn.
>Может зайти с другого конца?
>Имхо, маршрутизация здесь ни при чём. Пользователям в разных сетях должны выдаваться
>разные IP по запросу одного и того-же доменного имени, смотрите в
>сторону DNSтак, dns заработал, только вот в чем проблема, таблица маршрутов влияет и на ответы dns, так что приницпиальной разницы после запуска dns у себя на сервере не заметил - все так же все упирается в маршруты...
>Может зайти с другого конца?
>Имхо, маршрутизация здесь ни при чём. Пользователям в разных сетях должны выдаваться
>разные IP по запросу одного и того-же доменного имени, смотрите в
>сторону DNSну так что, есть какие-нибудь новые идеи по этому поводу? если сейчас убрать маршрутизацию на второго провайдера через adsl, то по внешке он им будет отправлять правильный ip, но когда они попытаются зайти по этому ip, им никто не ответит, точнее опять будет отвечать не по тому адресу.
из вариантов, которые я вижу - внешний dns, который выдает правильные ip, а сервер уже нормально отвечает, т.к. в нем таблица маршрутизации. но меня этот вариант не слишком устраивает.
а что будет если у регистратора домена первым ip dns прописать внутренний айпи в одной сети, вторым - внутренний айпи в другой сети, а третьим - внешний айпи? насколько правильно это будет работать?