У меня проблема, все сделал по описанной ниже схеме, но почему то трудности, какие - опишу далее. Надеюсь, смогу все описать понятно.
Итак я работаю в филиале некой организации, который удален от головного офиса на 100км. У нашей глобальной организации есть КИС (корпоративная сеть, далее КИС), так как мы - филиал, то мы должны быть в КИС, поэтому доя нас организован туннель по ADSL-модему (как оно сделано физически не так важно). Моя сеть в структуре организации должна иметь адреса вида 172.16.10.0/24, для всех хостов с этого адресного диапазона шлюзом должен выступать адрес 172.16.10.1, есть свои ДНС. Адрес 172.16.10.1 (шлюз для КИС) доступен только когда работает ADSL-модем для туннеля (когда есть линк), очевидно, это адрес какого-то порта какой то железки в головном офисе. То есть адрес 172.16.10.1 есть и никуда его не денешь. У меня в сети около 30-40 компьютеров в Windows XP. Для того, чтобы они были в сети я прописываю им настройки:
- адрес 172.16.10.2 - 172.16.10.254
- маска 255.255.255.0
- шлюз 172.16.10.1
- Днс-сервера от компании..
Т.о. все клиенты моей локальной сети оказываются в сети компании, во внутренней сети, они могут иметь доступ к внутренним ресурсам типа resource.corpnet и пр..
В идеале это все, все работает, все счастливы, но КИС не предоставляет нам доступа в Интернет. Поэтому был куплен второй модем, который с какого то боку надо приткнуть к моей сети 172.16.10.0/24 так, чтобы некоторые хосты из этой сети могли сидеть в инете и одновременно находиться в КИС по своему адресу. Вот такая задача.
Что сделал я. Я взял простой компьютер и поставил на него linux (Arch linux, не кидать камнями). После этого я убедился что в моем компьютере 2 сетевые карты: 1 для Интентет-модема, 2 для хаба, в который "воткнут" адрес 172.16.10.1 и клиенты моей сети. То есть схема такая:
Код: Выделить всё
Интернет - LinuxRouter - HUB - LocalNet(172.16.10.0/24)
|
172.16.10.1На ЛинуксРоутере у меня ppp0 смотрит в Интернет, а eth1 смотрит в мою локальную сеть. Для интернета был организован маскарадинг для избранных клиентов локальной сети адресами от 172.16.10.10 до 172.16.10.21. Умолчальный gw получается от ppp0 соединения, то есть default gw == Internet GW. Интерфейсу, воткнутому в хаб локальной сети я назначил адрес 172.16.10.2, чтобы клиенты локальной сети могли иметь к нему доступ. Далее был разрешен форвардинг пакетов между интерфейсами и прописаны 3 маршрута:
- -net 10.0.0.0 mask 255.0.0.0 gw 172.16.10.1
- -net 172.16.0.0 mask 255.255.0.0 gw 172.16.10.1
- третий марштур, который покрывал адреса внутренних DNS-серверов и других наших ресурсов gw 172.16.10.1
Далее я настроил DHCP-сервер, где всем клиентам как и раньше выдавался шлюз 172.16.10.1 и внутренние DNS-ы, а вот группе избранных клиентов с привязкой по макам и адресами 172.16.10.10-172.16.10.21 выдавался шлюзом адрес 172.16.10.2 (адрес уже линуксРоутера), выдавались 3 днс: внутренний, гугл, второйВрутренний.
После этого я имел 2 варианта развития событий для избранных клиентов:
1) Клиент идет в Интернет: он обращается к своему шлюзу по умолчанию, это линуксРоутер на адресе 172.16.10.2. ЛинуксРоутер натит клиента и тот спокойно гуляет в Интернет.
2) Клиент идет на внутренние ресурсы компании: он обращается к своему шлюзу по умолчанию на адрес 172.16.10.2 (опять же линукс - роутер). Линукс роутер принимает пакет клиента и передает его по одному из трех маршрутов (пакету то надо во внутрисеть) на адрес 172.16.10.1. По идее дальше линукс-роутер должен сказать клиенту сообщением icmp-redirect, что клиентский пакет перенаправлен на адрес 172.16.10.1 и ответа клиенту следует ждать от адреса 172.16.10.1 (я прав?), потому что они в одной сети и прямой зоне видимости. Дальше приходит ответ на запрос клиента из недр внутрисети на адрес 172.16.10.1, адрес 172.16.10.1 отдает ответ клиенту напрямую, уже не через линуксРоутер (172.16.10.2), потому что и он и клиент (и линуксРоутер) находятся в одной подсети.
Вот рисунок этого всего: http://dl.dropbox.com/u/4427808/tmp/ntwrk2.png
Теоретически эта схема должна работать или нет?
Contacts: