Showing posts with label сеть. Show all posts
Showing posts with label сеть. Show all posts

Wednesday, 22 October 2008

Настройка vpn подключения в linux

Многие провайдеры используют vpn, в сети есть много различных инструкций по настройке подключения к vpn серверу, но в каждой из них что-нибудь не хватало для моего случая, поэтому я решил написать свою.

Для настройки vpn подключения необходимо иметь в ядре поддержку PPTP, также необходимо установить пакеты pptpclient, ppp.

Сначала необходимо сконфигурировать сетевой интерфейс, в Debian это делается очень просто в файле /etc/network/interfaces.

# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

iface eth0 inet dhcp #означает что ip адресс, адресса dns серверов и маршруты получаем от dhcp сервера
post-up /etc/routes #скрипт, который выполняется после поднятия интерфейса, очень полено если dhcp выдаёт кривые маршруты
auto eth0



файл /etc/ppp/peers/prov содержит параметры конкретного подключения


persist
pty "pptp 10.129.10.2 --nolaunchpppd" # адрес vpn сервера
#pty "/usr/sbin/pppoe -I eth0 -T 80 -C prov_name" # В случае использоваия PPPoE все настройки отличаются только этой строчкой
name # здесь писать свой логин
ipparam prov
file /etc/ppp/options.pptp



файл /etc/ppp/options.pptp содержит опции работы ppptp демона


# Использовать pppX в качестве шлюза по умолчанию
defaultroute

# Использовать вместо шлюза по умолчанию
replacedefaultroute

# Не использовать сжатие
nodeflate

# Не использовать BSD сжатие
nobsdcomp


# Запрашивать аутентификацию перед отправкой или приёмом пакетов
#auth

# Использовать аппаратный контроль потока данных ( RTS/CTS) через последовательный порт.
crtscts

# Использовать аппаратный контроль потока данных ( RTS/CTS) через последовательный порт.
#xonxoff

# Определяет последовательность прерывания подключения
#escape 11,13,ff


# Блокировать устройство после запуска pppd
lock

# Не показывать пароль при использовании PAP аутентификации(включено по умолчанию)
hide-password

# Показывать пароль при использовании PAP аутентификации
#show-password

# Установить значение MRU [Maximum Receive Unit] определяет размер (в байтах) максимального блока, который может быть принят на канальном уровне коммуникационного протокола. pppd
# Минимальное значение MRU равно 128. Значение по умолчанию 1500.
# Значение 296 рекомендуется для медленных подключений (40 байт для TCP/IP заголовка + 256 байт данных).
mru 1500Option nopredictor added. It defines if predictor corrector algorithm is used or not. Option noconviter added. It skips convergence double checking in ...

# Установить значение маски подсети
netmask 255.255.255.0

# При наличии интерфеса с заданным ip адрессом pppd будет пытаться использовать этот адрес, параметр noipdefault пресекает эти попытки
noipdefault

# При включенном параметре pppd после неудачной попытки подключения будет ожидать подключения с другой стороны
#passive

# С этой опцией pppd начнёт передавать свои пакеты только после получения пакета от удалённой системы
# используется при подключении к медленным системам
#silent


# Оставаться в терминале, иначе pppd станет фоновым процессом
#-detach


# Выводить отладочную информацию
#debug

# Добавлять имя домена к имени кмпьютера
#domain

# Включить вывод отладочной информации драйвера PPP уровня ядра
#kdebug n

# Установить значение MTU [Maximum Transmit Unit] используется для определения максимального размера блока (в байтах), который может быть передан на канальном уровне коммуникационного протокола.. Unless the peer
mtu 1492

# Установить имя машины
#name

# Использовать в качестве name hostname, перезаписывает опцию name
#usehostname

# Задать имя удалённой системы для аутентификации
#remotename

# Добавить в ншу таблицу соответствия физических и ip адрессов ip адресс удалённой машины, ассоциированный
# с физическим адрессом нашей сетевой карты (не использовать если сервер находится в другом сегменте сети)
#proxyarp

noproxyarp

# Отключить протоколы IPXCP и IPX.
#noipx

# Не переподключаться в случае разрыва, задано по умолчанию
#nopersist

# Переподключаться в случае разрыва
persist

# Выключить pppd после неудачных попыток подключения
maxfail 2

# Инициализировать соединение только по требованию, например когда приходят пакеты.
# С этой опцией, удалённый IP должен быть задан
#demand

# Если этот парамтр задан то связь будет разорвана через секунд простоя, каждый считаюсчийся траффиком пакет сбрасывает этот таймер
#idle

# Время которое нужно ждать перед повторным подключением после разрыва связи
holdoff 10

# Задержка в миллисекундах после выполнения подключения до начала передачи пакетов
#connect-delay

# Позволяет задать фильтр, показывающий какие пакеты считать траффиком, а какие нет
# фильтр по дефолту tcpdump считает траффиком все пакеты
#active-filter



Осталось записать в /etc/ppp/chap-secrets логин и пароль и можно подключаться командой pppd call prov

Tuesday, 1 July 2008

Настройка adsl в linux

Вот и наступили каникулы, вдалеке от москвы в лучшем случае можно получить медленное adsl подключение. Подлючение к телефонной линии естественно производиться через модем, подключение компьютера к модему производиться витой парой, компьютеру присваивается статический ip вида 192.168.1.x .На сайтах некоторых провайдеров есть инструкции по настройке подключения в linux, на сайте моего провайдера (elcom.ru) таких не оказалось, в службе тех поддержки тоже ничем помочь не смогли, после долгих и безуспешных попыток настроить подключение классическими методами(создание файлов /etc/ppp/peers/elcom и т.д. ) я открыл для себя пакет утилит rp-pppoe, далее подключение производиться очень просто
устанавливаем софт
tar xzvf rp-pppoe-3.5.tar.gz
# ./configure
# make
# make install


запускаем
#adsl-setup
и отвечаем а вопросы

после чего можно подключаться
#adsl-start

и отключаться
#adsl-stop

Год назад, настраивая dial-up подключение у того же провайдера тоже было много проблем, в техподдержке ничего не говорили и я долго ковырялся в конфигах пока методом тыка не обнаружил что необходимо поставить опцию stupid-mode, которой, кстати, нет в kppp, она есть в gnome-ppp, но я предпочёл wvdial.

Sunday, 2 September 2007

Настройка GPRS подключения в Linux через bluetooth

Буду писать о граблях, на которые я наступил, настраивая GNU/Linux, начну с настройки bluetooth и gprs:

настройка bluetooth+gprs в GNU/Linux
OS Debian etch 4.0 GNU/Linux kernel 2.6.21
bluetooth dongle Belkin BU-2083
phone Nokia 6021
bluez-utils 3.7-1
Для работы bluetooth в GNU/Linux были использованы драйвера Bluez, поставляемые с ядром.Ставим драйвера apt-get install bluez-utils, также необходимо наличие pppd.
Работоспособность bluetooth можно определить с помощью команды(от рута)
# hciconfig -a
hci0: Type: USB
BD Address: 00:0A:3A:6F:0A:76 ACL MTU: 1017:8 SCO MTU: 64:8
UP RUNNING PSCAN
RX bytes:7844 acl:182 sco:0 events:203 errors:0
TX bytes:3506 acl:161 sco:0 commands:61 errors:0
Features: 0xff 0xff 0x8d 0xfe 0x9b 0xf9 0x00 0x80
Packet type: DM1 DM3 DM5 DH1 DH3 DH5 HV1 HV2 HV3
Link policy: RSWITCH HOLD SNIFF PARK
Link mode: ACCEPT MASTER
Name: 'malafeev-0'
Class: 0x000100
Service Classes: Unspecified
Device Class: Computer, Uncategorized
HCI Ver: 2.0 (0x3) HCI Rev: 0x2073 LMP Ver: 2.0 (0x3) LMP Subver: 0x4127
Manufacturer: Broadcom Corporation (15)
UP означает, что адаптер работает, если не работает то необходимо исправить файл
/etc/bluetooth/hcid.conf, вот то что у меня(я исправил autoinit,security,class 0x100 это компютер):

#
# HCI daemon configuration file.
#

# HCId options
options {
# Automatically initialize new devices
autoinit yes;

# Security Manager mode
# none - Security manager disabled
# auto - Use local PIN for incoming connections
# user - Always ask user for a PIN
#
security auto;

# Pairing mode
# none - Pairing disabled
# multi - Allow pairing with already paired devices
# once - Pair once and deny successive attempts
pairing multi;

# Default PIN code for incoming connections
passkey "1234";
}

# Default settings for HCI devices
device {
# Local device name
# %d - device id
# %h - host name
name "%h-%d";

# Local device class
class 0x100;

# Default packet type
#pkt_type DH1,DM1,HV1;

# Inquiry and Page scan
iscan enable;
pscan enable;

# Default link mode
# none - no specific policy
# accept - always accept incoming connections
# master - become master on incoming connections,
# deny role switch on outgoing connections
lm accept,master;

# Default link policy
# none - no specific policy
# rswitch - allow role switch
# hold - allow hold mode
# sniff - allow sniff mode
# park - allow park mode
lp rswitch,hold,sniff,park;
}


Перезапускаем сервисы Bluetooth
# /etc/init.d/bluetooth restart
Restarting bluetooth: hcid sdpd rfcomm.

От обычного пользователя даём команду :
$ hcitool scan
Scanning ...
00:16:BC:D6:92:1D Nokia 6021
записываем mac-адрес телефона.
Связь с телефоном можно проверить так:
# l2ping 00:16:BC:D6:92:1D
Ping: 00:16:BC:D6:92:1D from 00:0A:3A:6F:0A:76 (data size 44) ...
0 bytes from 00:16:BC:D6:92:1D id 0 time 31.91ms
0 bytes from 00:16:BC:D6:92:1D id 1 time 9.62ms
0 bytes from 00:16:BC:D6:92:1D id 2 time 8.39ms

Список поддерживаемых профилей bluetooth можно получить с помощью команды:
$ sdptool browse phone_mac, где phone_mac-mac адрес телефона.

При связывании телефон запросит pin, этот-же pin необходимо ввести в компьютер, в старых версиях bluez использовалась утилита pin_helper, путь к которой прописывался в файле /etc/hcid.conf, в новых версиях используется утилита passkey-agent, идём в /usr/share/doc/bluez-utils/examples, распаковываем и собираем утилиту(от рута, понадобится пакет libdbus-1-dev), далее запускаем её
./passkey-agent --default 1234, она будет висеть и передавать в bluez указанный pin.


Далее начлось самое интересное, необходимо связать телефон с /dev/rfcommX , где X-номер порта, у меня X=0, это можно сделать двумя способами:
1) с помощью правки файла /etc/bluetooth/rfcomm.conf(необходимо внести mac-адрес телефона), что я и сделал, затем, выполнил команду
# echo ATZ > /dev/rfcomm0, телефон запросил pin, я ввёл 1234, телефон сказал подключено затем через несколько секунд отключено.
2)с помощью команды rfcomm connect :
rfcomm connect rfcomm0 00:16:BC:D6:92:1D 1
при первом подключении телефон запросит pin(passkey-agent должен быть запущен)

Далее необходима настройка pppd:
1)В файл /etc/ppp/peers/mts записываем
/dev/rfcomm0 57600
connect '/usr/sbin/chat -v -f /etc/ppp/chat/mts'
noauth
defaultroute
lock
debug
novjccomp
nopcomp
noaccomp
nodeflate
novj
nobsdcomp
default-asyncmap
ipcp-accept-local
ipcp-accept-remote
usepeerdns
user mts
nodetach
2) в /etc/ppp/chat/mts записываем
TIMEOUT 5
ECHO ON
ABORT '\nBUSY\r'
ABORT '\nERROR\r'
ABORT '\nNO ANSWER\r'
ABORT '\nNO CARRIER\r'
ABORT '\nNO DIALTONE\r'
ABORT '\nRINGING\r\n\r\nRINGING\r'
'' \rAT
TIMEOUT 12
OK ATH
OK ATE1
OK AT+CGDCONT=1,"IP","internet.mts.ru"
OK ATD*99***1#
CONNECT
3) в файл /etc/ppp/pap-secrets записываем
mts ppp0 "mts"

подключаемся pppd call mts(от рута)