LINUX.ORG.RU
ФорумAdmin

Маршрутизация, задачка начального уровня, наставьте :-)


0

0

Здравствуйте, уважаемые профессионалы!

ДАНО простенький "железный" маршрутизатор, подключенный к коммутатору.
Правила фаерволла не прописаны, трафик по всем протоколам разрешен, у локальной сети неограниченный доступ в интернет и к сетевым ресурсам.

НЕОБХОДИМО между этими маршрутизатором и коммутатором подключить linux-сервер (расположен на другом этаже, подведены кабели от "внешнего" и "внутреннего" интерфейсов сервера), то есть надо заменить патч-корд, напрямую соединяющий роутер и свитч, на конструкцию router-сервер-switch.

Я подключил "внешний" интерфейс сервера к маршрутизатору, и "внутренний" к коммутатору. Также разрешил маршрутизацию пакетов на сервере, сменив "0" на "1" в /proc/sys/net/ipv4/ip_forward.
Пока на сервере никакой фаервол не настроен, запретов никаких не выставлено.

ПРОБЛЕМА: с "внешнего" интерфейса сервера я вижу роутер и могу выходить в интернет, но "внутренний" интерфейс НЕ виден из сети, и с него я также НЕ вижу локалку. Хотя он напрямую воткнут в коммутатор, к которому подведены остальные машины сети.

ВОПРОС: что еще необходимо сделать, чтобы стало возможным взаимодействие сервера и локальной сети, и чтобы у локальной сети появился доступ в интернет через этот сервер и далее роутер?

Внутренний ip маршрутизатора 192.168.0.1, внешний ip сервера (eth0) 192.168.0.2, внутренний ip сервера (eth1) 192.168.0.3

Дистрибутив: Debian GNU/Linux

Имеющиеся настройки:
/etc/sysctl.conf:
net.ipv4.ip_forward=1
-------------
/etc/network/interfaces:
auto lo eth1 eth0
iface lo inet loopback

allow-hotplug eth0
iface eth0 inet static
address 192.168.0.2
netmask 255.255.255.0
gateway 192.168.0.1

iface eth1 inet static
address 192.168.0.3
netmask 255.255.255.0

Спасибо.

anonymous

При существующем положении дел смотрите в сторону Bridging How-to или измените адресацию в сети.

vokchut
()

Вы даете на интерфейсы ip-адреса из одной стети. IP-маршрутизация так работать не будет. Так просто нельзя воткнуть Linux-сервер в разрыв патч-корда между локалкой и роутером.

Может вам надо бриджинг. Может вам надо дать на локальный интерфейс (eth1) ip-адрес аппаратного маршрутиазатора, а на маршрутизатор настроить другой адрес (192.168.1.1) и прописать маршрут через к 192.168.0.0/255.255.255.0 через 192.168.1.2, назначеный на внешний интрефейс роутера.

Или можно попробовать сойти с ума, на локальный интерфейс 192.168.1.1, на внешнем настроить proxy-arp для всех 254 адресов сети 192.168.1.0, прописать маршрут по умолчанию через 192.168.1.1 на внешнем интерфейсе и забить в ARP-таблицу, что 192.168.1.1 имеет MAC-адрес вашего аппаратного маршрутизатора.

mky ★★★★★
()

в твоем случае ставишь bridge-utils и поднимаешь мост между eth0 и eth1

хотя mode telepathy подсказывает мне что тебе в промежутке router-сервер надо просто подсеть поменять, т.е на роутере сделать (например )192.168.1.1, а на сервере 192.168.1.2, после чего в включаешь ip_forward, делаешь
iptables -A FORWARD -i eth1 -o eth0 -j ACCEPT
iptables -A FORWARD -i eth0 -o eth1 -j ACCEPT
и все становится чики пуки (не забудь прописать их в авторан, а то при перезагрузке все потеряется)
з.ы. во втором случае не забудь на клиентах прописать дефолт гетвей 192.168.0.3

z0D5e8n7x
()
Ответ на: комментарий от z0D5e8n7x

>не забудь прописать их в авторан

вендузятнег детектед

2Автор_топика:
Не слушай тех кто говорит про бридж, это лишний гемморой.
Подводя итог под вышесказанным тебе нужно проделать следующие действия:

1)Поставить на внутреннем интферфейсе сервера айпи который был у маршрутизатора (это чтобы не парится с заменой дефолтного шлюза у остальных компов в сети)

2)Поставить на внешнем интерфейсе сервера айпи из другой подсети, например 192.168.1.2, а на маршрутизаторе 192.168.1.1

3)Прописать на сервере маршрут по умолчанию на 192.168.1.1
(параметр gateway в /etc/network/interfaces)

4)Включить форвардинг через sysctl(уже сделано)

5)Разрешить в iptables прохождение пакетов по цепочке FORWARD

В простейшем случае это просто
iptables -F FORWARD
iptables -P FORWARD ACCEPT

но лучше сделать так как советовали выше или даже так:

iptables -F FORWARD
iptables -P FORWARD DROP
iptables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -i eth1 -o eth0 -j ACCEPT

Nao ★★★★★
()

>НЕОБХОДИМО между этими маршрутизатором и коммутатором подключить linux-сервер (расположен на другом этаже, подведены кабели от "внешнего" и "внутреннего" интерфейсов сервера), то есть надо заменить патч-корд, напрямую соединяющий роутер и свитч, на конструкцию router-сервер-switch.

В чём смысл конструкции? Чем будет заниматься сервер?

manntes ★★
()
Ответ на: комментарий от Nao

З.Ы. конкретно в его случае, с мостом будет проще, там 4 команды всего будет

z0D5e8n7x
()
Ответ на: комментарий от z0D5e8n7x

Да не загоняйся. :)

Я тоже использую понятия "авторан/автозагрузка" в качестве указания автоматического запуска приложений при старте ОС.
"Вендузятнег детектед"? Ну и х.. с ним. Я себе цену знаю, а кто там что наговаривает - пофигу.

Slavaz ★★★★★
()

Всем огромное спасибо!
Последний вопрос, теоретический: почему не работает маршрутизация между интерфейсами с ip-адресами из одной подсети?
Буду бесконечно благодарен за ссылку на мануал :-)

anonymous
()
Ответ на: комментарий от anonymous

Как ты себе это представляешь? Ели уж очень надо что бы >1 сетевой в одной подсети было, бридж в помощь.

manntes ★★
()
Ответ на: комментарий от anonymous

>Последний вопрос, теоретический: почему не работает маршрутизация между интерфейсами с ip-адресами из одной подсети?

При желании можно сделать чтобы работало, но это криво и тяжело маштабируемо. Если просто нацепить два айпишника из одной подсети на два разных интерфейса, то маршруты, которые автоматически создаются, будут выглядеть например так:

Destination Gateway Genmask Flags Metric Ref Use Iface
192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1

когда ты захочешь послать пакет на скажем 192.168.1.45 то AFAIK будет всегда выбираться первый маршрут в списке. Ведь маски маршрутов и метрики одинаковы. Тоесть второй маршрут не будет никогда задействован, а значит пересылать в подсеть на eth1 сервер не сможет.

Чтобы у тебя таким образом всё работало, тебе наверное придётся описать маршруты до всех машин из какого-либо одного физического сегмента сети. Ведь твой сервер не знает в каком физическом сегменте сети находится машина - на том что висит на eth0 или на том что на eth1.

Если хочется объеденить две сети так чтобы у них была одинаковая подсеть то используйте бридж как уже писали выше, но в вашем случае используйте разные подсети.

Nao ★★★★★
()
Ответ на: комментарий от Nao

ещё конечно я забыл про клиентские машины. им тоже придётся "объяснить" что часть машин которые вродебы какбы из их подсети находятся на самом деле за роутером. тоесть опять прописывать им маршруты...

В общем ненужный гемморой.

Nao ★★★★★
()
Ответ на: комментарий от Nao

ОГРОМНОЕ человеческое СПАСИБО!

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.