The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"два прова + два фейса + ппп + влан"
Вариант для распечатки  
Пред. тема | След. тема 
Форумы Открытые системы на сервере (Маршрутизация, NAT / Linux)
Изначальное сообщение [ Отслеживать ]

"два прова + два фейса + ппп + влан"  +/
Сообщение от chippa email on 27-Апр-10, 18:16 
Приветствую,

Имею в наследство такую конфигурацию:
Fedora 6, 2.6.22.14-72.fc6
eth1 - в провайдера №1, имеет внешний IP
eth1.100 - влан внутри провайдера №1 для связи между объектами (радио между зданиями)
eth0 - локальная сеть
eth0:1 - алиас для vpn (pptpd)

ADSL'ный модем воткнут в eth0 и настроен роутером для доступа к провайдеру №2. В настройках Федора установлена как DMZ.

По-мелочам: в мир с двух айпишников "смотрят" почтовые порты через DNAT, прозрачный сквид для сотрудников, шифрованный впн, nat. Почтовики и всякая дрянь доступна через eth0 и/или через eth0:1

Оно почти работает :)
Т.е. я не могу получать входящие соединения (например, VPN) по двум каналам одновременно.
Постоянно испытываю проблемы в случаи падения одного из каналов - приходится руками скрипты запускать и в GUI править default gateway. Мало того, получаю десятки звонков в стиле "на какой айпи коннектиться?".

Много чего прочитал на opennet.ru и вот варианты, который удалось найти:
1. коннект с двух каналов возможен, но из PPP недоступен интернет.
2. всё отлично, но только по одному из выбранных каналов.

Вариант с iptables ROUTE не подходит, ядро пересобирать боюсь :/
iptables v1.3.8

Хотелось бы услышать мнение посетителей насчет этого "роутера" и, возможно, полезные советы. Спасибо.

Высказать мнение | Ответить | Правка | Cообщить модератору

Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "два прова + два фейса + ппп + влан"  +/
Сообщение от ipmanyak (ok) on 28-Апр-10, 15:06 
Вам нужно юзать "Маршрутизацию по источнику".
Два канала в Internet, Синн Хердеюрген - http://www.osp.ru/lan/2002/05/136078/
Никаких дефолт гетвеев. Реализуется средствами ip route2. В федоре он возможно уже есть, если нет - установите этот пакет.  Статья для ядер 2.2. В вашем ядре 2.4 или 2.6 поддержка
CONFIG_IP_ADVANCED_ROUTER=y
CONFIG_IP_MULTIPLE_TABLES=y
CONFIG_IP_ROUTE_MULTIPATH=y
возможно тоже уже есть, проверьте. Если нет, то без генерации ядра не обойтись. Бояться нечего, старое ядро вы сохраните и можете указать в GRUB, или что-то там у вас, мультизагрузку с выбором ядра. Можете проделать это всё на полигоне, затем на реальной машине.
Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

2. "два прова + два фейса + ппп + влан"  +/
Сообщение от chippa email on 29-Апр-10, 10:33 
>[оверквотинг удален]
>Никаких дефолт гетвеев. Реализуется средствами ip route2. В федоре он возможно уже
>есть, если нет - установите этот пакет.  Статья для ядер
>2.2. В вашем ядре 2.4 или 2.6 поддержка
>CONFIG_IP_ADVANCED_ROUTER=y
>CONFIG_IP_MULTIPLE_TABLES=y
>CONFIG_IP_ROUTE_MULTIPATH=y
>возможно тоже уже есть, проверьте. Если нет, то без генерации ядра не
>обойтись. Бояться нечего, старое ядро вы сохраните и можете указать в
>GRUB, или что-то там у вас, мультизагрузку с выбором ядра. Можете
>проделать это всё на полигоне, затем на реальной машине.

Спасибо за совет!
В моем текущем ядре это включено, но не спасает меня от вопросов пользователей "на какой ип коннектиться?" в случаи падения канала. Хотелось бы уйти от этих вопросов.
Вижу теоретический выход в приобретении AS и установки quagga, переделать у пользователей ИП на доменное имя (две записи IN A) и наслаждаться. Я и сам понимаю, что мне 255 айпишек не нужны, но меньше купить невозможно.
Останется только настроить всё это, но это отдельная тема.

Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

3. "два прова + два фейса + ппп + влан"  +/
Сообщение от ipmanyak (ok) on 29-Апр-10, 11:27 
>В моем текущем ядре это включено, но не спасает меня от вопросов
>пользователей "на какой ип коннектиться?" в случаи падения канала. Хотелось бы
>уйти от этих вопросов.
>Вижу теоретический выход в приобретении AS и установки quagga, переделать у пользователей
>ИП на доменное имя (две записи IN A) и наслаждаться. Я
>и сам понимаю, что мне 255 айпишек не нужны, но меньше
>купить невозможно.
>Останется только настроить всё это, но это отдельная тема.

Правильно думаешь - Клиентам сказать тыкаться не на IP, а на FQDN имя, напримр vpn.domain.ru
В dns создать две записи
vpn.domain.ru A   xxx.xxx.xxx.xxx
vpn.domain.ru A   yyy.yyy.yyy.yyy
в BIND 9 сказать выдавать эти айпи циклически
( в options
rrset-order { class IN type A name "domain.ru" order cyclic; };
TTL выставить минимальный.
Со второй попытки будут попадать на живой IP. Решение конечно не ахти, но хоть что-то. Может кто лучше предложит.

Можно еще проще. Клиентам настроить два VPN на разные айпи, не пашет первый - запускать второй, и не нужно никого спрашивать.

Иметь свою AS неплохо, но тут тоже есть подводные камни. Ладно если канал упал и лежит, а если пропадание скачет? Время перестройки таблиц и анонсирование на рутерах занимает длительное время, если туда-сюда скакать, до 20 минут может уйти.

Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

4. "два прова + два фейса + ппп + влан"  +/
Сообщение от chippa email on 11-Май-10, 15:58 
>Иметь свою AS неплохо, но тут тоже есть подводные камни. Ладно если
>канал упал и лежит, а если пропадание скачет? Время перестройки таблиц
>и анонсирование на рутерах занимает длительное время, если туда-сюда скакать, до
>20 минут может уйти.

Лично у меня получилось вот так:
eth0 - локальная сеть, она же для канала №2
eth0:1 - локальная сеть для VPN-щиков.
eth1 - канал №1 в интернет
eth1.100 - VLAN между офисом и складом, проброшенный внутри канала №1
ppp0-pppXX - VPN подключения пользователей за пределами офиса/склада.
192.168.0.XXX - локальные пользователи.

Ограничения: всего 2 физических интерфейса, непонимание разных-там-протоколов и всякой всячины. Только Linux-платформа. Срок выполнения с отрицательным значением.
Задача: создать сказку для всех пользователей.

Результат: пользователи из офиса/склада ходят там, где надо (мир + локал), внешние пользователи могут использовать как внутренние, так и внешние сервисы.

=== скрипт
#!/bin/sh
PATH=/usr/sbin:/sbin:/bin:/usr/bin


#
# удалить все действующие правила
#
iptables -F
iptables -t nat -F
iptables -t mangle -F
iptables -X
# Всегда принимать трафик на loopback-интерфейсе

iptables -A INPUT -i lo -j ACCEPT

# Разрешить соединения, которые инициированы изнутри (eth0)
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -m state --state NEW -i ! eth1 -j ACCEPT
iptables -A FORWARD -i eth1 -o eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -i eth1 -o ppp+ -m state --state ESTABLISHED,RELATED -j ACCEPT


###

# Masquerade.
iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3128
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 8080 -j REDIRECT --to-port 3128
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 8800 -j REDIRECT --to-port 3128
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 5190 -j REDIRECT --to-port 3128
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 6880:7000 -j REDIRECT --to-port 3128


# Слушаем почтовые порты и перенаправляем на почтовый сервер.

iptables -t nat -A PREROUTING -p tcp --dst 62.182.X.Y --dport 25 -j DNAT --to-destination 192.168.0.222
iptables -A FORWARD -i eth1 -d 192.168.0.222 -p tcp --dport 25 -j ACCEPT

iptables -t nat -A PREROUTING -p tcp --dst 62.182.X.Y --dport 110 -j DNAT --to-destination 192.168.0.222
iptables -A FORWARD -i eth1 -d 192.168.0.222 -p tcp --dport 110 -j ACCEPT

iptables -t nat -A PREROUTING -p tcp --dst 62.182.X.Y --dport 587 -j DNAT --to-destination 192.168.0.222
iptables -A FORWARD -i eth1 -d 192.168.0.222 -p tcp --dport 587 -j ACCEPT

# ADSL-модем настроен роутером (по некоторым причинам) и форвардит 4 порта на Fedora-box
# перенаправляем со второго интерфейса почту на почтовый сервер.
iptables -t nat -A PREROUTING -p tcp --dst 192.168.0.195 --dport 587 -j DNAT --to-destination 192.168.0.222
iptables -A FORWARD -i eth1 -d 192.168.0.222 -p tcp --dport 587 -j ACCEPT

iptables -t nat -A PREROUTING -p tcp --dst 192.168.0.195 --dport 110 -j DNAT --to-destination 192.168.0.222
iptables -A FORWARD -i eth1 -d 192.168.0.222 -p tcp --dport 110 -j ACCEPT

iptables -t nat -A PREROUTING -p tcp --dst 192.168.0.195 --dport 143 -j DNAT --to-destination 192.168.0.222
iptables -A FORWARD -i eth1 -d 192.168.0.222 -p tcp --dport 143 -j ACCEPT

iptables -t nat -A PREROUTING -p tcp --dst 192.168.0.195 --dport 25 -j DNAT --to-destination 192.168.0.222
iptables -A FORWARD -i eth1 -d 192.168.0.222 -p tcp --dport 25 -j ACCEPT


# Разрешаем соединение с PPTP-сервером для всех;
iptables -A INPUT -m tcp -p tcp --dport 1723 -j ACCEPT

# Разрешаем протокол GRE для всех;
iptables -A INPUT -p gre -j ACCEPT

iptables -A FORWARD -i eth0 -o ppp+ -m state --state NEW -p gre -j ACCEPT
iptables -A FORWARD -i ppp+ -o eth0 -m state --state NEW -p gre -j ACCEPT

iptables -A FORWARD -i eth1 -o eth0 -m state --state NEW -p gre -j ACCEPT
iptables -A FORWARD -i eth0 -o eth1 -m state --state NEW -p gre -j ACCEPT

#
iptables -A FORWARD -i eth0 -o eth1 -j ACCEPT
iptables -A FORWARD -i eth0 -o eth0 -j ACCEPT
iptables -A FORWARD -i ppp+ -o eth1 -j ACCEPT
iptables -A FORWARD -i ppp+ -o eth0 -j ACCEPT

# World for warehouse:
iptables -A FORWARD -i eth1.100 -o eth0 -j ACCEPT


# чтобы можно было много раз запускать скрипт.
/sbin/ip rule del table 1
/sbin/ip rule del table 2
/sbin/ip rule del table 1
/sbin/ip rule del table 2
/sbin/ip rule del table 1
/sbin/ip rule del table 2
/sbin/ip rule del table 1
/sbin/ip rule del table 2
/sbin/ip rule del table 1
/sbin/ip rule del table 2


#Задание правил маршрутизации IP по источнику для DSL
/sbin/ip rule add from 192.168.0.195 lookup 1
/sbin/ip route add 192.168.0.0/24 via 192.168.0.195 table 1
/sbin/ip route add 192.168.100.0/24 via 192.168.100.1 table 1
/sbin/ip route add 0/0 via 192.168.0.205 table 1

#Задание правил маршрутизации IP по источнику
#для кабельного модема
/sbin/ip rule add from 62.182.X.Y lookup 2
/sbin/ip route add 192.168.0.0/24 via 192.168.0.195 table 2
/sbin/ip route add 192.168.100.0/24 via 192.168.100.1 table 2
/sbin/ip route add 0/0 via 62.182.X.Y table 2


/sbin/ip route add default equalize nexthop via 62.182.X.Y dev eth1 weight 1 nexthop via 192.168.0.205 dev eth0 weight 2

# Включить forward
echo 1 > /proc/sys/net/ipv4/ip_forward
=== конец скрипта


=== вывод /sbin/ifconfig
eth0      Link encap:Ethernet  HWaddr XX:XX:XX:XX:YY:XX
          inet addr:192.168.0.195  Bcast:192.168.0.255  Mask:255.255.255.0
          inet6 addr: xxxxxxxxxxxxxxxxxxxxx Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:4882528 errors:0 dropped:0 overruns:0 frame:0
          TX packets:4852570 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:1807257021 (1.6 GiB)  TX bytes:1667394752 (1.5 GiB)
          Interrupt:21 Base address:0x6000

eth0:1    Link encap:Ethernet  HWaddr XX:XX:XX:XX:XX:XX
          inet addr:192.168.1.195  Bcast:192.168.1.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          Interrupt:21 Base address:0x6000

eth1      Link encap:Ethernet  HWaddr XX:XX:XX:XX:XX:XX
          inet addr:62.182.X.Y  Bcast:62.182.X.Z  Mask:255.255.255.252
          inet6 addr: xxxxxxxxxxxxxxxxxxxx Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:3515408 errors:0 dropped:0 overruns:0 frame:0
          TX packets:1371371 errors:0 dropped:0 overruns:0 carrier:0
          collisions:11090 txqueuelen:1000
          RX bytes:993204705 (947.1 MiB)  TX bytes:250501114 (238.8 MiB)
          Interrupt:20 Base address:0xa400

eth1.100  Link encap:Ethernet  HWaddr XX:XX:XX:XX:XX:XX
          inet addr:192.168.100.1  Bcast:192.168.100.7  Mask:255.255.255.248
          inet6 addr: xxxxxxxxxxxxxxxxxxxxx Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:18898 errors:0 dropped:0 overruns:0 frame:0
          TX packets:24132 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:1297122 (1.2 MiB)  TX bytes:32352819 (30.8 MiB)

lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:63621 errors:0 dropped:0 overruns:0 frame:0
          TX packets:63621 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:84760923 (80.8 MiB)  TX bytes:84760923 (80.8 MiB)

# пользовательские подключения:
ppp0      Link encap:Point-to-Point Protocol
          inet addr:192.168.1.195  P-t-P:192.168.1.152  Mask:255.255.255.255
          UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1396  Metric:1
          RX packets:51537 errors:0 dropped:0 overruns:0 frame:0
          TX packets:50700 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:3
          RX bytes:4715996 (4.4 MiB)  TX bytes:14402777 (13.7 MiB)

ppp1      Link encap:Point-to-Point Protocol
          inet addr:192.168.1.195  P-t-P:192.168.1.154  Mask:255.255.255.255
          UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1396  Metric:1
          RX packets:36127 errors:0 dropped:0 overruns:0 frame:0
          TX packets:33257 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:3
          RX bytes:2996923 (2.8 MiB)  TX bytes:6929575 (6.6 MiB)

=== конец /sbin/ifconfig

=== вывод /sbin/route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
192.168.1.152   *               255.255.255.255 UH    0      0        0 ppp0
192.168.1.154   *               255.255.255.255 UH    0      0        0 ppp1
62.182.X.Z      *               255.255.255.252 U     0      0        0 eth1
192.168.100.0   *               255.255.255.248 U     0      0        0 eth1.100
192.168.1.0     *               255.255.255.0   U     0      0        0 eth0
192.168.0.0     *               255.255.255.0   U     0      0        0 eth0
169.254.0.0     *               255.255.0.0     U     0      0        0 eth1
default         62.182.X.Z      0.0.0.0         UG    0      0        0 eth1

=== конец /sbin/route

Ключевой момент: в настройках у eth0 и eth1 не указаны шлюзы (gateway) по-умолчанию.

Скрипт может иметь лишние строчки, но времени на оптимизацию банально нету. И так работает :)

Высказать мнение | Ответить | Правка | ^ | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру