|
На страницу 1, 2, 3, 4, 5 » |
|
|
|
|
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-адрес компьютера, на который следует пересылать пакет (этот компьютер должен иметь прямую связь с вашим компьютером). Команда
Код:
удаляет из таблицы данные обо всех шлюзах. Необязательный аргумент тип принимает значения 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 |
Вот, я думаю, что всё понятно, но дело ещё в том, что я опустил - после указания маршрута, но думаю, если одна карта Сетевая то это не будет принципиально, а вот если несколько то надо будет указать на всякий случай думаю.
Теперь при старте Системы у меня поднимается 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. Всё. Теперь можно либо перезагрузить ПК, или удалить в ручную старые маршруты которые были получены статически: , подробнее см.
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 раз(а)
|
|
|
|
|
|
|
C нами с 28.02.2006 Репутация: 17.4
|
|
|
|
|
|
|
|
Возраст: 42 C нами с 26.07.2006 Репутация: 95.2
|
|
Люди не пинайте ногами. Настроил vpn через network-manager, вопрос только один как через него же прописать маршруты? а то или локал или инет
|
|
|
|
|
|
|
|
Возраст: 36 C нами с 08.01.2006 Репутация: 128.1
|
|
Ну убейте не понимаю я с вашей убунтой))) Полкилометровый мануал по маршрутизации писать, при имеющихся на руках маршрутах. Ну сложно разве сварганить скрипт цепляющийся к VPN-серверу и отцепляющий от него, куда засунуть строчки, переписывающие таблицу маршрутизации и потом создать для них ярлычки на рабочем столе или где угодно? Или это не ubuntu-way??? Или я совсем не в теме???
|
|
|
|
|
|
|
|
C нами с 06.06.2007 Репутация: 19.3
|
|
ХЗ о чем вы, но у меня на двух компах все по умолчанию встало и работает...
Десктоп - через шнурок.
Ноут - по WiFi...
Ubuntu 7.10...
Unlimited-Aviel.
Правда, у меня - доступ в сетку через рутер...
Проблема в другом: если в Винде я спокойно смотрю фильмы по ШАРЕ, то в Убунте самба требует вначале скачать кино, а потом смотреть... Неудобно...
|
_____________________________ Доверие - это подсознательное желание быть обманутым.
|
|
|
|
|
|
|
Возраст: 41 C нами с 05.06.2005 Репутация: 42.6
|
|
Помню в slackware все это делал в две строчки...
Современные дистрибьюивы в погоне за удобством утежеляются ненужными командами и файлами до предела...
|
|
|
|
|
|
|
|
Возраст: 36 C нами с 08.01.2006 Репутация: 128.1
|
|
Котозавр писал(а): |
Помню в slackware все это делал в две строчки...
Современные дистрибьюивы в погоне за удобством утежеляются ненужными командами и файлами до предела...
|
Превращая простую и понятную *nix-структуру в помойку! Когда тупое прописывание маршрутизации превращается в проблему. Какое тут, нафиг, удобство?
|
|
|
|
|
|
|
|
Возраст: 36 C нами с 22.01.2006 Репутация: 256.8
|
|
MinDeR, неужели нельзя прописать сделать нормальный логичный конфиг для сетевых интерфейсов, как в генте например...
mac_eth0="xx:xx:xx:xx:xx:xx"
config_eth0=(
"dhcp"
)
routes_eth0=(
"-net 10.0.0.0/8 gw 10.100.xx.1"
............................
)
|
Может можно стартовый скрипт от генты прикрутить?
|
|
|
|
|
|
|
|
Возраст: 42 C нами с 08.04.2005 Репутация: 96.5
|
|
cortas, монтируй шары с помощью mount на локальную файловую систему. Гномий файлобраузер этого не делает, а любому плееру необходим файл на файловой системе.
MinDeR, в федоре 6 я это настроил с помощью гуя, и до сих пор работает, пережив два апгрейда дистрибутива. Я даже не знаю в каких файлах оно хранится Вот это - удобство
|
_____________________________
в следующей жизни мечтаю стать сиденьем на женском велосипеде
|
|
|
|
|
|
|
C нами с 06.06.2007 Репутация: 19.3
|
|
|
|
|
|
|
|
Возраст: 36 C нами с 08.01.2006 Репутация: 128.1
|
|
снеговик писал(а): |
MinDeR, в федоре 6 я это настроил с помощью гуя, и до сих пор работает, пережив два апгрейда дистрибутива. Я даже не знаю в каких файлах оно хранится Вот это - удобство
|
Может вы истинный виндузятник? Меня посетила сия ужасная мысль, ибо в винде всё также...несколько апгрейдов, работает-работает, а потом бах и не знаешь в какую сторону рыть и наступает полный абзац.
Я не буду спорить, что минимальное участие человека в работе операционки есть великое добро, но данный минимализм должен быть в меру и работать только в "ломовых" вещах, а не в навороченных системах аля postfix+mysql+squirrelmail+...+....
|
|
|
|
|
|
|
|
Возраст: 42 C нами с 08.04.2005 Репутация: 96.5
|
|
MinDeR, во-первых, я знаю, в какую сторону копать.
Во-вторых, для меня комп+операционка - инструмент, и пользуюсь я им для решения своих задач, а не для копания во внутренностях операционки.
|
_____________________________
в следующей жизни мечтаю стать сиденьем на женском велосипеде
|
|
|
|
|
|
|
C нами с 09.04.2005 Репутация: 0.1
|
|
Господа, не знаю чего там у Вас не работало, на Ubuntu 7.10 с самыми последними обновлениями Системы.
У меня ВСЁ ПРЕКРАСНО РАБОТАЕТ. Вот уже несколько часов как не было попытки падения или глюка. Всё пашет просто на ура. Работает быстро, без проблем и вопросов.
Но есть одно, НО, у меня там не стоит GUI всё делал через консоль.
|
|
|
|
|
|
|
|
Возраст: 34 C нами с 28.03.2005 Репутация: 102.3
|
|
Ребят,привет.ПОставил Ubuntu 7.10 Локална настроил,с впн проблемы....настраивал по одному из многочисленных мануалов,После запуска впн(sudo vpn start) отваливается локалка,после vpn stop всё встаёт на место,это проблема в маршрутизации или в чёмто ещё?
|
|
|
|
|
|
|
|
Возраст: 35 C нами с 17.04.2005 Репутация: 89.4
|
|
|
|
|
|
|
|
На страницу 1, 2, 3, 4, 5 »
|
|