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


Получить помощь и пообщаться с другими пользователями Ubuntu можно
на irc канале #ubuntu-ru в сети Freenode
и в Jabber конференции ubuntu@conference.jabber.ru

Автор Тема: [РЕШЕНО] Вопрос по IPTABLES - 2 pppoe интерфейса......  (Прочитано 4800 раз)

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

Оффлайн drama17

  • Автор темы
  • Любитель
  • *
  • Сообщений: 66
    • Просмотр профиля
Есть 2 pppoe соединения: ppp5 и ppp6. ppp5 основной, в случае, если он недоступен все ходитит через ppp6.
IPTABLES работает, мне надо прикрутить пару правил, чтоб комп из локальной сети с адресом 192.168.0.33 впн-соединения с удаленными виндовыми серваками производил через резервный канал, а весь обычный трафик шел как всегда. Пробовал по-всякому - пока не заработало, а в голове уже каша, да и iptables слабенько знаю, так что если кто-нибудь  сможет помочь, буду благодарен :).

Вот пара примеров того, что я пытался вставить:
$iptables -t nat -I PREROUTING -s 192.168.0.33 -p tcp --dport 1723 -j ACCEPT
$iptables -t nat -I PREROUTING -s 192.168.0.33 -p gre -j ACCEPT
$iptables -t nat -I POSTROUTING -s 192.168.0.33 -o ppp6 -j MASQUERADE

или

iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 1723 -j DNAT --to 192.168.0.33
iptables -t nat -A PREROUTING -i eth1 -p gre -j DNAT --to 192.168.0.33
iptables -t nat -I POSTROUTING -o ppp6 -j MASQUERADE
« Последнее редактирование: 03 Марта 2011, 19:49:14 от drama17 »

Оффлайн drako

  • Старожил
  • *
  • Сообщений: 1422
    • Просмотр профиля
Re: Вопрос по IPTABLES - 2 pppoe интерфейса......
« Ответ #1 : 18 Февраля 2011, 19:15:21 »
Сначала надо статический маршрут на впн сервер, с меньшей чем у маршрута по умолчанию метрикой, создать.

Оффлайн xeon_greg

  • Активист
  • *
  • Сообщений: 981
    • Просмотр профиля
Re: Вопрос по IPTABLES - 2 pppoe интерфейса......
« Ответ #2 : 18 Февраля 2011, 19:15:45 »
смотреть в сторону ip route, ip rule. тебе нужна статическая маршрутизация. iptables - фаервол, у него несколько иные задачи

Оффлайн drama17

  • Автор темы
  • Любитель
  • *
  • Сообщений: 66
    • Просмотр профиля
Re: Вопрос по IPTABLES - 2 pppoe интерфейса......
« Ответ #3 : 18 Февраля 2011, 21:38:09 »
ммм.. а разве я с могу при помощи маршрутизации конкретно только для одной машины и только для коннекта впнов сделать все что мне нужно??
что-то никак не могу сообразить, как это все должно быть организованно.

Пользователь решил продолжить мысль 18 Февраля 2011, 22:19:33:
Цитировать
Сначала надо статический маршрут на впн сервер, с меньшей чем у маршрута по умолчанию метрикой, создать.

этож  все так будут ходить, а надо чтоб только 1 машина!
« Последнее редактирование: 18 Февраля 2011, 22:19:33 от drama17 »

Гарри Кашпировский

  • Гость
Re: Вопрос по IPTABLES - 2 pppoe интерфейса......
« Ответ #4 : 18 Февраля 2011, 22:32:29 »
Как я это вижу.
Используем одновременно два канала, если они доступны и переключаем каналы, если один из них недоступен.
Код: (/home/$user/check) [Выделить]
#!/bin/sh
while :; do
  ch1=`ip a |grep ppp5 |head -n 1 |wc -l`
  ch2=`ip a |grep ppp6 |head -n 1 |wc -l`
  rout=`ip r |grep nexthop |head -n 1 |wc -l`
  if [ $ch1 = 1 ] && [ $ch2 = 1 ] ; then    
    if [ $rout != 1 ]; then
      ip r d default
      ip route add default scope global nexthop dev ppp5 weight 1 nexthop dev ppp6 weight 2
    fi
  elif [ $ch1 = 1 ] && [ $ch2 != 1 ] ; then
    if [ $rout = 1 ]; then
      ip r d default
      ip r a devault dev ppp5
    fi
  elif [ $ch1 != 1 ] && [  $ch2 = 1 ] ; then
    if [ $rout = 1 ]; then
      ip r d default
      ip r a devault dev ppp6
    fi
  fi
  sleep 60
done
Вес каналов меняйте по усмотрению.  Проверка используется только при наличии коммутации (появлении в системе устройств ppp+), можно и по пингам проверять, это уже как кому удобнее.
PS этот скрипт не сигнал к действию, а лишь еще один из вариантов.

Пользователь решил продолжить мысль 18 Февраля 2011, 22:37:02:
PPS Только сейчас подумкал, что можно это в /etc/ppp/ip-up.d/ пользовать, но скрипт переписывать неохота :)

Пользователь решил продолжить мысль 18 Февраля 2011, 22:51:39:
Ах да, я же не читатель :)
Правило с ppp6 вообще верное. При условии пользования iproute2 (ip)
« Последнее редактирование: 18 Февраля 2011, 22:55:55 от KT315 »

Оффлайн drako

  • Старожил
  • *
  • Сообщений: 1422
    • Просмотр профиля
Re: Вопрос по IPTABLES - 2 pppoe интерфейса......
« Ответ #5 : 18 Февраля 2011, 22:51:48 »
этож  все так будут ходить, а надо чтоб только 1 машина!
А вот это уже можно через iptables отсечь, правда можно и головной боли огрести.

Оффлайн Mam(O)n

  • Старожил
  • *
  • Сообщений: 5855
    • Просмотр профиля
Re: Вопрос по IPTABLES - 2 pppoe интерфейса......
« Ответ #6 : 19 Февраля 2011, 00:28:40 »
Если вкратце, то копать в эту сторону:
1. Маркировать vpn трафик этого узла с помощью iptables -t mangle -A PREROUTING ..... -j MARK --set-mark 10
2. Добавить маршрут по умолчанию в таблицу маршрутизации №10 с помощью ip route add default dev ppp6 t 10
3. Добавить правило, которое пакеты с пометкой (10) отправлять по таблице маршрутизации №10 с помощью ip rule add fwmark 10 table 10
4. Убедиться, что эти соединения будут NAT'иться
« Последнее редактирование: 26 Февраля 2011, 23:13:26 от Mam(O)n »

Оффлайн xeon_greg

  • Активист
  • *
  • Сообщений: 981
    • Просмотр профиля
Re: Вопрос по IPTABLES - 2 pppoe интерфейса......
« Ответ #7 : 19 Февраля 2011, 10:21:34 »
Цитировать
ммм.. а разве я с могу при помощи маршрутизации конкретно только для одной машины и только для коннекта впнов сделать все что мне нужно??
что-то никак не могу сообразить, как это все должно быть организованно.
почитай что такое таблицы маршрутизации и правила маршрутизации.
создаешь отдельную таблицу маршрутизации , к примеру reserve, в /etc/iproute2/rt_tables
добавляешь в эту таблицу нужные маршруты в том числе и свой дефолтный через резервный канал и затем c помощью ip rule add
добавляешь правило маршрутизации примерно такого вида
ip rule add from 192.168.0.33 table reserve
 и все  все ходят как и ходили только все с этого хоста ходит через таблицу reserve в которой шлюзом по умолчанию является резервный канал

Пользователь решил продолжить мысль 19 Февраля 2011, 10:30:36:
или же если нужно чтобы только впн соединение этой машины ходило через резерв, тогда в iptables маркируешь пакеты vpn соединения с этой машины , далее опять же добавляешь правило вида
ip rule add fwmark xx table reserve
где xx - марка установленная в iptables и все весь маркированный трафик ходит через опред таблицу маршрутизации с нужным тебе маршрутом по умолчанию
« Последнее редактирование: 19 Февраля 2011, 10:32:01 от xeon_greg »

Оффлайн drama17

  • Автор темы
  • Любитель
  • *
  • Сообщений: 66
    • Просмотр профиля
Re: Вопрос по IPTABLES - 2 pppoe интерфейса......
« Ответ #8 : 19 Февраля 2011, 13:10:17 »
Ну вроде начинаю понимать. В общем почитаю про маршрутизацию и mangle и буду пробовать ;).
Спасибо товарищи!
PS: напишу результат через пару дней.

Оффлайн drama17

  • Автор темы
  • Любитель
  • *
  • Сообщений: 66
    • Просмотр профиля
Re: Вопрос по IPTABLES - 2 pppoe интерфейса......
« Ответ #9 : 21 Февраля 2011, 17:25:44 »
Почти сделал!

Создал таблицу reserv, девайс по умолчанию ppp6 ей прописал. больше ничего. добавил правило: # ip rule add fwmark 10 table reserv, но чего-то немного не хватает - при подключении впн ошибка 800 и все :(

Правила в iptables добавил такие:

iptables -t mangle -A PREROUTING -i eth1 -s 192.168.0.33 -p tcp --dport 1723 -j MARK --set-mark 10
iptables -t mangle -A PREROUTING -i eth1 -s 192.168.0.33 -p gre -j MARK --set-mark 10

tcpdump показал такое:
# tcpdump -i eth1 | grep 192.168.0.33 | grep 1723
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth1, link-type EN10MB (Ethernet), capture size 96 bytes
16:09:01.754522 IP 192.168.0.33.4922 > 55-213-94-178.pool.ukrtel.net.1723: Flags [S], seq 159631433, win 64240, options [mss 1460,nop,nop,sackOK], length 0
16:09:04.967962 IP 192.168.0.33.4922 > 55-213-94-178.pool.ukrtel.net.1723: Flags [S], seq 159631433, win 64240, options [mss 1460,nop,nop,sackOK], length 0
16:09:10.676368 IP 192.168.0.33.4922 > 55-213-94-178.pool.ukrtel.net.1723: Flags [S], seq 159631433, win 64240, options [mss 1460,nop,nop,sackOK], length 0


PS: ppp5 - beeline, ppp6 - utk

PPS: еще немного инфы:

# ip rule list
0: from all lookup local
32764: from all fwmark 0xa lookup reserv
32765: from all fwmark 0xa lookup default
32766: from all lookup main
32767: from all lookup default
########################################################### -=- 2.6.32-28-generic-pae -=- Ubuntu 10.04.2 -=- root 16:30:07] ~/bin
# ip route list table reserv
default dev ppp6  scope link


Пользователь решил продолжить мысль 21 Февраля 2011, 18:25:58:
Когда добавлял ip rule add from 192.168.0.33 table reserv  клиент ходил через укртелеком


Как-будто не натятся...

Пользователь решил продолжить мысль 21 Февраля 2011, 20:22:59:
iptables -t mangle -A PREROUTING -i eth1 -s 192.168.0.33 -j MARK --set-mark 10

При таком раскладе то же самое -чего-то явно не хватает.

Пользователь решил продолжить мысль 22 Февраля 2011, 17:25:51:
Внешний интерфейс 178.94.х.х пинаю
« Последнее редактирование: 22 Февраля 2011, 17:25:51 от drama17 »

Оффлайн drama17

  • Автор темы
  • Любитель
  • *
  • Сообщений: 66
    • Просмотр профиля
Re: Вопрос по IPTABLES - 2 pppoe интерфейса......
« Ответ #10 : 25 Февраля 2011, 20:12:35 »
Вопрос все еще актуален и весьма!
Пока что ничего, что реально помогло бы не придумал... не пойму где застряет, но считаю с маршрутизацией все ок. скорее всего обратные пакеты идут куда-то не туда.

C:\Documents and Settings\Admin>tracert ya.ru

Трассировка маршрута к ya.ru [87.250.250.3]
с максимальным числом прыжков 30:

  1     1 ms     1 ms    <1 мс  192.168.0.1
  2     *        *        *     Превышен интервал ожидания для запроса.

Гарри Кашпировский

  • Гость
Re: Вопрос по IPTABLES - 2 pppoe интерфейса......
« Ответ #11 : 25 Февраля 2011, 20:14:41 »
ip r

Оффлайн drama17

  • Автор темы
  • Любитель
  • *
  • Сообщений: 66
    • Просмотр профиля
Re: Вопрос по IPTABLES - 2 pppoe интерфейса......
« Ответ #12 : 26 Февраля 2011, 00:01:05 »
# ip r
94.27.x.x dev ppp5  proto kernel  scope link  src 46.118.x.x
195.5.5.203 dev ppp6  proto kernel  scope link  src 94.179.x.x
192.168.3.0/24 via 192.168.0.235 dev eth1
192.168.2.0/24 via 10.x.x.10 dev tap0
192.168.1.0/24 via 10.x.x.10 dev tap0
192.168.0.0/24 dev eth1  proto kernel  scope link  src 192.168.0.1
192.168.252.0/24 via 10.x.x.29 dev tap0
10.61.x.0/24 dev eth0  proto kernel  scope link  src 10.61.x.x
192.168.254.0/24 via 10.x.x.30 dev tap0
192.168.255.0/24 via 10.x.x.10 dev tap0
10.x.0.0/16 dev tap0  proto kernel  scope link  src 10.x.x.1
10.0.0.0/8 via 10.61.x.x dev eth0
default dev ppp5  scope link

# ip route list table reserv
94.27.x.x dev ppp5 proto kernel  scope link  src 46.118.x.x
195.5.5.203 dev ppp6  proto kernel  scope link  src 94.179.x.x
192.168.1.0/24 via 10.x.x.x dev tap0
192.168.0.0/24 dev eth1  proto kernel  scope link  src 192.168.0.1
10.61.x.x/24 dev eth0  proto kernel  scope link  src 10.61.x.x
10.0.0.0/8 via 10.61.x.x dev eth0
default via 94.179.x.x dev ppp6
« Последнее редактирование: 26 Февраля 2011, 00:04:00 от drama17 »

Оффлайн Mam(O)n

  • Старожил
  • *
  • Сообщений: 5855
    • Просмотр профиля
Re: Вопрос по IPTABLES - 2 pppoe интерфейса......
« Ответ #13 : 26 Февраля 2011, 12:00:05 »
Ну с reserv явно переборщил. Первый раз, когда там был единственный дефолтный маршрут через ppp6, было правильно. А что творится в таблицах файрвола (sudo iptables-save)?

Оффлайн drama17

  • Автор темы
  • Любитель
  • *
  • Сообщений: 66
    • Просмотр профиля
Re: Вопрос по IPTABLES - 2 pppoe интерфейса......
« Ответ #14 : 26 Февраля 2011, 13:10:05 »
Ну в резерв накидал уже в конце, на всякий случай (в принципе если в правило весь ип добавить, ходило и с 1 маршрутом).

Пользователь решил продолжить мысль 26 Февраля 2011, 13:17:13:
#!/bin/sh
iptables='/sbin/iptables'
out_ifs='ppp5 ppp6'

$iptables -F
$iptables -t nat -F
$iptables -t mangle -F

for tif in $out_ifs ; do
        $iptables -t nat -A POSTROUTING -o $tif -s 192.168.0.0/16 ! -d 192.168.0.0/16 -j MASQUERADE
        #MTU fix
        $iptables -t mangle -A POSTROUTING -p tcp --tcp-flags SYN,RST SYN -o $tif -j TCPMSS --set-mss 1400
        $iptables -t nat -A PREROUTING -i $tif -j DNAT --to-destination 192.168.0.33                                       ## Эту строку пробовал комментировать
done


ports='22 21 20 80 1723 5280 5222 5666'
for port in $ports; do                                                                                                                           ## Этот блок пробовал комментировать
        $iptables -t nat -I PREROUTING -i eth0 -p tcp --dport $port -j RETURN
        for tif in $out_ifs ; do
                $iptables -t nat -I PREROUTING -i $tif -p tcp --dport $port -j RETURN
        done
done

$iptables -t nat -I PREROUTING -s 85.90.x.x -p icmp -j RETURN

#Openvpn
$iptables -t nat -I PREROUTING -p tcp --dport 1194 -j RETURN
$iptables -t nat -I POSTROUTING -o tap0 -j MASQUERADE

#$iptables -t mangle -I PREROUTING -s 192.168.0.33 -p tcp --dport 1723 -j MARK --set-mark 10
$iptables -t mangle -I PREROUTING -s 192.168.0.33 -j MARK --set-mark 10

#block netbios
$iptables -I INPUT -i tap0 -s 192.168.0.0/16 -p tcp --dport 135 -j DROP
$iptables -I INPUT -i tap0 -s 192.168.0.0/16 -p tcp --dport 139 -j DROP
$iptables -I INPUT -i tap0 -s 192.168.0.0/16 -p tcp --dport 445 -j DROP


« Последнее редактирование: 26 Февраля 2011, 13:20:59 от drama17 »

 

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