2 внешних ипа 2 гетвея?

Простые/общие вопросы по UNIX системам. Спросите здесь, если вы новичок

Модераторы: vadim64, terminus

Правила форума
Убедительная просьба юзать теги [cоde] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Аватара пользователя
ttys
*BSD
Сообщения: 402
Зарегистрирован: 2009-06-26 8:37:11
Откуда: Ростов-на-Дону
Контактная информация:

2 внешних ипа 2 гетвея?

Непрочитанное сообщение ttys » 2010-05-28 13:42:29

провайдер дал 2 внешних ипа, например:
1ип 1.1.1.10 гетвей 1.1.1.11
2ип 1.1.1.20 гетвей 1.1.1.21
оба ипа висят на одной WAN карте дефаулт гетвей 1.1.1.11
задача пробросить 2ип вовнутрь на внутренний ип 192.168.1.85 так чтобы он пользовал свой внешний гетвей 1.1.1.21
как это сделать?
ЗЫ вопрос в том как настроить редирект так чтобы второй внешний ип юзал свой гетвей? :st:
Последний раз редактировалось f_andrey 2010-05-28 14:56:45, всего редактировалось 1 раз.
Причина: Автору, выбирайте пожалуйста раздел соответствуюший тематике вашего сообщения. оформляйте сообщен е по человечески, приводите полную диагностику, больше логов больше вероятности ответа, а не флуда

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

Аватара пользователя
ttys
*BSD
Сообщения: 402
Зарегистрирован: 2009-06-26 8:37:11
Откуда: Ростов-на-Дону
Контактная информация:

Re: 2 внешних ипа 2 гетвея?

Непрочитанное сообщение ttys » 2010-05-28 14:00:23

всё это чудо на FreeBSD 8.0-RELEASE

Аватара пользователя
hizel
дядя поня
Сообщения: 9031
Зарегистрирован: 2007-06-29 10:05:02
Откуда: Выборг

Re: 2 внешних ипа 2 гетвея?

Непрочитанное сообщение hizel » 2010-05-28 14:08:51

Код: Выделить всё

man setfib
В дурацкие игры он не играет. Он просто жуткий, чу-чу, паровозик, и зовут его Блейн. Блейн --- это Боль.

Аватара пользователя
CTOPMbI4
прапорщик
Сообщения: 482
Зарегистрирован: 2008-05-02 20:20:47
Откуда: Made in Russia

Re: 2 внешних ипа 2 гетвея?

Непрочитанное сообщение CTOPMbI4 » 2010-06-01 6:23:36

Можно подробнее как это реализовать
Это почти неподвижности мука
Мчаться куда то со скоростью звука,
зная преакрасно, что есть уже где то
Некто
Летящий
Со скорости
Света!

Аватара пользователя
ttys
*BSD
Сообщения: 402
Зарегистрирован: 2009-06-26 8:37:11
Откуда: Ростов-на-Дону
Контактная информация:

Re: 2 внешних ипа 2 гетвея?

Непрочитанное сообщение ttys » 2010-06-01 10:22:57

правда решил проблему поговорив с провайдером, он расширил диапазон влана, тоесть оба ипа будут в одном влане а не в двух как предпологалось раньше. соответственно и гетвей будет один на все ипы
CTOPMbI4 писал(а):Можно подробнее как это реализовать
мне тоже интересно :smile:

Аватара пользователя
hizel
дядя поня
Сообщения: 9031
Зарегистрирован: 2007-06-29 10:05:02
Откуда: Выборг

Re: 2 внешних ипа 2 гетвея?

Непрочитанное сообщение hizel » 2010-06-01 10:36:21

у ttys оказался pf и setfib ему не в масть :]
В дурацкие игры он не играет. Он просто жуткий, чу-чу, паровозик, и зовут его Блейн. Блейн --- это Боль.

Аватара пользователя
ttys
*BSD
Сообщения: 402
Зарегистрирован: 2009-06-26 8:37:11
Откуда: Ростов-на-Дону
Контактная информация:

Re: 2 внешних ипа 2 гетвея?

Непрочитанное сообщение ttys » 2010-06-01 13:34:41

hizel писал(а):у ttys оказался pf и setfib ему не в масть :]
а как это на ipfw сделать?
ЗЫ я могу и ipfw настроить здесь пример 2х и более фаеров одновременно

Аватара пользователя
thefree
лейтенант
Сообщения: 980
Зарегистрирован: 2008-12-29 9:23:19
Откуда: Весёлая Страна

Re: 2 внешних ипа 2 гетвея?

Непрочитанное сообщение thefree » 2010-06-01 13:52:44

hizel писал(а):у ttys оказался pf и setfib ему не в масть :]
а как же rtable
Не судите меня строго, Я не волшебник, а только учусь!
http://planetbsd.ru - RSS-агрегатор *BSD по Рунету

Аватара пользователя
ttys
*BSD
Сообщения: 402
Зарегистрирован: 2009-06-26 8:37:11
Откуда: Ростов-на-Дону
Контактная информация:

Re: 2 внешних ипа 2 гетвея?

Непрочитанное сообщение ttys » 2010-06-04 8:07:08

thefree писал(а):
hizel писал(а):у ttys оказался pf и setfib ему не в масть :]
а как же rtable
2 CTOPMbI4

Код: Выделить всё

маршрут по умолчанию - анлим (серый ip).

добавил таблицу 1: /sbin/route -T 1 add default ip_второго_провайдера(белый ip)

в pf.conf:

#grey ip

ext_if_g        = "rl0" #интерфейс с серым ip
ext_gw_g        = "ip_address" #адрес шлюза где серый ip

#white IP
ext_if_w        = "tun0" #интерфейс с белым ip
ext_gw_w        = "ip_address" #адрес шлюза где белый ip
ext_ip_w        = "ip_address" #мой белый ip

#lan

lan_if          = "sis0"

nat on $ext_if_w inet from ($lan_if:network) -> ($ext_if_w:0)
nat on $ext_if_g inet from ($lan_if:network) -> ($ext_if_g:0)

table <to_white_ip> persist file "/etc/to_white_ip" #в таблице список ip на которые надо идти через белый ip

pass out route-to ($ext_if_g $ext_gw_g) inet from ($ext_if_g)
pass out route-to ($ext_if_w $ext_gw_w) inet from ($ext_if_w)

pass in on $lan_if inet

pass in quick on $lan_if inet to <to_white_ip> rtable 1 #если идут в инет на ip из таблицы to_white_ip, то заворачиваю их по маршруту из таблицы 1

у меня на этом компе висит mail сервер, поэтому прописываю еще:

pass in on $ext_if_w reply-to ($ext_if_w $ext_gw_w) inet proto tcp to $ext_ip_w port smtp
pass in on $ext_if_w reply-to ($ext_if_w $ext_gw_w) inet proto { tcp udp } to $ext_ip_w port imap

Так вроде работает.
www.obsd.ru

Аватара пользователя
ttys
*BSD
Сообщения: 402
Зарегистрирован: 2009-06-26 8:37:11
Откуда: Ростов-на-Дону
Контактная информация:

Re: 2 внешних ипа 2 гетвея?

Непрочитанное сообщение ttys » 2010-06-07 15:09:16

как оказалось не сразу понятно что www.obsd.ru это сцылка
вот второй вариант http://www.obsd.ru/8/?q=node/1407 :smile:

Аватара пользователя
ttys
*BSD
Сообщения: 402
Зарегистрирован: 2009-06-26 8:37:11
Откуда: Ростов-на-Дону
Контактная информация:

Re: 2 внешних ипа 2 гетвея?

Непрочитанное сообщение ttys » 2010-06-15 7:33:47

нашёл ещё одну статью про policy routing решение для ipfw и для pf если кому надо взял здесь (wiki.bsdportal.ru)
В данной статье рассматривется тот случай, когда на сервере имеется два сетевых интерфейса через которые, в зависимости от тех или иных обстоятельств, будет идти трафик в интернет.
Сразу оговорюсь что в данный момент времени я использую pf, а примеры с использованием ipfw приведены учитывая прошлый опыт, поэтому могут быть не столь полными. Также я надеюсь что (в случае с ipfw) имеется опыт настройки natd и соответствующих правил. Для pf также приветствуется знание синтаксиса :).

В общем случаем конфигурация используется следущая:

Код: Выделить всё

 rl0 - 10.10.10.254 (ip - шлюз провайдера №1, наш ip 10.10.10.10)
 rl1 - 20.20.20.254 (ip - шлюз провайдера №2, наш ip 20.20.20.10)
 rl2 - 30.30.30.30 (ip - адрес в локальной сети)
Приступим.
IPFW
Запускаем nat на интерфейсах:

Код: Выделить всё

 natd -a 10.10.10.10 -p 8668 
 natd -a 20.20.20.20 -p 8778
Далее создаем правила для файрвола:

Код: Выделить всё

 ipfw add divert 8668 ip from 30.30.30.100 to any 
 #в данном случае вместо 30.30.30.100 можно подставить ip тех кого пускать через данный интерфейс
 #или вместо any написать то, куда люди будут ходить через данный интерфейс
 ipfw add divert 8778 ip from 30.30.30.0/24 to any 
 #аналогично первому комментарию
 #
 #сам policy
 ipfw add fwd 10.10.10.254 ip from 10.10.10.10 to any 
 ipfw add fwd 20.20.20.254 ip from 20.20.20.10 to any 
 #возвращаем пакеты
 ipfw add divert 8668 ip from any to 10.10.10.10 
 ipfw add divert 8778 ip from any to 20.20.20.10
Привожу ещё один пример, в котором 1 пользователь ходит в сеть через первый канал и видит локальные ресурсы второго провайдера, а остальные наоборот:

Код: Выделить всё

ipfw add divert 8778 ip from 30.30.30.100 to 100.100.100.0/24 
#100.100.100.0/24 внутренняя сеть провайдера номер 1
ipfw add divert 8668 ip from 30.30.30.100 to any
ipfw add divert 8668 ip from 30.30.30.0/24 to 110.110.110.0/24
##110.110.110.0/24 внутренняя сеть провайдера номер 2
ipfw add divert 8778 ip from 30.30.30.0/24 to any
ipfw add fwd 10.10.10.254 ip from 10.10.10.10 to any
ipfw add fwd 20.20.20.254 ip from 20.20.20.10 to any
ipfw add divert 8668 ip from any to 10.10.10.10
ipfw add divert 8778 ip from any to 20.20.20.10
Вот собственно и всё.

Дописать pbr для доступа к сервисам с внешних интерфейсов и динамические правила для ipfw
PF

Теперь pf, привожу кусок моего конфига:
(в данном случае возможно придется настроить обычную маршрутизацю, в зависимости от поставленной задачи)

Код: Выделить всё

 #Внешние и внутренний интерфейсы.
 #
 ext_if_a        = "rl0" #первый провайдер
 ext_if_b        = "rl1" #второй провайдер
 int_if          = "rl2" #локалка
 #Шлюзы для каналов.
 #
 ext_gw_a        = "10.10.10.254" #для tun0
 ext_gw_b        = "20.20.20.254" #для tun1
 net             = "30.30.30.0/24" #локалка
 #TCP/UDP сервисы, обслуживаемые маршрутизатором, то к чему имеется доступ на внешних интерфейсах
 #
 tcp_svc         = "990" #как пример, что то нужно вписать иначе будет биг ошибка :)
 udp_svc         = "6000" #аналогично
 #Натим, важный момент, именно тут определяется кого куда пускать
 #Синтаксис ната, грубо говоря, таков: nat on _интерфейс_ from _откуда_ to _куда_ -> _интерфейс_или_ип_адрес
 #
 nat on $ext_if_a from {$net} -> ($ext_if_a:0)
 nat on $ext_if_b from {$net} -> ($ext_if_b:0)
 #Разрешаем сети ходить в интернет, всё остальное блокируем
 #
 block in on { $ext_if_a $ext_if_b }
 block return-rst in on { $ext_if_a $ext_if_b } proto tcp
 pass out on { $ext_if_a $ext_if_b } keep state
 #Исходящие пакеты в канал, соответствующий адресу источника. Здесь и начинается policy
 #
 pass out route-to ($ext_if_a $ext_gw_a) from ($ext_if_a) to !(self:network) \
 keep state
 pass out route-to ($ext_if_b $ext_gw_b) from ($ext_if_b) to !(self:network) \
 keep state
 #А вот policy для входящих пакетов на внешние интерфейсы
 #
 pass in on $ext_if_a reply-to ($ext_if_a $ext_gw_a) proto udp \
 to port { $udp_svc } keep state
 pass in on $ext_if_a proto udp from ($ext_if_a:network) to port { $udp_svc } \
 keep state
 #
 pass in on $ext_if_a reply-to ($ext_if_a $ext_gw_a) proto tcp \
 to port { $tcp_svc } flags S/SA keep state
 pass in on $ext_if_a proto tcp from ($ext_if_a:network) to port { $tcp_svc } \
 flags S/SA keep state
 #
 pass in on $ext_if_b reply-to ($ext_if_b $ext_gw_b) proto udp \
 to port { $udp_svc } keep state
 pass in on $ext_if_b proto udp from ($ext_if_b:network) to port { $udp_svc } \
 keep state
 #
 pass in on $ext_if_b reply-to ($ext_if_b $ext_gw_b) proto tcp \
 to port { $tcp_svc } flags S/SA keep state
 pass in on $ext_if_b proto tcp from ($ext_if_b:network) to port { $tcp_svc } \
 flags S/SA keep state