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
emerge ppp
для ppp должны быть включены флаги pam,atp,dhcp (не достоверно, у меня работает без atp и dhcp)
emerge pptpclient

[править] Настройка клиента

Если все удалось, то теперь вам необходимо сконфигурировать клиент. Вот пример конфигурации /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
defaultroute
lock
crtscts

в /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


"mobile" * "internet" *

  • Создаем файл /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"


username_ppp0='mobile'

password_ppp0='internet'


pppd_ppp0=" \

updetach \
debug \
defaultroute \
usepeerdns \
ipcp-accept-local \
lcp-echo-interval 15 \
lcp-echo-failure 3 \
noaccomp \
nopcomp \
lock \
921600 \

"

chat_ppp0=" \

'' '' # " - Это не две двойных кавычки, а четыре одинарных \
'' 'ATZ' # " - Это не двойные кавычки, а две одинарных \
'OK' 'ATI' \
'OK' 'ATDT#777' \
'CONNECT' 'ATO' \

"

Предупреждение: Для 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
local chat="$(_get_array "chat_${IFVAR}")"
  • И заменяем ее на строки
Файл: /lib[64]/rc/net/pppd.sh
local chat=
eval chat=\$chat_${IFVAR}
set -- ${chat}
  • Можно проверять

# /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-ой версии постоянно меняются, они достаточно чувствительны к формату написания переменных, поэтому рекомендую сначала провести настройку в строгом соответствии с тем, что написано выше, а только потом начинать заточку "под себя"
Личные инструменты