маршрутизация через 2 провайдера

Обсуждение настройки и работы сервисов, резервирования, сетевых настроек и вопросов безопасности ОС для молодых и начинающих системных администраторов.

Модераторы: SLEDopit, Модераторы разделов

pelmen
Сообщения: 1268
ОС: debian

маршрутизация через 2 провайдера

Сообщение pelmen »

У компьютера 2 сети:
eth0: 192.168.0.250 - локалка, в которой есть шлюз 192.168.0.1
eth1: 62.5.246.190 - внешний интернет с шлюзом (маршрут по умолчанию) 62.5.246.189
Все в локалке выходят в инет через этот сервер (нат, форвардинг), а 192.168.0.1 - это старый резервный, на него вручную шлюз переключают при недоступности другого.

На этом компе висит openvpn-сервер (tun0, 10.7.0.1) Вот я и решил поиграться (потренероваться).
Захотел осуществить такую простую схему: подключаюсь по впн и по http в интернет выхожу через 192.168.0.1 (сейчас через 62.5.246.189).

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

iptables -t mangle -A PREROUTING -i tun0 -p tcp -m tcp --dport 80 -j MARK --set-xmark 0x2
iptables -t nat -A POSTROUTING -o eth0 -p tcp -m tcp --dport 80 -j SNAT --to-source 192.168.0.250
echo 200 John >> /etc/iproute2/rt_tables
ip ru add fwmark 2 table John
ip ro ad default via 192.168.0.1 dev eth0 table John
ip ro flush cache
При таких правилах ничего не работает. Висит просто, будто пакеты в обратном направлении не идут :(
В моих правилах iptables кол-во пакетов увеличивается при попытках подключений, значит не в этом дело.

Если сделать

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

ip ru del fwmark 2
ip ru add from 10.7.0.6 table John
то работает так, как надо. Но почему через fwmark не работает?

Делал по ссылке
Спасибо сказали:
Аватара пользователя
Alex2ndr
Сообщения: 443
ОС: Debian Lenny

Re: маршрутизация через 2 провайдера

Сообщение Alex2ndr »

А маркировать по другим условиям пробовали?

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

iptables -t mangle -A PREROUTING -s 10.7.0.6 -j MARK --set-xmark 0x2

И еще момент - мне кажется что еще можно записать так

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

iptables -t mangle -A PREROUTING -s 10.7.0.6 -j MARK --set-mark 2

тоже попробуйте
Спасибо сказали:
pelmen
Сообщения: 1268
ОС: debian

Re: маршрутизация через 2 провайдера

Сообщение pelmen »

iptables -t mangle -D PREROUTING 1
iptables -t mangle -A PREROUTING -s 10.7.0.6 -j MARK --set-mark 2
ip ru
0: from all lookup local
32765: from 10.7.0.6 lookup John
32766: from all lookup main
32767: from all lookup default
root@orbitaserver:~# ip ru del from 10.7.0.6
root@orbitaserver:~# ip ru add fwmark 2 table John
root@orbitaserver:~# ip ro flush cache

не работает. Тот же эффект - висит пустая страница на любом сайте.
Спасибо сказали:
Аватара пользователя
Alex2ndr
Сообщения: 443
ОС: Debian Lenny

Re: маршрутизация через 2 провайдера

Сообщение Alex2ndr »

tcpdump на eth0 - смотреть куда и как идут пакеты. Проверять доступность страницы пингами.
Спасибо сказали:
pelmen
Сообщения: 1268
ОС: debian

Re: маршрутизация через 2 провайдера

Сообщение pelmen »

Я даже traceroute пробовал. 10.7.0.1 отвечает, а дальше нет.
А почему tcpdump на eth0? Я с этим инструментом на ВЫ :)
Спасибо сказали:
Аватара пользователя
Alex2ndr
Сообщения: 443
ОС: Debian Lenny

Re: маршрутизация через 2 провайдера

Сообщение Alex2ndr »

pelmen писал(а):
15.02.2010 11:12
А почему tcpdump на eth0? Я с этим инструментом на ВЫ :)

На eth0 чтобы проверить выходят ли пакеты через нужный интерфейс - а самое главное что возвращается. Если там еще какой-нить трафик идет то можно grep 10.7.0.6 . Отличный способ перейти с инструментом на ТЫ - пользоваться им.
Конкретная команда будет такая -

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

# tcpdump -n -i eth0


Есть еще отличный способ обойтись без grep если вывод сильно забит трафиком. Использовать

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

# tcpdump -n -i eth0 -w filedump.out

Потом перекинуть filedump.out на машину с которой работаете и использовать Wireshark (В Debian есть в стандартном репе). Очень удобно смотреть трафик.
Спасибо сказали: