|
На страницу « 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 раз(а)
|
|
|
|
|
|
|
Возраст: 44 C нами с 05.04.2005 Репутация: 121.2
|
|
ааа... вот что нужно... 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
|
|
|
|
|
|
|
C нами с 09.04.2005 Репутация: 0.1
|
|
Цитата: |
do not set localip option
|
Я читал, но что-то не дочитал видимо. proxyarp то я установил, и localip option тоже... Приду вечером, уберу localip. О результатах напишу!
|
|
|
|
|
|
|
|
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 как-то интересно вырисовывается.
Но..?
|
|
|
|
|
|
|
|
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 |
В файл добавил опцию:
Добавлено спустя 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. Может что-то поправить..?
|
|
|
|
|
|
|
|
C нами с 09.04.2005 Репутация: 0.1
|
|
Добавил:
Остальное убрал в 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
|
|
|
|
|
|
|
|
Возраст: 48 C нами с 17.10.2005 Репутация: 347.3
|
|
DALDON так в чем же дело то было ??? самое интересное и не рассказал
|
_____________________________ ♫-♠♥♣♦-♫
|
|
|
|
|
|
|
C нами с 09.04.2005 Репутация: 0.1
|
|
DALDON писал(а): |
-A FORWARD -j ACCEPT
|
Только для теста, потом вестимо сделаю усложение, и обещаю больше не буду наступать на эти грабли.
|
|
|
|
|
|
|
|
Возраст: 39 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 - Просмотров: 27
|
|
|
|
|
|
|
C нами с 09.04.2005 Репутация: 0.1
|
|
Стало интересно, может кто подскажет?
Стандартная ситуация NAT в iptables.
echo 1 > /proc/sys/net/ipv4/ip_forward |
Не понимаю ЗАЧЕМ включать forward? - Без него не работает. Но почему? Зачем он?
Ведь трафик между сетевыми картами непосредственно ведь не передаётся. А сначало попадает в iptables он изменяет заголовки и только после этого отправляет на другой интерфейс.
Зачем же тогда нужна данная опция?
|
|
|
|
|
|
|
|
Возраст: 44 C нами с 05.04.2005 Репутация: 121.2
|
|
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 - Просмотров: 40
|
|
|
|
|
|
|
C нами с 09.04.2005 Репутация: 0.1
|
|
seb, в общем и целом это я знаю. Ещё раз всё обмозгую, и если чего будет не понятно - сформулирую.
В общем и целом я понимаю, что так-как это дело в ядре, то надо включать. Если бы iptables со всем своим делом был бы обычным приложением то этого делать не надо было бы. Я пока понял в общем так. Но не вникал глубоко ещё.
|
|
|
|
|
|
|
|
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.
Тут какая то видимо фундаментальная тупость... Но вот какая не очень вижу.
Спасибо.
Тупость тут моя фундаментальная... Я понимаю, что шлюз не в одной подсети лежит. Но...
|
|
|
|
|
|
|
|
Возраст: 36 C нами с 22.01.2006 Репутация: 256.8
|
|
DALDON, а маршруты до самих gw по локальной сети или через dev есть?
Добавлено спустя 5 минут 49 секунд:
т.е.
route add 192.168.51.2 dev ethX
и аналогично на host2
|
|
|
|
|
|
|
|
C нами с 09.04.2005 Репутация: 0.1
|
|
В общем при таком раскладе получается у меня петля... И пакет начинает бросать внутри ОС, разуметтся TTL быстро уходит в нуль.
|
|
|
|
|
|
|
|
На страницу « 1, 2, 3, 4, 5
|
|