Форум русскоязычного сообщества Ubuntu


Хотите сделать посильный вклад в развитие Ubuntu и русскоязычного сообщества?
Помогите нам с документацией!

Автор Тема: Снова 2 провайдера и опять не работает. ["РЕШЕНО"]  (Прочитано 2123 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн SuperXL

  • Автор темы
  • Новичок
  • *
  • Сообщений: 8
    • Просмотр профиля
Приветствую всех !
Сразу прошу прощения за поднятие изжеванной темы, но...

Задача: Есть 2 провайдера, сервер (Ubuntu server 9.04), локальная сеть, DMZ - всем этим делом рулить, то есть раздавать инет пользователям (одним к первому провайдеру, другим ко второму)

Внутреннее убранство сервера:
eth0 - 192.168.0.201                                  Локальная сеть         192.168.0.0/24
eth1 - 192.168.1.2 (гейт 192.168.1.1)*         Первый провайдер    192.168.1.0/24
eth2 - 192.168.2.2                                      DMZ                          192.168.2.0/24
eth3 - 192.168.10.22 (гейт 192.168.10.1)*    Второй провайдер     192.168.10.0/24  

*Гейты по умолчанию в файле interfaces НЕ указаны, т.к. они прописаны в таблицах маршрутизации (Т1 и Т2)

Настройки маршрутизации:
#!/bin/sh

ip route flush table T1            
ip route flush table T2            

ip route add 192.168.1.0/24 dev eth1 src 192.168.1.2 table T1    
ip route add 192.168.0.0/24 dev eth0 table T1            
ip route add 192.168.10.0/24 dev eth3 src 192.168.10.22 table T1            
ip route add 127.0.0.0/8 dev lo table T1            
ip route add default via 192.168.1.1 dev eth1 table T1            

ip route add 192.168.10.0/24 dev eth3 src 192.168.10.22 table T2    
ip route add 192.168.0.0/24 dev eth0 table T2            
ip route add 192.168.1.0/24 dev eth1 src 192.168.1.2 table T2            
ip route add 127.0.0.0/8 dev lo   table T2            
ip route add default via 192.168.10.1 dev eth3 table T2            

ip route add 192.168.1.0/24 dev eth1 src 192.168.1.2    
ip route add 192.168.10.0/24 dev eth3 src 192.168.10.22    
#ip route add default via 192.168.1.1 dev eth1            
            
ip rule delete table T1        
ip rule delete table T2        
ip rule delete table T1        
ip rule delete table T2        
            
ip rule add from 192.168.1.2 table T1    
ip rule add from 192.168.10.22 table T2    
            
ip rule add fwmark 10 table T1    
ip rule add fwmark 11 table T2    
            
ip route flush cache    
echo 1 >/proc/sys/net/ipv4/ip_forward

exit 0

Настройки Iptables
#! /bin/sh
echo "Starting FireWall:"

echo "0" > /proc/sys/net/ipv4/ip_forward

iptables -t mangle -A PREROUTING -s 192.168.0.0/24 -j MARK --set-mark 11

iptables -t nat -A POSTROUTING -o eth1 -j SNAT --to-source 192.168.1.2
iptables -t nat -A POSTROUTING -o eth3 -j SNAT --to-source 192.168.10.22

echo "1" > /proc/sys/net/ipv4/ip_forward

echo "[Done !]"
exit 0

Проблема:
При попытке пропинговать Яндекс, пакеты с компа (192.168.0.10) в локальной сети уходят на сервер (192.168.0.201 - шлюз для локалки), потом натяться (192.168.0.201 -> 192.168.10.2) и отправляются в инет (192.168.1.2 -> (шлюз - 192.168.10.1) -> инет (яндекс)), возвращаются обратно (от яндекса -> (через шлюз)192.168.10.1 -> 192.168.10.2) и "оседают" на этом интерфейсе, то есть складывается такое впечатление, что не происходит обратного преобразования, то есть (192.168.10.2 -> 192.168.0.201 ->192.168.0.10). В результате на клиентской машине "Превышен интервал для ожидания для запроса".
То, что пакеты "оседают" на интерфейсе проверено tcpdump'ом.  

Сервер настраиваю дома, т.к. на работе нет такой возможности (экспериментировать), соответственно дома тока одно инет подключение. Я имитирую 2 подключения путем соединения сервера с домашним компом по первому каналу, и через вай-фай по второму.
Топология "2-х провайдеров" такая:

1 "провайдер":
[инет -> АДСЛ модем (192,168,10,1)  -> Вай-Фай (точка доступа 192,168,10,50)] -> (Домашний комп - (192,168,10,2)  ->FireSatrter -> Сетевая карточка (192,168,1,1) -> сервер (192.168.1.2)

2 "провайдер":
[инет -> АДСЛ модем (192,168,10,1)  -> Вай-Фай (точка доступа 192,168,10,50)] -> (Вай-Фай в режиме клиента - (192,168,10,51)  -> сервер (192.168.10.22)

Как только я указываю шлюз по умолчанию в основной таблице маршрутизации на любом из "провайдерских" интерфейсов в сервере, все замечательно работает, и локалка (только по тому интерфейсу что по умаолчанию в основной таблице маршрутизации) и сервак. Тоесть мои виртуальные провайдеры работают, даже если я указываю 2 шлюза по умолчанию и пингую через разные интерфейсы (на самом сервере)все идет как надо, но не работает локалка. Как только коментирую шлюз по умолчаинию, все, тишина на сервере (так и должно быть, сообщает, что сеть (инет) недоступна) а вот из локалки (в зависимости от установленой марки (10 или 11) пакеты уходят правильно по таблицам маршрутизации НО "оседают"при ответе яндекса и дальше не идут, не натяться в обратном направлении.

Вопрос: где грабли, что не так, куда копать? ???

PS. Уже неделю борюсь, читал и маны, и гуглил, и форумов перевернул немеряно, все напрасно.
« Последнее редактирование: 07 Сентября 2009, 20:22:29 от SuperXL »

Оффлайн Unreg

  • Активист
  • *
  • Сообщений: 751
  • Ubuntu 8.04 / Acer Aspire One 110 > Debian 5.04
    • Просмотр профиля
    • LJ
Re: Снова 2 провайдера и опять не работает.
« Ответ #1 : 04 Сентября 2009, 00:24:14 »
ip r
ip ru
?

Пользователь решил продолжить мысль 03 Сентября 2009, 20:25:34:
cat /etc/iproute2/rt_tables

Пользователь решил продолжить мысль 03 Сентября 2009, 22:27:03:
echo "0" > /proc/sys/net/ipv4/ip_forward

Пользователь решил продолжить мысль 04 Сентября 2009, 00:27:29:
зачем сначала вырубать то
« Последнее редактирование: 04 Сентября 2009, 00:27:29 от Unreg »

Оффлайн SuperXL

  • Автор темы
  • Новичок
  • *
  • Сообщений: 8
    • Просмотр профиля
Re: Снова 2 провайдера и опять не работает.
« Ответ #2 : 04 Сентября 2009, 00:40:13 »
root@inet-servak:~# ip r
192.168.2.0/24 dev eth2  proto kernel  scope link  src 192.168.2.2
192.168.1.0/24 dev eth1  proto kernel  scope link  src 192.168.1.2
192.168.0.0/24 dev eth0  proto kernel  scope link  src 192.168.0.201
192.168.10.0/24 dev eth3  proto kernel  scope link  src 192.168.10.22

root@inet-servak:~# ip ru
0: from all lookup local
32762: from all fwmark 0xb lookup T2
32763: from all fwmark 0xa lookup T1
32764: from 192.168.10.22 lookup T2
32765: from 192.168.1.2 lookup T1
32766: from all lookup main
32767: from all lookup default

root@inet-servak:~# cat /etc/iproute2/rt_tables
#
# reserved values
#
255 local
254 main
253 default
0 unspec
#
# local
#
#1 inr.ruhep

10      T1
20      T2

echo "0" > /proc/sys/net/ipv4/ip_forward
осталось от "экспериментов", + где-то вычитал, что повышает секьюрность...


Пользователь решил продолжить мысль 04 Сентября 2009, 18:35:28:
Заметил еще такую вещь, если я указываю 2 шлюза по умолчанию, то локалка работает через тот, который в выводе команды route -n идет раньше.
« Последнее редактирование: 04 Сентября 2009, 18:35:28 от SuperXL »

Оффлайн Unreg

  • Активист
  • *
  • Сообщений: 751
  • Ubuntu 8.04 / Acer Aspire One 110 > Debian 5.04
    • Просмотр профиля
    • LJ
Re: Снова 2 провайдера и опять не работает.
« Ответ #3 : 04 Сентября 2009, 21:44:25 »
делал по этой статье
http://habrahabr.ru/blogs/linux/54748/

Оффлайн SuperXL

  • Автор темы
  • Новичок
  • *
  • Сообщений: 8
    • Просмотр профиля
Re: Снова 2 провайдера и опять не работает.
« Ответ #4 : 05 Сентября 2009, 02:16:37 »
По сути тоже самое, просто в той статье порядок занесений маршрутов и правил в таблицы раскидан, а у меня сгруппирован для удобочитаемости.... Маскарадить тоже пробывал и по метке и по интерфейсу...

Пользователь решил продолжить мысль 05 Сентября 2009, 21:21:41:
Все заработало !

Как подсказали на одном из форумов, необходимо выполнить вот такой скрипт


for it in /proc/sys/net/ipv4/conf/*/rp_filter; do
    echo 0 > $it
done

ВНИМАНИЕ ! данный скрипт снижает безопасность системы, если не принимать дополнительных мер в фильтрации входящего трафика из интернета !
« Последнее редактирование: 05 Сентября 2009, 21:21:41 от SuperXL »

Оффлайн AnrDaemon

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 28511
    • Просмотр профиля
А что именно делает этот скрипт?
Хотите получить помощь? Потрудитесь представить запрошенную информацию в полном объёме.

Прежде чем [Отправить], нажми [Просмотр] и прочти собственное сообщение. Сам-то понял, что написал?…

Оффлайн SuperXL

  • Автор темы
  • Новичок
  • *
  • Сообщений: 8
    • Просмотр профиля
Этот скрипт отключает проверку обратного адреса. Вот тут это описано.
http://gazette.linux.ru.net/rus/articles/lartc/c1699.html#REVERSEPATHFILTERING

 

Страница сгенерирована за 0.033 секунд. Запросов: 24.