LinuxForum.Fans
Тема

Вопросы по маршрутизации

Автор: Planet_Dust 5 сообщений 1137 просмотров
#192872

Доброго вечера!

Есть несколько вопросов по маршрутизации.

Есть 3 сети :) Первые две от провайдеров, обе с битовой маской /29 (иначе говоря 1 айпишник - роутер провайдера, остальные 5 в нашем свободном пользовании). Ну и разумеется сетка предприятия - класса B, 172.16.0.0/16

Есть около 5-ти серверов, у каждого сервера есть по IP-адресу из каждой сети, один сервер выступает в качестве маршрутизатора.

Дак вот мне хотелось бы, чтобы все сервера были доступны из всех сетей, т.е. доступ внутри сети к серверам только по определенным портам и т.д (дело за iptables, я в курсе) и доступ извне возможен с обоих внешних адресов.
Также чтоб инет во внутрь раздавался с помощью NAT'а и при падении одного канала был доступ с другого.

Гуглил много, читал много, статьи LARTC тоже, писал несколько таблиц маршрутизации iproute2, мучал iptables (пока что вывалил пару ошибок, еще не разбирался). Добился только доступа по одному внешнему IP-адресу, меняя дефолтный шлюз в главной таблице.

Поможите пожалуйста, люди добрые, маршрутизация таки темный лес :D

Если нужно, выложу скрипты iproute и iptables.

#192903

есть такое понятие - сегментация сети. Организуй сегмент серверов и юзерский сегмент. И доступ в сегмент серверов (с отдельным адресным пространством) организуй через шлюз с межсетевым экраном. Тогда твоя схема намного упростится и реализовать твои задумки будет намного проще.

#193024
Cruiser78 написал:
есть такое понятие - сегментация сети. Организуй сегмент серверов и юзерский сегмент. И доступ в сегмент серверов (с отдельным адресным пространством) организуй через шлюз с межсетевым экраном. Тогда твоя схема намного упростится и реализовать твои задумки будет намного проще.

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

#193136

Собственно маршрутизация:

[console]
# cat routing.sh

#!/bin/sh

###########
#
# Routing
#
###########

#
# -- Settings --
#

# IP utility location
IP="/sbin/ip"

# Localhost
LO_IF="lo"
LO_IP="127.0.0.1"
LO_NET="127.0.0.0/8"

# Local network
LOCAL_IF="vlan10"
LOCAL_IP="172.16.10.1"
LOCAL_NET="172.16.0.0/16"

# Provider-1
P1_IF="vlan11"
P1_IP="188.XXX.XXX.2"
P1_NET="188.XXX.XXX.0/29"
P1_GW="188.XXX.XXX.1"

# Provider-2
P2_IF="vlan12"
P2_IP="194.XXX.XXX.2"
P2_NET="194.XXX.XXX.0/29"
P2_GW="194.XXX.XXX.1"

#
# -- End of 'Settings' --
#

#
# -- Flush routing tables --
#
$IP route flush table p1
$IP route flush table p2
$IP route flush table main
$IP route flush cache table p1
$IP route flush cache table p2
$IP route flush cache table main
$IP rule delete table p1
$IP rule delete table p2

#
# -- End of 'Flush routing tables --
#

#
# -- Routing tables --
#

# Provider-1
$IP route add $LO_NET dev $LO_IF src $LO_IP table p1
$IP route add $P1_NET dev $P1_IF src $P1_IP table p2
$IP route add $LOCAL_NET dev $LOCAL_IF src $LOCAL_IP table p2
$IP route add default via $P1_GW table p2

# Provide-2
$IP route add $LO_NET dev $LO_IF src $LO_IP table p2
$IP route add $P2_NET dev $P2_IF src $P2_IP table p2
$IP route add $LOCAL_NET dev $LOCAL_IF src $LOCAL_IP table p2
$IP route add default via $P2_GW table p2

# Main Table
$IP route add $LO_NET dev $LO_IF src $LO_IP table main
$IP route add $P1_NET dev $P1_IF src $P1_IP table main
$IP route add $P2_NET dev $P2_IF src $P2_IP table main
$IP route add $LOCAL_NET dev $LOCAL_IF src $LOCAL_IP table main
$IP route add default via $P1_GW table main

#
# -- End of 'Routing Tables' --
#

#
# -- Routing Rules --
#
$IP rule add from $P1_IP table p1
$IP rule add from $P2_IP table p2
#
# -- End of 'Routing Rules' --
#
[/console]

собственно при таком раскладе серв доступен из локалки и только по 1-му внешнему адресу, какой именно внешний адрес становится доступен решает команда:

ip route replace default via ПРОВАЙДЕР table main

Но мне нужно чтобы доступ был с обоих внешних адресов. Как сделать?

#193163

Хмм.. Кстати говоря, заметил что:

[console]
# ip route list table p1
188.XXX.XXX.0/29 dev vlan11 scope link src 188.XXX.XXX.2
172.16.0.0/16 dev vlan10 scope link src 172.16.10.1
127.0.0.0/8 dev lo scope link src 127.0.0.1

# ip route list table p2
194.XXX.XXX.0/29 dev vlan12 scope link src 194.XXX.XXX.2
172.16.0.0/16 dev vlan10 scope link src 172.16.10.1
127.0.0.0/8 dev lo scope link src 127.0.0.1

# ip route list table main
188.XXX.XXX.0/29 dev vlan11 scope link src 188.XXX.XXX.2
194.XXX.XXX.0/29 dev vlan12 scope link src 194.XXX.XXX.2
172.16.0.0/16 dev vlan10 scope link src 172.16.10.1
127.0.0.0/8 dev lo scope link src 127.0.0.1
default via 188.XXX.XXX.1 dev vlan11
[/console]

т.е. дефолтовые шлюзы в таблицы p1 и p2 не пишет..

Добавлено: ну точно, при запуске скрипта маршрутизации, вываливает:

[console]
RTNETLINK answers: No such process
RTNETLINK answers: No such process
[/console]

Убираешь
$IP route add default via $P1_GW table p2
$IP route add default via $P2_GW table p2

и начинает запускаться без пререканий, но шлюзов в таблицах нет oO

что к чему..

Войдите или зарегистрируйтесь, чтобы ответить.