HOWTO Соединение с Internet
Материал из Gentoo Linux Wiki
Пожалуйста приведите эту статью в соответствиe с wiki разметкой, и затем удалите {{Wikify}} из текста статьи
- Вернуться в раздел руководства
Содержание |
[править] Настройка VPN
Это работает для ядер >=2.6.15
[править] Проверка параметров ядра
Если ваш провайдер использует mppe-mppc проверьте следующее:
| Linux Kernel Configuration: Параметры ядра |
Device Drivers --->
Network support --->
<M> PPP (point-to-point protocol) support
<M> PPP MPPE compression (encryption) (EXPERIMENTAL)
Cryptographic options --->
<M> SHA1 and RC4 algorithms
|
Теперь необходимо собрать наше ядро. Без разницы, как вы скомпилировали эти части. Вы можете вкомпилировать все в ядро или собрать модулями. В конце вы должны подгрузить модули:
- libcrc32c
- ip_gre
- crc_ccitt
- ppp_async
- и конечно ppp_mppe_mppc.
А затем запустите modules-config.
[править] Установка пакетов
Это работает для ядер >=2.6.15
Установка очень проста:
| Code: Установка |
|
emerge sys-kernel/gentoo-dev-sources |
[править] Настройка клиента
Если все удалось, то теперь вам необходимо сконфигурировать клиент. Вот пример конфигурации /etc/ppp/peers/myvpn:
pty "/usr/sbin/pptp xxx.xxx.xxx.xxx --nolaunchpppd" #xxx...это адрес сервера name myname remotename myvpn lock dump noipx #debug #включите эту опцию,если хотите видеть отладочные сообщения(пригодиться если ничего не работает) ipcp-accept-local ipcp-accept-remote lcp-echo-failure 4 lcp-echo-interval 30 asyncmap 0 crtscts require-mppe refuse-eap nobsdcomp nodeflate proxyarp ipparam myvpn
Осталось только дозвониться до провайдера:
pon myvpn
Для вывода отладочных сообщений на этой же консоли введите:
pon myvpn debug dump logfd 2
Теперь необходимо настроить таблицы маршрутизации. Обычно это делается так: route add default dev ppp0
[править] Настройка с помощью pptpconfig
Для графической (GTK+) настройки PPTP используйте
- net-dialup/pptpconfig
он пока под маской "~x86"
| Code: установка pptpconfig |
|
ACCEPT_KEYWORDS="~x86" emerge pptpconfig |
Или более правильно в файл /etc/portage/package.keywords добавить следующие строки:
net-dialup/pptpconfig ~x86
dev-php4/php-gtk ~x86
А затем
| Code: установка pptpconfig |
|
emerge pptpconfig |
| Примечание: Для нормальной сборки необходимы флаги USE=cli pcntl pcre posix session |
Наберите от рута, например в xterm: pptpconfig &
Создайте новое соединение и настройте в соответствии с параметрами указаннымы выше, плюс поправка на рекомендации провайдера.
Для настройки маршрутизации по умолчанию используется вкладка Routing , на ней используйте значение All to tunnel.
Выберите созданное соединение и нажмите Start. Все :)
Примечание: если возникнут проблемы с соединением на вкладке "Miscellanyous" в опциях для pppd напишите noipdefault 50 |
[править] Проверяем соединение
Теперь все готово. Можно навестить Gentoo-Wiki ;)
Проверить соединение можно командой:
# ifconfig ppp0
ppp0 Link encap:Point-to-Point Protocol
inet addr:xxx.xxx.xxx.xxx P-t-P:xxx.xxx.xxx.xxx Mask:xxx.xxx.xxx.xxx.xxx
UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1500 Metric:1
RX packets:6 errors:0 dropped:0 overruns:0 frame:0
TX packets:6 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:3
RX bytes:72 (72.0 b) TX bytes:78 (78.0 b)
Настройка VPN-соединения для Gentoo
Настройка маршрутизации для VPN-соединений
[править] Через pppoe
| Code: Устанавливаем pppoe |
|
emerge pppoe |
В /etc/conf.d/net прописываем
modules=( "ifconfig" )
config_eth0=( "null" )
config_ppp0=( "ppp" )
link_ppp0="eth0"
plugins_ppp0=("pppoe")
username_ppp0='login'
password_ppp0='passwd'
pppd_ppp0=(
"defaultroute" # Make this PPP interface the default route
"usepeerdns" # Use the DNS settings provided by PPP
"lcp-echo-interval 15" # Send a LCP echo every 15 seconds
"lcp-echo-failure 3" # Make peer dead after 3 consective
)
#Если собираемся раздавать интернет в локалку с помощью маскарадинга то нужно добавить такую строчку в IPTABLES:
#iptables -I FORWARD 1 -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu
| Code: Делаем симлинк |
|
ln -s /etc/init.d/net.lo /etc/init.d/net.ppp0 |
| Code: Запускаем |
|
/etc/init.d/net.ppp0 start |
[править] Настройка выхода через DIAL-UP
[править] Подключение модема
[править] Последовательный порт
Подключение данного типа модема заключается в физическом "втыкании" в один из COM портов дата кабеля модема, включении модема в розетку и подсоединения к нему телефонной лини. Все это можно прочитать в руководстве к модему. Как извесно последовательные порты в Линукс именуются /dev/ttySx (где x - номер порта, /dev/ttyS0 = COM1 и т.д.) Вам нужно будет знать имя порта на который Вы "повесили свой модем"...скорее всего у вас их два или даже один, поэтому ошибиться здесь довольно сложно. Либо /dev/ttyS0, либо /dev/ttyS1.
На этом подключение модема к последовательному порту можно считаль законченым.
[править] Подключение через USB
| Linux Kernel Configuration: Установка пакетов |
"USB support" >>
<*>"USB Modem (CDC ADCM)support"
|
устройство будет называться /dev/ttyACM0
[править] Win модемы
Для работы Win-модема нужно установить драйвер. Не все win-модемы поддерживаються поэтому Вам остается надеяться на лучшее. За драйверами идем на http://www.linmodems.org/ Там можно взять отличную софтину под названием scanModem которая опросит Ваш модем и выдаст (или не выдаст) URL откуда взять драйвер. Тянем. Распаковываем. Читаем INSTALL. Ставим. Еще можно почитать эту статью: linmodems
[править] Для всех типов модемов
Для удобства можно создать симлинк вида /dev/modem на соответствующее модему устройство:
ln -s /dev/ttyS0 /dev/modem
и в дальшейшем в настройках использовать устройство ( /dev/modem )...хотя никто и не запрещает использовать устройство модема без симлинка /dev/tyySx
[править] Проверка работоспособности, возможные грабли
После подключения модема и установки всех необходимых драйверов необходимо проверить его работоспособность.
Я делаю это так:
запускаю утилиту minicom и даю команду AT. Если все в порядке, я в ответ получаю ОК, и не получаю если что-то не так.
Если ОК не получен, то самое первое, что нужно сделать - это проверить настройки minicom.
Если модем ответил "ОК", можно попробовать позвонить провайдеру:
ATDP 554554 - для пульсового набора
или
ATDT 554554 - для тонового набора
если модемы соединились и на экране появилось приглашение ввести логин или посыпался мусор в виде фигурных скобок ({{{{{{), можете себя поздравить и переходить к настройке програмного обеспечения, модем у вас работает.
[править] Настройка програмного обеспечения
[править] Включение поддержки PPP в ядре
в ядре должны быть включены опции отвечающие за ppp:
| Linux Kernel Configuration: Установка пакетов |
Device Drivers--------->
Networking support--------->
<*>PPP (point-to-point protocol) support
<*>PPP support for async serial ports
<*>PPP Deflate compression
<*>PPP BSD compression
|
[править] Установка необходимых пакетов
вопервых нужно установить пакет который реализует поддержку протокола точка-точка (point-to-point protocol)
emerge ppp
вовторых нужна звонилка или скрипт для автоматизирования процеса установления соединения.
Обзор звонилок и примеры скриптов смотри ниже...
[править] Настройка соединения с помощью chat-script
Прежде чем писать скрипт, необходимо настроить pppd:
в /etc/ppp/pap-secrets пропишем свои Логин/Пароль
| Code: /etc/ppp/pap-secrets |
|
login * password * |
где login и password выданые Вашим провайдером Вам логин и пароль соответственно...
в /etc/ppp/options пропишем:
| Code: /etc/ppp/options |
|
nodetach |
в /etc/resolv.conf прописываем один или несколько ip-адресов DNS серверов (спросить у провайдера адрес его сервера)
| Code: /etc/resolv.conf |
|
nameserver xx.xx.xx.xx |
xx.xx.xx.xx - заменить на ip-адресс DNS сервера
В каталоге /usr/share/doc/ppp-*/scripts лежат примеры скриптов, нам нужны:
ppp-on ppp-off ppp-on-dialer
подправляем в них логин, номер телефона, пароль...и вуаля...ppp-on поднимает соединение, ppp-off разрывает его, а ppp-on-dialer -воспомогательный скрипт для осуществления дозвона.
замечу только что для тонового набора используется AT-команда ATDT, а для пульсового - ATDP.
[править] Обзор звонилок
Хорошая звонилка избавит Вас от процеса написания скриптов, вникания в опции pppd, и сделает настройку соединения довольно тривиальной
[править] kppp
[править] chestnut-dialer
Замечательная звонилка которая к сожалению не поставляется в стандартных портах gentoo. ebuild можна взять здесь
Из плюсов
- Настройка тривиальна
- Умеет работать в консоли
- Умеет работать в GUI (имеет GTK+ и Qt интерфейсы)
- Умеет call back
- Нетребавательна к ресурсам
- "Местного разлива" - можно пообщаться с автором на родном языке, что для многих немаловажно.
Из минусов
- Не входит в официальное дерево портов
[править] Настройка Call back
pppd должен быть собран с поддержкой CALLBACK. В gentoo это делается по умолчанию, так что вам нужно просто собрать pppd штатными средствами.
Самый простой скрипт для CALLBACK был обнаружен в /usr/doc/ppp-2.4.2/README.cbcp:
#!/bin/sh pppd debug nodetach /dev/modem 115200 crtscts modem \ callback СВОЙ_НОМЕР name ЛОГИН \ connect 'chat -v "" atz OK atdtНОМЕР_ПРОВАЙДЕРА CONNECT "~--"' sleep 1 pppd debug nodetach /dev/modem 115200 crtscts modem \ name ЛОГИН defaultroute \ connect 'chat -v RING ATA CONNECT "\c"'
ЛОГИН должен соответствовать записи в /etc/ppp/chap-secrets (/etc/ppp/pap-secrets). В /etc/resolv.conf нужно прописать адрес DNS-сервера (можно добавить опцию usepeerdns в /etc/ppp/options для получения списка DNS серверов от провайдера).
Также можно использовать kppp или chestnut-dialer для установки callback соединения. Настройки их достаточно тривиальны.
Самым сложным может оказаться правильно подобрать строку инициализации для модема. Рекомендуют отключить CallerID. Приведу несколько строк инициализации для примера, но лучше берите документацию от модема (часто идет только на сидироме хотя иногда бывает и в бумажном виде), смотрите что каждая из AT комманд означает и экспериментируйте.
- Для модемов Lucent:
ats0=1s38=0s37=17-v90=0 ats0=1s38=0s37=17-v90=0+vcid=0
значение регистра s37 можна понижать до 14
- Для модемов GVC Vector K2D:
ATS0=1+VCID=0&U1
Я лично подобрав подходящую строку инициализации, сохранил ее прямо в профиле модема...
[править] Настройка выхода через GPRS
Если вы подключаетесь через GPRS с помощью звонилки (kppp, chestnut-dialer), может быть важным использование опции pppd - noipdefault !!!
[править] Требуемая аппаратура
Для соединения по GPRS потребуется следующее:
- Мобильный телефон, поддерживающий технологию GPRS
- Кабель COM или USB для подключения к компьютеру ("data-кабель") либо IrDA-интерфейс.
[править] Подключение с помощью USB-кабеля
Убедитесь, что в конфигурационном файле Вашего ядра присутствуют следующие опции:
"Device Drivers" >>
[*]"Networking support" >>
[*] "Network device support"
<M> "PPP (point-to-point protocol) support"
<M> "PPP support for async serial ports"
<M> "PPP support for sync tty ports"
<M> "PPP Deflate compression"
<M> "PPP BSD-Compress compression"
Для data-кабелей на основе микросхем Profilic 2303 (используются для подключения большинства телефонов, в том числе Siemens, Motorola, Nokia и др.) проверьте наличие:
"USB support" >>
"USB Serial Converter support" >>
<M> "USB Prolific 2303 Single Port Serial Driver"
После компиляции ядра проверьте модуль:
modprobe pl2303
Теперь кабель представлен в системе как устройство /dev/usb/tts/0 (возможно /dev/ttyUSB0), которое может быть использовано в качестве обычного модема.
Для телефонов Motorola, которые подключаются кабелем mini-USB (например С380,С390) достаточно включить
"USB support" >>
<*>"USB Modem (CDC ADCM)support"
устройство будет называться /dev/ttyACM0
[править] Подключение с помощью COM-кабеля
Тут все просто, "втыкаем" и используем...как любой модем на последовательном порту.
[править] Подключение через Bluetooth
Предполагается что вы уже настроили соединение телефона с компьютером через bluetooth,например по этой статье :Работа с мобильными телефонами через bluetooth.Итак устройства сопряжены.Теперь нам необходимо подключить телефон как модем.Для этого мы выполним привязку bluetooth-сервиса 1(то есть Dial-Up) к устройству /dev/rfcomm0.Начнем по порядку.
- Поищем телефон
#hcitool scan
Scanning ...
00:60:57:D5:3B:BE Gtbear
- Подключим его к rfcomm0
#rfcomm bind 0 00:60:57:D5:3B:BE 1
Этой командой мы подключили в rfcomm0 канал 1. Теперь телефон готов к работе.Осталось настроить соединения в конфигах pppd.
- Создадим файл /etc/ppp/peers/gprs.В него запишем следующее:
lcp-echo-failure 0 lcp-echo-interval 0 /dev/rfcomm0 connect /etc/ppp/peers/suct-connect # Это скрипт соединения,такое имя выбрано в честь моего оператора: 115200 #Южно-Уральский Сотовый Телефон :) crtscts local ipcp-accept-local noauth usepeerdns user suct defaultroute noipdefault
- Теперь сделаем скрипт соединения:
#!/bin/bash exec chat -vS \ '' \rAT \ TIMEOUT 12 \ OK ATH \ OK ATE1 \ OK 'AT+CGDCONT=1,"IP","internet.usi.ru"' \ OK ATD*99***1# \ TIMEOUT 22 \ SAY "\nWaiting for connect...\n" \ CONNECT "" \ SAY "\nGPRS connected.Enjoy.."
- Впринципе все готово.Для запуска соединения можно использовать команду pppd call gprs nodetach
[править] Подключение через IrDA
Пакеты:
emerge irda-utils
| Linux Kernel Configuration: Ядро 2.6 |
Device Drivers --->
[*] Networking support
<*> IrDA (infrared) subsystem support --->
<*> IrCOMM protocol
Infrared-port device drivers --->
<*> IrDA USB dongles
<*> SigmaTel STIr4200 bridge (EXPERIMENTAL)
|
Когда ядро будет готово можно запускать команду:
irattach irda0 -s
Теперь если поднести телефон к инфракрасному порту он должен определиться... Дальше можно поднимать ppp как для обычного модема
[править] Настройка выхода через CDMA (SKYLINK)
[править] Подключение аппаратуры
[править] Настройка программного обеспечения
[править] Настройка соединения с помощью chat-script
- Устанавливаем пакет, который реализует поддержку протокола точка-точка (point-to-point protocol)
# emerge ppp
- Редактируем файл /etc/ppp/chap-secrets
| Code: /etc/ppp/chap-secrets |
|
# Secrets for authentication using CHAP # client server secret IPaddresses
|
- Создаем файл /etc/ppp/peers/cdma
| Code: /etc/ppp/peers/cdma |
|
debug /dev/ttyUSB0 921600 noipdefault defaultroute ipcp-accept-local lcp-echo-interval 60 lcp-echo-failure 5 usepeerdns nopcomp noauth noaccomp nodetach user "mobile" connect "/usr/sbin/chat -s -S -V -t 5 -f /etc/ppp/cdma.chat" |
- Создаем файл /etc/ppp/cdma.chat
| Code: /etc/ppp/cdma.chat |
|
'' '' # " - Это не две двойных кавычки, а четыре одинарных '' 'ATZ' # " - Это не двойные кавычки, а две одинарных 'OK' 'ATI' 'OK' 'ATDT#777' 'CONNECT' 'ATO' |
- Пробуем
# pon cdma
[править] Настройка соединения через скрипты инициализации системы
[править] Настройка соединения для baselayout-1
[править] Настройка соединения для baselayout-2
| Предупреждение: : В связи с тем, что baselayout-2 находится в стадии разработки формат переменных в файле /etc/conf.d/net отличается в разных RC. Приведенный ниже пример оказался работоспособен с версиями rc4-r1, rc6 и rc6-r1, однако это отнюдь не означает, что он будет работоспособен с другими RC |
- Устанавливаем пакет, который реализует поддержку протокола точка-точка (point-to-point protocol)
# emerge ppp
- Создаем символьную ссылку на файл /etc/init.d/net.lo для нашего нового интерфейса (например, ppp0)
# ln -s /etc/init.d/net.lo /etc/init.d/net.ppp0
- Добавляем необходимые настройки в файл /etc/conf.d/net
| Файл: /etc/conf.d/net |
|
link_ppp0="/dev/ttyUSB0"
password_ppp0='internet'
" chat_ppp0=" \
" |
| Предупреждение: Для baselayout-2.0.0_rc4-r1 указанных настроек достаточно, однако в baselayout-2.0.0_rc6 и baselayout-2.0.0_rc6-r1 содержится баг, а именно, переменная chap_ppp0 не передается в скрипт инициализации pppd, поэтому для rc6 и rc6-r1 необходимы дополнительные "пляски с бубном" |
- Редактируем файл:
- для архитектуры x86 - /lib/rc/net/pppd.sh;
- для архитектуры amd64 - /lib64/rc/net/pppd.sh
- Находим в файле строку
| Файл: /lib[64]/rc/net/pppd.sh |
|
- И заменяем ее на строки
| Файл: /lib[64]/rc/net/pppd.sh |
|
- Можно проверять
# /etc/inin.d/net.ppp0 start
| Примечание: Для поднятия интерфейса требуется некоторое время (как правило, секунд 10) после запуска скрипта, поэтому не переживайте, если у Вас сразу не появилось подключение. Надо немножно подождать |
| Примечание: При старте и остановке интерфейса могут появляться сообщения
ppp0: error fetching interface information: Device not found их природа мне неизвестна, но и с ними все замечательно работает |
- Если необходимо, чтобы соединение поднималось при загрузке системы - добавляем интерфейс в загрузочные скрипты
# rc-update add net.ppp0 default
| Примечание: В этом случае целесообразно убрать опцию "updetach" из файла "/etc/conf.d/net" чтобы неполадки с одним интерфейсом не препятствовали загрузке всей системы |
| Примечание: В связи с тем, что init-скрипты 2-ой версии постоянно меняются, они достаточно чувствительны к формату написания переменных, поэтому рекомендую сначала провести настройку в строгом соответствии с тем, что написано выше, а только потом начинать заточку "под себя" |
