Имя:    Пароль:      Помнить меня       
Unsorted   ~  Software  ~  Linux and Unix  ~  Маршрутизация в Ubuntu mini HOWTO UPD 18.04.2009
На страницу «  1, 2, 3, 4, 5
DALDON
Сообщение  18 Сен 2007, 21:02  Ссылка : Ответить с цитатой
Пол: Мужской  Доверенный пользователь
C нами с 09.04.2005
Репутация: 0.1

ВНИМАНИЕ ПОСТ ОБНОВЛЁН 18.04.2009. - Добавлен способ получения маршрутов от провайдера "Прогтех" от DHCP сервера автоматически, как это делается в OS Windows.


Учитывая, что у многих безлимитые тарифы я думаю это будет очень полезно.

Как надо делать чтобы таблица маршрутиризции Вашего провайдера поднималась при старте системы, а так-же как надо сделать так, чтобы и подключение по VPN поднималось автоматом.



Сначала предлагаю немного общих сведений http://forum.ubuntu.ru/index.php?topic=12454.0 - это база с которой надо ознакомится.

Цитата:
Ну достали уже с этой маршрутизацией.
Правила маршрутизации определяют, куда отправлять IP-пакеты. Данные маршрутизации хранятся в одной из таблиц ядра. Вести таблицы маршрутизации можно статически или динамически. Статический маршрут — это маршрут, который задается явно с помощью команды route. Динамическая маршрутизация выполняется процессом-демоном (routed или gated), который ведет и модифицирует таблицу маршрутизации на основе сообщений от других компьютеров сети. Для выполнения динамической маршрутизации разработаны специальные протоколы: RIP, OSPF, IGRP, EGP, BGP и т. д.

Динамическая маршрутизация необходима в том случае, если у вас сложная, постоянно меняющаяся структура сети и одна и та же машина может быть доступна по различным интерфейсам (например, через разные Ethernet или SLIP интерфейсы). Маршруты, заданные статически, обычно не меняются, даже если используется динамическая маршрутизация.

Для персонального компьютера, подключаемого к локальной сети, в большинстве ситуаций бывает достаточно статической маршрутизации командой route. Прежде чем пытаться настраивать маршруты, просмотрите таблицу маршрутизации ядра с помощью команды netstat -n -r. Вы должны увидеть что-то вроде следующего

Код:
rigon@ubuntu-comp:~$ netstat -n -r
Таблица маршутизации ядра протокола IP
Destination Gateway Genmask Flags MSS Window irtt Iface
192.168.254.0   0.0.0.0         255.255.255.0   U         0 0          0 eth1
192.168.254.0   0.0.0.0         255.255.255.0   U         0 0          0 eth0
169.254.0.0     0.0.0.0         255.255.0.0     U         0 0          0 eth1
0.0.0.0         192.168.254.1   0.0.0.0         UG        0 0          0 eth0
0.0.0.0         192.168.254.1   0.0.0.0         UG        0 0          0 eth1


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

Код:
[b]route[/b] [[b]-f[/b]] операция [[b]-тип[/b]] адресат шлюз [[b]dev[/b]] интерфейс

Здесь аргумент операция может принимать одно из двух значений: add (маршрут добавляется) или delete (маршрут удаляется). Аргумент адресат может быть IP-адресом машины, IP-адресом сети или ключевым словом default . Аргумент шлюз — это IP-адрес компьютера, на который следует пересылать пакет (этот компьютер должен иметь прямую связь с вашим компьютером). Команда
Код:
route -f

удаляет из таблицы данные обо всех шлюзах. Необязательный аргумент тип принимает значения net или host . В первом случае в поле адресата указывается адрес сети, а во втором — адрес конкретного компьютера (хоста).
Как правило, бывает необходимо настроить маршрутизацию по упоминавшимся выше трем интерфейсам:

* локальный интерфейс (lo),
* интерфейс для платы Ethetnet (eth0),
* интерфейс для последовательного порта (PPP или SLIP).

Локальный интерфейс поддерживает сеть с IP-номером 127.0.0.1. Поэтому для маршрутизации пакетов с адресом 127.... используется команда:
Код:
route add -net 127.0.0.1 lo


Если у вас для связи с локальной сетью используется одна плата Ethernet, и все машины находятся в этой сети (сетевая маска 255.255.255.0), то для настройки маршрутизации достаточно вызвать:
Код:
route add -net 192.168.36.0 netmask 255.255.255.0 eth0


Если же вы имеете насколько интерфейсов, то вам надо определиться с сетевой маской и вызвать команду route для каждого интерфейса.

Поскольку очень часто IP-пакеты с вашего компьютера могут отправляться не в одну единственную сеть, а в разные сети (например, при просмотре разных сайтов в Интернете), то в принципе надо было бы задать очень много маршрутов. Очевидно, что сделать это было бы очень сложно, точнее просто невозможно. Поэтому решение проблемы маршрутизации пакетов перекладывают на плечи специальных компьютеров — маршрутизаторов, а на обычных компьютерах задают маршрут по умолчанию, который используется для отправки всех пакетов, не указанных явно в таблице маршрутизации. С помощью маршрута по умолчанию вы говорите ядру "а все остальное отправляй туда". Маршрут по умолчанию настраивается следующей командой:
Код:
route add default gw 192.168.1.1 eth0


Опция gw указывает программе route, что следующий аргумент - это IP-адрес или имя маршрутизатора, на который надо отправлять все пакеты, соответствующие этой строке таблицы маршрутизации.

Вот немного теории с сайта linuxcenter.ru
А теперь пример из жизни
Имеются следующие интерфейсы /etc/network/interface
Код:
auto lo
iface lo inet loopback

auto eth0
iface eth0 inet static
address 192.168.17.8
hwaddress ether 00:E0:4C:A2:C4:48
netmask 255.255.255.0
broadcast 192.168.17.255

auto eth1
iface eth1 inet static
address 192.168.254.2
netmask 255.255.255.0
gateway 192.168.254.1
broadcast 192.168.254.255

Интерфейс eth0 это связь с локальной сетью состоящей из 20 подсетей 192.168.1.х-192.168.20.х
Интерфейс eth1 это связь с ADSL модемом с выходом в интернет. Так большинство запросов идут в Инет на этом интерфейсе прописываем шлюз (gateway 192.168.254.1) данный параметр указывает в системе шлюз по-умолчанию, обращаю внимание, что шлюз надо прописывать только на одном интерфейсе, иначе в системе появятся 2 маршрута по умолчанию и естно будет затупление в работе. С интернетом разобрались.
Но требуется еще просматривать ресурсы локальной сети
для этого надо выполнить вот эти команды
Код:
route add -net 192.168.1.0 netmask 255.255.255.0 gw 192.168.17.254 eth0
route add -net 192.168.12.0 netmask 255.255.255.0 gw 192.168.17.254 eth0
route add -net 192.168.21.0 netmask 255.255.255.0 gw 192.168.17.254 eth0

На этом примере маршрутизируются 3 подсети
Все эти команды и многие другие можно прописать в файлк /etc/interface в итоге получится следующее:
Код:
auto lo
iface lo inet loopback

auto eth0
iface eth0 inet static
address 192.168.17.8
hwaddress ether 00:E0:4C:A2:C4:48
netmask 255.255.255.0
broadcast 192.168.17.255
up route add -net 192.168.1.0 netmask 255.255.255.0 gw 192.168.17.254 eth0
up route add -net 192.168.12.0 netmask 255.255.255.0 gw 192.168.17.254 eth0
up route add -net 192.168.21.0 netmask 255.255.255.0 gw 192.168.17.254 eth0

auto eth1
iface eth1 inet static
address 192.168.254.2
netmask 255.255.255.0
gateway 192.168.254.1
broadcast 192.168.254.255
Ну вот и все по аналогии настраиваются любое кол-во маршрутов и сетевых интерфейсов


Это уже о многом говорит, это очень простое и понятное объяснение на мой взгляд. Напомню речь идёт о /etc/network/interfaces

Понятно дело, что в Ubuntu надо делать так -
sudo gedit /etc/network/interfaces



Обращаю Ваше внимание на то, что надо не забывать про синтаксисы - pre-up, up, post-up, pre-down, down, post-down перед добавляемыми Вами командами!

Теперь ближе к теме, вот показываю как выглядит этот файл у меня выходящей в Сеть через Nat -
auto lo
iface lo inet loopback

auto eth0
iface eth0 inet dhcp
up route add -net 10.0.0.0/8 gw 192.168.0.1
up route add -net 62.117.80.120/29 gw 192.168.0.1
up route add -net 62.117.85.0/24 gw 192.168.0.1
up route add -net 82.138.6.0/29 gw 192.168.0.1
up route add -net 80.252.152.0/22 gw 192.168.0.1
up route add -net 80.252.150.0/23 gw 192.168.0.1
post-up route del default gw 192.168.0.1
post-up pptp hobo.progtech.ru

auto eth1
iface eth1 inet dhcp

auto eth2
iface eth2 inet dhcp

auto ath0
iface ath0 inet dhcp

auto wlan0
iface wlan0 inet dhc 


Разумеется шлюз надо будет немного поменять в соответствии с Вашим сегментом.

Например для Ip вида 10.100.7.99 - Это будет выглядеть так -
auto lo
iface lo inet loopback

auto eth0
iface eth0 inet dhcp
up route add -net 10.0.0.0/8 gw 10.100.7.1
up route add -net 62.117.80.120/29 gw 10.100.7.1
up route add -net 62.117.85.0/24 gw 10.100.7.1
up route add -net 82.138.6.0/29 gw 10.100.7.1
up route add -net 80.252.152.0/22 gw 10.100.7.1
up route add -net 80.252.150.0/23 gw 10.100.7.1
post-up route del default gw 10.100.7.1
post-up pptp hobo.progtech.ru

auto eth1
iface eth1 inet dhcp

auto eth2
iface eth2 inet dhcp

auto ath0
iface ath0 inet dhcp

auto wlan0
iface wlan0 inet dhc

Вот, я думаю, что всё понятно, но дело ещё в том, что я опустил
eth0
- после указания маршрута, но думаю, если одна карта Сетевая то это не будет принципиально, а вот если несколько то надо будет указать на всякий случай думаю.

Теперь при старте Системы у меня поднимается VPN и локалка.

Я думаю как опускать поднятый VPN все знают, при это хочу отметить, что Локальная Сеть не падает, и потом снова можно поднять VPN всё будет работать как надо.

Думаю, что это будет полезно всем мигрантам с Windows на Ubuntu Linux.

Получение маршрутов от провайдера "Прогтех" от DHCP сервера автоматически, как это делается в OS Windows.


Предисловие: я был удивлён когда узнал, что компьютеры под управлением OS Windows ничего уже давно не знают про маршрутизацию... Мне стало интересно, и оказывается компьютер под управлением OS Windows получает маршруты автоматически... И мне стало интересно, каким образом это реализованно, сначало подумал про RIP2, но затем решил уточнить в технической поддержке провайдера "Прогтех" через HELPDESK, очень быстро получил ответ на свой вопрос от Специалиста технической поддержки пользователей, чему был рад.

Приступим к настройке: Маршруты отдаются в DHCP-пакете. Опция номер 249.
Подробности раздачи таким образом можно посмотреть тут: RFC-3442, но там речь идёт про опцию 121, но почему мы говорим про опцию 249?
Ответ:
Цитата:
На самом деле "правильно" передавать все то же самое, но в опции 121. 249 забила Microsoft, когда стандарт (classless static routes) был еще в драфте. Так до сих пор и работает.
(c)Техническая поддержка "Прогтех".

Для клиентов, использующих операционные системы Linux и BSD эта возможность доступна после установки и небольшой модификации конфигурационных файлов DHCP клиентов dhcp-client или dhcp3-client. - О том как получить эти пакеты смотрите в документации Вашего дистрибутива.

Настроим на примере Ubuntu 8.04.2:

1. Закоментируем строки добавления статических маршрутов в файле (если ранее Вы добавляли маршруты по первому способу описанному мной здесь):

sudo nano /etc/network/interfaces
Установив знак "#" в строках добавления маршрутов.

Примерно это выглядет так:

auto lo
iface lo inet loopback

iface eth0 inet dhcp

pre-up iptables-restore < /etc/iptables.up.rules
#up route add -net 10.0.0.0/8 gw 10.100.X.X
#up route add -net 172.16.0.0/12 gw 10.100.X.X
#up route add -net 62.117.80.120/29 gw 10.100.X.X
#up route add -net 62.117.85.0/24 gw 10.100.X.X
#up route add -net 80.252.152.0/22 gw 10.100.X.X
#up route add -net 93.185.192.0/20 gw 10.100.X.X
#up route add -net 85.112.113.96/28 gw 10.100.X.X
post-up route del default gw 10.100.X.X
post-up pptp hobo.progtech.ru


auto eth0

auto eth1


Лишнее я отсюда не выводил. Смысл такой, что мы убираем добавление маршрутов, но при этом оставляем:
post-up route del default gw 10.100.X.X
post-up pptp hobo.progtech.ru


Я убираю для VPN маршрут по умолчанию командой
post-up route del default gw 10.100.X.X

для того чтобы созданное pptp соединение было маршрутом по умолчанию, остальные маршруты мы ведь уже получим автоматически... Локальный траффик пойдёт на eth интерфейс, остальной через pptp.

X - Ваши адреса.

Для справки: Windows так делает уже по умолчанию, там есть галочка которая уже активированна по умолчанию "Дополнительные параметры TCP/IP" на вкладке "Общие" свойств протокола TCP/IP каждого из созданных VPN соединений.



2. Создайте в каталоге /etc/dhcp3/dhclient-exit-hooks.d (/etc/dhcp/dhclient-exit-hooks.d для клиента dhcp-client)
файл rfc3442-classless-static-routes следующего содержания:

Создаём:

sudo nano /etc/dhcp3/dhclient-exit-hooks.d/rfc3442-classless-static-routes


