HOWTO Соединение с Internet



Ссылка на оригинал: http://ru.gentoo-wiki.com/

C версии: 1.0

Изменено: 1.3



Настройка 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

Теперь необходимо собрать наше ядро. Без разницы, как вы скомпилировали эти части. Вы можете вкомпилировать все в ядро или собрать модулями. В конце вы должны подгрузить модули:

А затем запустите 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 используйте

он пока под маской "~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-соединений



Примечание (JohnBat26): Я использую perl скрипт: pptp-command для работы с VPN. Также можно воспользоваться Webmin. Взято с сайта провайдера 2Com:

/usr/sbin/pptp-command (появится после установки pptp-client)



Надо запустить этот скрипт из под пользователя root.

Затем выбрать:

Setup -> Manage CHAP secrets -> Add a New CHAP secret

Local Name: ВАШ_ЛОГИН

Remote Name [PPTP]: 2Com

Password: ВАШ_ПАРОЛЬ



Затем выбрать Quit



Затем выбрать:

Add a NEW PPTP Tunnel -> Other

Tunnel Name: 2Com

Server IP: 192.168.X.2 (здесь Х - номер вашей сети)

route: add default ppp0

route:

Local Name: ВАШ_ЛОГИН

Remote Name [PPTP]: 2Com

Затем выбрать Quit



ВНИМАНИЕ!!!!

проверьте наличие файла /etc/ppp/options.pptp

Файл /etc/ppp/options.pptp должен выглядеть след. образом:

lock

noauth

nobsdcomp

nodeflate

novj

novjccomp

nopcomp

noaccomp



Для установки VPN соединения надо запустить скрипт /usr/sbin/pptp-command

Затем выбрать:

start -> 2Com



Для разрыва VPN соединения надо запустить скрипт /usr/sbin/pptp-command

Затем выбрать:

stop



Через 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/inet.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, и сделает настройку соединения довольно тривиальной



chestnut-dialer

Замечательная звонилка которая к сожалению не поставляется в стандартных портах gentoo. ebuild можна взять здесь

Из плюсов

Из минусов

Настройка 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 комманд означает и экспериментируйте.

ats0=1s38=0s37=17-v90=0
ats0=1s38=0s37=17-v90=0+vcid=0

значение регистра s37 можна понижать до 14

ATS0=1+VCID=0&U1

Я лично подобрав подходящую строку инициализации, сохранил ее прямо в профиле модема...

Настройка выхода через GPRS

Если вы подключаетесь через GPRS с помощью звонилки (kppp, chestnut-dialer), может быть важным использование опции pppd - noipdefault !!!

Требуемая аппаратура

Для соединения по GPRS потребуется следующее:

Подключение с помощью 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
#rfcomm bind 0 00:60:57:D5:3B:BE 1

Этой командой мы подключили в rfcomm0 канал 1. Теперь телефон готов к работе. Осталось настроить соединения в конфигах pppd.

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.."

Подключение через 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)

Подключение аппаратуры

Настройка программного обеспечения

# emerge ppp

Code: /etc/ppp/chap-secrets

# Secrets for authentication using CHAP
# client server secret IPaddresses
"mobile" * "internet" *

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"

Code: /etc/ppp/cdma.chat

'' '' # "Это не кавычки, а два знака, который на клавиатуре слева от единички
'' 'ATZ' # "Это не кавычки, а два знака, который на клавиатуре слева от единички
'OK' 'ATI'
'OK' 'ATDT#777'
'CONNECT' 'ATO'

# pon cdma