Вставляем туда код:

 if [ x"$new_rfc3442_classless_static_routes" != x"" ]; then
  case $reason in BOUND|RENEW|REBIND|REBOOT)
    rfc_routes=($new_rfc3442_classless_static_routes)
    for(( i=0; i < ${#rfc_routes[@]}; )); do
      net_length=${rfc_routes[$i]}
      ((i++))

      net_address=(0 0 0 0)
      for(( j=0; j < $[$net_length / 8 + \
        ($net_length % 8 ? 1 : 0)]; j++, i++)); do
         net_address[$j]=${rfc_routes[$i]}
      done

      gateway=(0 0 0 0)
      for (( j=0; j < 4; j++, i++ )); do
        gateway[$j]=${rfc_routes[$i]}
      done

      old_IFS="$IFS"
      IFS='.'

      if [ x"$net_length" == x"32" ]; then
        /sbin/route add -host "${net_address[*]}" gw "${gateway[*]}"
      else
        /sbin/route add -net "${net_address[*]}/$net_length" gw "${gateway[*]}"
      fi
      IFS="$old_IFS"
    done
  esac
fi


3. В конфигурационный файл /etc/dhcp3/dhclient.conf (/etc/dhcp/dhclient.conf для клиента dhcp-client)

sudo nano /etc/dhcp3/dhclient.conf


Добавте строку:

option rfc3442-classless-static-routes code 249 = array of unsigned integer 8;#Добавляем описание новой опции dhcp сервера


Затем найдите секцию request и добавте туда:

rfc3442-classless-static-routes;#Добавляем запрос статических бесклассовых маршрутов


For example (так выглядит у меня на данный момент):

# Classless Static Routes. RFC code 121. Windows code 249
# Using 249 except for 121 because most of computers uses this shit
option rfc3442-classless-static-routes code 249 = array of unsigned integer 8;
#
   request subnet-mask, broadcast-address, time-offset, host-name,
        netbios-name-servers, netbios-scope, rfc3442-classless-static-routes;


Понятно думаю как добавлять. Заменить ";" в конце секции на "," и добавить: rfc3442-classless-static-routes;

4. Всё. Теперь можно либо перезагрузить ПК, или удалить в ручную старые маршруты которые были получены статически:
route del
, подробнее см.
man route


See also:

man dhclient

man dhclient-script -- очень интересная утилита.

man route


При подготовке материала были использованы следующие информационные источники с моими правками и соединениями:
http://archlinux.org.ru/forum/viewtopic.php?f=8&t=723 http://forum.dobroe.ru/index.php?showtopic=34115 Ссылки прямые, не скрытые и работоспособные на момент публикации этого поста.


P.S. Лично мне осталось придумать как динамически модифицировать таблицу NAT в iptables в зависимости от маршрутов которые я получил таким образом. Я думаю, что это не вызывет больших трудностей, хотя как знать. В общем буду модифицировать под себя: файл /etc/dhcp/dhclient-exit-hooks.d/rfc3442-classless-static-routes —- Планирую выложить сюда и мой модифицированный скрипт. Или создам новый: /etc/dhcp/dhclient-exit-hooks.d/iptables-dynamic-route см. man dhclient-script , если необходимо что-либо подобное делать.

P.P.S. на этом я думаю, что тему маршрутизации в сети "Прогтех" мы рассмотрели сдесь полностью.


Последний раз редактировалось: DALDON (18 Апр 2009, 20:58), всего редактировалось 7 раз(а)
В начало
Профиль : Фотоальбом : Личное Сообщение
seb
Сообщение  22 Сен 2009, 0:38  Ссылка : Ответить с цитатой
Возраст: 44 Пол: Мужской  Доверенный пользователь
C нами с 05.04.2005
Репутация: 121.1

ааа... вот что нужно... DALDON, у тебя не работает потому что у WinXP IP адрес в той же подсети что и у Workstation. Поэтому Workstation никогда не будет посылать пакеты к WinXP через pptp server linux потому что Workstation думает что WinXP в его подсети и доступен напрямую.

нужно что бы на ARP запрос "ГДЕ WinXP 192.168.0.102 ?" от Workstation отвечал вместо WinXP (поскольку она их не слышит) сам pptp server linux "WinXP 192.168.0.102 здесь". это называется proxyarp, я толком не знаю как это работает, попробуй почитать об этом, вот из man pptpd.conf:
Цитата:
ROUTING CHECKLIST - PROXYARP
Allocate a section of your LAN addresses for use by clients.

In /etc/ppp/options.pptpd. set the proxyarp option. In pptpd.conf do not set localip option, but set remoteip to
the allocated address range. Enable kernel forwarding of packets, (e.g. using /proc/sys/net/ipv4/ip_forward ).

The server will advertise the clients to the LAN using ARP, providing it’s own ethernet address. bcrelay(8)
should not be required.

_____________________________
IRC WeNet #programming
jid: seb2000@jabber.ru
В начало
Профиль : Фотоальбом : Личное Сообщение : JabberID
DALDON
Сообщение  22 Сен 2009, 8:06  Ссылка : Ответить с цитатой
Пол: Мужской  Доверенный пользователь
C нами с 09.04.2005
Репутация: 0.1

Цитата:
do not set localip option
Я читал, но что-то не дочитал видимо. proxyarp то я установил, и localip option тоже... Приду вечером, уберу localip. О результатах напишу!
В начало
Профиль : Фотоальбом : Блог : Личное Сообщение
DALDON
Сообщение  22 Сен 2009, 20:49  Ссылка : Ответить с цитатой
Пол: Мужской  Доверенный пользователь
C нами с 09.04.2005
Репутация: 0.1

seb, Закоментировал localip.
Не работает...

При том да:

victor@ubuntu-server:~$ ifconfig

eth1      Link encap:Ethernet  HWaddr 50:5a:e6:7e:1f:bf  
          inet addr:192.168.0.1  Bcast:192.168.0.255  Mask:255.255.255.0
          inet6 addr: fe80::20a:e6ff:fe7e:1fbf/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:5550 errors:0 dropped:0 overruns:0 frame:0
          TX packets:5341 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:553252 (540.2 KB)  TX bytes:6126491 (5.8 MB)
          Interrupt:17 Base address:0xc400 


ppp0      Link encap:Point-to-Point Protocol  
          inet addr:192.168.0.1  P-t-P:192.168.0.101  Mask:255.255.255.255
          UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1396  Metric:1
          RX packets:20 errors:0 dropped:0 overruns:0 frame:0
          TX packets:38 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:3 
          RX bytes:1646 (1.6 KB)  TX bytes:4523 (4.4 KB)


Интерфейс ppp0 имеет такой же адрес как и eth1

route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
192.168.0.101   *               255.255.255.255 UH    0      0        0 ppp0
192.168.0.0     192.168.0.1     255.255.255.0   UG    0      0        0 eth1
192.168.0.0     *               255.255.255.0   U     0      0        0 eth1
default         synkrisis-l3sw. 0.0.0.0         UG    0      0        0 eth0

Сделал маршруты так.

На Windows XP клиенте сделал:
route add 192.168.0.0 mask 255.255.255.0 192.168.0.101


Хотя он и сам создаётся.

Не работает... Ping ходит только с gw. С хостов локальной Сети аналогично. С Windows XP ping доходит только до 192.168.0.1.

Буду перечитывать документацию.

Ничего не понимаю.

Дубина Сдаюсь

Добавлено спустя 5 минут 10 секунд:

$ arp
Address                  HWtype  HWaddress           Flags Mask            Iface
synkrisis-l3sw.progtech  ether   50:05:CD:29:94:A5   C                     eth0
192.168.0.3              ether   00:13:8F:B3:6C:81   C                     eth1
192.168.0.4              ether   00:1A:70:EB:9E:B5   C                     eth1
192.168.0.2              ether   00:21:85:12:FA:4D   C                     eth1
192.168.0.101            *       <from_interface>    MP                    eth1


Вот собственно. Всё есть, и вроде как 192.168.0.101 как-то интересно вырисовывается.

Но..?
В начало
Профиль : Фотоальбом : Блог : Личное Сообщение
DALDON
Сообщение  24 Сен 2009, 18:03  Ссылка : Ответить с цитатой
Пол: Мужской  Доверенный пользователь
C нами с 09.04.2005
Репутация: 0.1

Даже не знаю куда написать, но я продвинулся ещё на 1мм к своему счастью.

А именно:
sudo sysctl -w net.ipv4.conf.eth[b]X[/b].proxy_arp=1


И...:

cat /proc/sys/net/ipv4/conf/eth1/proxy_arp 
1


And:

cat /proc/sys/net/ipv4/conf/eth0/proxy_arp 
1


Думаю дальше...

Добавлено спустя 2 часа 9 минут 28 секунд:

Plugin /usr/lib/pptpd/pptpd-logwtmp.so loaded.
Using interface ppp0
Connect: ppp0 <--> /dev/pts/1
MPPE 128-bit stateless compression enabled
found interface eth1 for proxy arp
local  IP address 192.168.0.1
remote IP address 192.168.0.101


arp -a
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
? (192.168.0.101) at <from_interface> PERM PUB on eth1


В файл
/etc/ppp/pptpd-options
добавил опцию:
ktune


Добавлено спустя 32 минуты 13 секунд:

В качестве конвульсии выложу:

egrep -v '#|^ *$' /etc/ppp/options
asyncmap 0
auth
crtscts
lock
hide-password
modem
proxyarp
lcp-echo-interval 30
lcp-echo-failure 4
noipx



egrep -v '#|^ *$' /etc/ppp/pptpd-options
name pptpd
refuse-pap
refuse-chap
refuse-mschap
require-mschap-v2
require-mppe-128
proxyarp
nodefaultroute
lock
nobsdcomp 
auth
logfile /var/log/pptpd1.log
ktune



egrep -v '#|^ *$' /etc/pptpd.conf
option /etc/ppp/pptpd-options
logwtmp
bcrelay eth1
remoteip 192.168.0.101-105
connections 5


На Windows

arp -a ничего не даёт про ppp

ipconfig /all даёт mac ppp интерфейся

Не знаю чего уже делать. Осталось только взять корову и пойти на реку...

Добавлено спустя 10 минут 5 секунд:

iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
ACCEPT     tcp  --  anywhere             anywhere            tcp dpt:6881 
ACCEPT     tcp  --  anywhere             anywhere            tcp dpt:ssh 
ACCEPT     tcp  --  anywhere             anywhere            tcp dpt:ftp 
ACCEPT     tcp  --  anywhere             anywhere            tcp dpt:www 
ACCEPT     gre  --  anywhere             anywhere            
ACCEPT     all  --  anywhere             anywhere            
ACCEPT     all  --  anywhere             anywhere            
DROP       tcp  --  anywhere             anywhere            tcp dpts:0:1023 
DROP       udp  --  anywhere             anywhere            udp dpts:0:1023 

Chain FORWARD (policy DROP)
target     prot opt source               destination         
DROP       all  --  anywhere             192.168.0.0/24      
ACCEPT     all  --  192.168.0.0/24       anywhere            
ACCEPT     all  --  anywhere             192.168.0.0/24      



Что-то DROP не очень нравится. Сейчас поправлю.

Добавлено спустя 3 минуты 57 секунд:

Привёл к такому виду:

iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
ACCEPT     tcp  --  anywhere             anywhere            tcp dpt:6881 
ACCEPT     tcp  --  anywhere             anywhere            tcp dpt:ssh 
ACCEPT     tcp  --  anywhere             anywhere            tcp dpt:ftp 
ACCEPT     tcp  --  anywhere             anywhere            tcp dpt:www 
ACCEPT     gre  --  anywhere             anywhere            
ACCEPT     all  --  anywhere             anywhere            
ACCEPT     all  --  anywhere             anywhere            

Chain FORWARD (policy DROP)
target     prot opt source               destination         
ACCEPT     all  --  192.168.0.0/24       anywhere            
ACCEPT     all  --  anywhere             192.168.0.0/24      

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination



Не помогло.

Добавлено спустя 2 минуты 1 секунду:

-A FORWARD -s 192.168.0.0/255.255.255.0 -i eth1 -j ACCEPT
-A FORWARD -d 192.168.0.0/255.255.255.0 -i eth0 -j ACCEPT
Смущает. Надо вспомнить iptables. Может что-то поправить..?
В начало
Профиль : Фотоальбом : Блог : Личное Сообщение
DALDON
Сообщение  24 Сен 2009, 21:05  Ссылка : Ответить с цитатой
Пол: Мужской  Доверенный пользователь
C нами с 09.04.2005
Репутация: 0.1

Добавил:

-A FORWARD -j ACCEPT


Остальное убрал в Forward.

Стало ещё мягче:

iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
ACCEPT     tcp  --  anywhere             anywhere            tcp dpt:6881 
ACCEPT     tcp  --  anywhere             anywhere            tcp dpt:ssh 
ACCEPT     tcp  --  anywhere             anywhere            tcp dpt:ftp 
ACCEPT     tcp  --  anywhere             anywhere            tcp dpt:www 
ACCEPT     gre  --  anywhere             anywhere            
ACCEPT     all  --  anywhere             anywhere            
ACCEPT     all  --  anywhere             anywhere            

Chain FORWARD (policy DROP)
target     prot opt source               destination         
ACCEPT     all  --  anywhere             anywhere            

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination


Добавлено спустя 8 минут 25 секунд:

Решено. Благодарю всех кто мне помогал. Как обычно дело оказалось в простом. В долгу не остаюсь как обещал. СПАСИБО всем, кто не ленился и помогал мне в двух темах - к слову был у пользователей Windows - дохлый номер!


-A FORWARD -j ACCEPT
В начало
Профиль : Фотоальбом : Блог : Личное Сообщение
PIRAT
Сообщение  24 Сен 2009, 21:48  Ссылка : Ответить с цитатой
Возраст: 47 Пол: Мужской 
C нами с 17.10.2005
Репутация: 347.3

DALDON так в чем же дело то было ??? самое интересное и не рассказал Улыбочка

_____________________________
♫-♠♥♣♦-♫
В начало
Профиль : Фотоальбом : Личное Сообщение
DALDON
Сообщение  24 Сен 2009, 22:05  Ссылка : Ответить с цитатой
Пол: Мужской  Доверенный пользователь
C нами с 09.04.2005
Репутация: 0.1

DALDON писал(а):
-A FORWARD -j ACCEPT
Только для теста, потом вестимо сделаю усложение, и обещаю больше не буду наступать на эти грабли.
В начало
Профиль : Фотоальбом : Блог : Личное Сообщение
Null
Сообщение  01 Окт 2009, 15:04  Ссылка : Ответить с цитатой
Возраст: 38 Пол: Мужской 
C нами с 01.10.2009
Репутация: 0

Итак, задача:
Используя VPN сделать доступными машины/ресурсы удаленных клиентов из сети головного офиса и наоборот + получение интернета для некоторых клиентов (которые в подсети провайдера) через шлюз головного офиса (сам VPN-сервер).

Что имеем:
Сеть головного офиса: 192.168.0.0/24
Шлюз: 192.168.0.1 (он же VPN-сервер)
На шлюзе два интерфейса: один смотрит в LAN (eth0), другой - на модем (модем в режиме бриджа) eth1.
Удаленные клиенты с "белыми" IP вида 95.66.xxx.xxx
Удаленная сеть 192.168.0.0/24
VPN сервер на базе Linux Ubuntu Server 8.10 PPTPD (пока без Radius и учета трафиика - это в перспективе) в сети головного офиса.

Конфиг PPTPD (/etc/pptpd.conf)
option /etc/ppp/pptpd-options
debug
logwtmp
bcrelay eth0
localip         192.168.0.201
remoteip        192.168.0.202-254

Опции PPTPD (/etc/ppp/pptpd-options)
auth
name pptpd
refuse-pap
refuse-chap
refuse-mschap
require-mschap-v2
require-mppe-128
ms-dns 95.66.187.247
ms-dns 95.66.188.11
ms-wins 192.168.0.130
ms-wins 192.168.0.1
proxyarp
nodefaultroute
logfile /var/log/pptpd.log
debug
lock
nobsdcomp

Скрипт фаерволла (/home/vpn-firewall.sh)
#!/bin/sh
echo 1 > /proc/sys/net/ipv4/ip_forward
echo 1 > /proc/sys/net/ipv4/ip_dynaddr
iptables -X
iptables -F
iptables -t nat -F
iptables -t nat -X
iptables --flush
iptables --delete-chain
iptables --table nat --flush
iptables --table nat --delete-chain
iptables -P FORWARD ACCEPT
modprobe iptable_nat
modprobe ip_conntrack_ftp
modprobe ip_nat_ftp
modprobe ip_gre
modprobe ip_nat_pptp

# Эти правила разрешают протокол GRE и PPTP
iptables -A INPUT -p gre -j ACCEPT
iptables -A OUTPUT -p gre -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -p tcp -s 0/0 --dport 1723 -j ACCEPT

Текущие настройки iptables
Chain INPUT (policy ACCEPT)
target     prot opt source               destination
ACCEPT     gre  --  anywhere             anywhere
ACCEPT     tcp  --  anywhere             anywhere            tcp dpt:1723

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination
ACCEPT     gre  --  anywhere             anywhere            state NEW,RELATED,ESTABLISHED


Чуть позже выложу route PRINT с клиентов...

В чем возникли проблемы:
В целом, сами подключения устанавливаются и VPN-клиентам доступен интернет через VPN-сервер и ресурсы сети.
НО: для этого приходится использовать разные подключения на машинах клиентов (WinXP) для разных целей: одно (с установленной галкой "Использовать основной шлюз в удаленной сети") - для получения инета, другое (без вышеупомянутой галки) - для доступа к ресурсам сети головного офиса. Но и здесь "не все в порядке": удаленные клиенты "видят" все ресурсы сети, а вот из сети машины клиентов - не доступны. Я так понял, что это из-за того, что VPN-клиентам выдаются IP-шники из подсети головного офиса, поэтому до них и нет маршрутов, т.к. подразумевается что они в сети, а не далеко-далеко за VPNом... опять же, пробовал разные варианты, описанные в MAN PPTPD: и через ProxyARP, и Форвардинг, и Маскарадинг, и разные IPшники выдавал клиентам/серверу - лучше от этого не становится. =( Да, кстати, хотелось бы упомянуть, что клиенты под Vist'ой - могут пользоваться одним подключением, она как-то сама назначает метрику и при соединении с VPN-сервером может получать и инет из офиса и иметь доступ к ресурсам сети (правда не оч. корректно).

Еще одна проблема заключается в том, что два компьютера (в моем случае "VPN-клиент 1" и "VPN-клиент 2") из-за одного роутера (NAT) не могут подключаться к серверу. Погуглив, я пришел к выводу, что это недостатки протокола GRE по средствам которого собстно и прокладывается PPTP туннель. Так ли это? И как решить данную проблему: ставить выделенный сервер-VPN-клиент (как в случае с удаленной сетью) или можно как-то обойтись "крутым" роутером (слышал есть такие)?

Я интересовался у знакомых - все они используют Cisco для таких целей и не могут мне помочь. Искал я в интернете не одну неделю хоть какую-то информацию о развертывании VPN - ничего толком не нашел. В основном встречаются инструкции по поднятию самого PPTPD сервера или просто описание принципов VPN. Наверное, я что-то не то ищу, помогите!

Итак, вопросы:
Как сделать так, чтобы клиенты под XP могли пользоваться одним VPN-подключением?
Где/как прописать маршруты (или что надо сделать?) чтобы и удаленные клиенты и сеть головного офиса могли взаимодействовать друг с другом?
Как реализовать соединение двух сетей посредствам VPN и Linux (Ubuntu)?
Как правильно организовать подсети? Какие IPшники назначать - кому?

Заранее спасибо всем откликнувшимся! Извиняйте за написанные глупости - я в никсах "ноль с половинкой".





Макет сети офиса (LAN).png

Макет сети офиса (LAN).png - Просмотров: 27

В начало
Профиль : Личное Сообщение
DALDON
Сообщение  15 Окт 2009, 19:36  Ссылка : Ответить с цитатой
Пол: Мужской  Доверенный пользователь
C нами с 09.04.2005
Репутация: 0.1

Стало интересно, может кто подскажет?

Стандартная ситуация NAT в iptables.

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


Не понимаю ЗАЧЕМ включать forward? - Без него не работает. Но почему? Зачем он?

Ведь трафик между сетевыми картами непосредственно ведь не передаётся. А сначало попадает в iptables он изменяет заголовки и только после этого отправляет на другой интерфейс.

Зачем же тогда нужна данная опция?
В начало
Профиль : Фотоальбом : Блог : Личное Сообщение
seb
Сообщение  17 Окт 2009, 0:27  Ссылка : Ответить с цитатой
Возраст: 44 Пол: Мужской  Доверенный пользователь
C нами с 05.04.2005
Репутация: 121.1

forward в переводе на русский обозначает «передать дальше». вот что бы пакет пришедший на маршрутизатор был передан с него наружу, дальше, нужно включать ip_forward.

если у тебя стоит какая-нибудь проксирующая программа, например squid, который сам перенаправляет запросы то ip_forward можно не включать, ip_forward отвечает за маршрутизацию IP внутри ядра.

DALDON писал(а):
А сначало попадает в iptables
iptables работают внутри ядра, без включенного ip_forward обработка пакета прекратится не достигнув цепочки FORWARD, как только маршрутизатор (ядро) увидит что пакет предназначен другому хосту. это произойдёт после прохождения цепочек PREROUTING когда ядро будет решать, куда двигать пакет дальше, либо локальным программам слушающим на портах маршрутизатора, либо форвардить:

http://ru.wikipedia.org/wiki/Iptables#.D0.A2.D0.B0.D0.B1.D0.BB.D0.B8.D1.86.D1.8B

вот тут, на первом сереньком кружочке «маршрутизация»

_____________________________
IRC WeNet #programming
jid: seb2000@jabber.ru




Путь проверки пакета в системе netfilter
400px-Netfilter-diagram-rus.png

400px-Netfilter-diagram-rus.png - Просмотров: 40

В начало
Профиль : Фотоальбом : Личное Сообщение : JabberID
DALDON
Сообщение  18 Окт 2009, 0:30  Ссылка : Ответить с цитатой
Пол: Мужской  Доверенный пользователь
C нами с 09.04.2005
Репутация: 0.1

seb, в общем и целом это я знаю. Ещё раз всё обмозгую, и если чего будет не понятно - сформулирую.

В общем и целом я понимаю, что так-как это дело в ядре, то надо включать. Если бы iptables со всем своим делом был бы обычным приложением то этого делать не надо было бы. Я пока понял в общем так. Но не вникал глубоко ещё.
В начало
Профиль : Фотоальбом : Блог : Личное Сообщение
DALDON
Сообщение  27 Ноя 2009, 16:34  Ссылка : Ответить с цитатой
Пол: Мужской  Доверенный пользователь
C нами с 09.04.2005
Репутация: 0.1

Господа. Очень извиняюсь за тупорылость свою... Но не могу понять...

Host1 192.168.51.2 (route add 192.168.50.0 MASK 255.255.255.0 192.168.51.2) - default route нету.

Host2 192.168.50.1 (route add -net 192.168.51.0/24 192.168.50.1)


Фаерволы выключены на обоих концах.

Данные (ping) почему не ходят с одной машины в другую?

На FreeBSD сообщения вида: TTL пакета закончилось при том оно уменьшается прям... Что за прыжки делает пакет не понял... Машины в прямом коннекте.

Я понимаю свою фундаментальную тупость... - Т.е. понимаю, что если я поменяю на HOST1 адрес на диапазон из 50 сети всё побежит. - Да и бегает в общем то.

Но насколько я понимаю ДОЛЖНО произойти следующее: Пакет сформируется на Host1 и будет в dst иметь адрес: 192.168.50.1, выйдет из Сетевой карты... Пойдёт широковещательный запрос... Host2 скажет вот мол я. Отправит свой MAC, и далее пойдёт обмен. Ведь HOST2 имеет маршрут до HOST1 и должен "знать" куда отправлять ответы... Также как и HOST1.


Тут какая то видимо фундаментальная тупость... Но вот какая не очень вижу.


Спасибо.

Тупость тут моя фундаментальная... Я понимаю, что шлюз не в одной подсети лежит. Но...
В начало
Профиль : Фотоальбом : Блог : Личное Сообщение
splav
Сообщение  27 Ноя 2009, 23:18  Ссылка : Ответить с цитатой
Возраст: 35 Пол: Мужской  Доверенный пользователь
C нами с 22.01.2006
Репутация: 256.8

DALDON, а маршруты до самих gw по локальной сети или через dev есть?

Добавлено спустя 5 минут 49 секунд:

т.е.
route add 192.168.51.2 dev ethX
и аналогично на host2
В начало
Профиль : Фотоальбом : Блог : Личное Сообщение : JabberID : ICQ
DALDON
Сообщение  14 Дек 2009, 22:57  Ссылка : Ответить с цитатой
Пол: Мужской  Доверенный пользователь
C нами с 09.04.2005
Репутация: 0.1

В общем при таком раскладе получается у меня петля... И пакет начинает бросать внутри ОС, разуметтся TTL быстро уходит в нуль.
В начало
Профиль : Фотоальбом : Блог : Личное Сообщение
Показать сообщения:   
На страницу «  1, 2, 3, 4, 5

Unsorted   ~  Software  ~  Linux and Unix  ~  Маршрутизация в Ubuntu mini HOWTO

Ответить на тему

Перейти:  





Powered by phpBB   © Unsorted Team  support@unsorted.me  promo@unsorted.me  Полезные скрипты