Translate

Показ дописів із міткою ubuntu. Показати всі дописи
Показ дописів із міткою ubuntu. Показати всі дописи

понеділок, 20 квітня 2015 р.

Docker. Setup and configuration

Останнім часом дуже часто пишуть про Docker та його можливості, дехто навіть приписує йому мало не магічні вміння. Тож у цій статті спробуємо розібратись, що таке Docker і чи потрібно все кидати та мігрувати на нього.

Docker - це один із різновидів контейнерної віртуалізації. Контейнерна віртуалізація не використовує віртуальні машини, як у випадку з повною віртуалізацією, а створює віртуальне середовище з власним простором процесів та мережевим стеком. Всі контейнери хосту використовують один екземпляр ядра хостової системи.

Головними перевагами контейнерної віртуалізації є: зручність у адмініструванні, щільніше розміщення віртуальних контейнерів в хост-системі, дещо краща продуктивність в порівнянні з технологіями повної віртуалізації та економніше використання місця на дисковій системі.

вівторок, 16 вересня 2014 р.

Configure Linux сlients to authenticate through OpenLDAP

Раніше я писав про установку та налаштування OpenLDAP серверу. Тож наразі прийшов час налаштування клієнтів для аутентифіікації через центральний сервер. Це так би мовити продовження попередньої статті, яку бажано прочитати спочатку.

Логінимось на клієнт та встановлюємо додаткові пакети:

# apt-get install libnss-ldap libpam-ldap nscd

Дебіан підтримує конфігурацію сервісів під час установки (шах і мат, RPM-щики), тому одразу відповідаємо на питання налаштування.

Вводимо адресу LDAP-сервера у вигляді ldap://1.2.3.4:

субота, 14 грудня 2013 р.

Використання Innobackupex (Xtrabuckup) для бекапу MySQL

Mysqldump буде влаштовувати вас лише до того моменту, доки він зможе знімати дамп на протязі прийнятного часу. База збільшується і це саме час задуматись про альтернативи. І такою альтернативою може бути Xtrabackup.

Xtrabackup - розробка компанії Percona, програма, що дозволяє робити бекап MySQL-серверів і не блокує базу данних на протязі бекапу. Xtrabackup може працювати з InnoDB, XtraDB і MyISAM (проте з певними обмеження на кшталт інкрементальних бакапів) таблицями. Мабуть, головною особливістю Xtrabackup є його висока швидкість роботи, на відміну від Mysqldump-а, що пояснюється тим, що він працює на бінарному рівні (умовно кажучи, копіює бінарні файли /var/lib/mysql, а не генерує запити як mysqldump).

Для початку я б хотів би розповісти логіку роботи програми Xtrabackup (точніше як я її розумію) і почну саме з особливостей роботи InnoDB. Запити, що генерують користувачі, приходять на mysql-server, записуються у лог транзакцій (mysql bin log) а потім виконуються. Результати запитів одразу не пишуться на жорсткий диск і лишаються в кешах.


У випадку падіння демону Mysql (причин насправді може бути купа), то при наступному старті почнеться відновлення останніх операцій із бін-логу і таким чином база лишиться неушкодженою.

середа, 11 грудня 2013 р.

MySQL/InnoDB one file per table

Після видалення бази данних чи таблиці MySQL розмір файлу ibdata1 не змінюється, що в результаті може призвести до повного заповнення диску. Для вирішення цієї проблеми існує опція innodb_file_per_table, що дозволяє зберігати кожну таблицю в окремому файлі на відміну від стандартної поведінки зберігання таблиць. Як наслідок, при видаленні таблиці, видалиться файл, що відповідає за її вміст та звільниться простір на диску. Опція innodb_file_per_table увімкнена по замовчуванню в Mysql версії 5.6.6 і старше.

Щоб перейти до нового варіанту зберігання таблиць необхідно виконати декілька пунктів. Розглянемо варіант міграції всіх баз на новий метод їхнього зберігання. Перш за все, про всяк випадок, забекапимо всю директорію /var/lib/mysql:

# cd ~
# mkdir backup
# cd backup
# service mysql stop
# cp -ra /var/lib/mysql mysqldata_backup
# service mysql start

Зробимо дамп всіх існуючих баз:

# mysqldump --routines --events --flush-privileges --all-databases > all-db.sql

понеділок, 9 грудня 2013 р.

MySQL/Galera replication with Haproxy balancing

MySQL/Galera - синхронний мульти-майстер кластер для MySQL/InnoDB бази данних, що володіє такими перевагами:
- синхронна реплікація.
- аctive-active мульти-майстер топологія
- читання чи запис на будь-яку ноду кластеру.
- автоматичний контроль членів кластеру: проблемні члени будуть автоматично виключені з діючого кластеру.
- автоматичне (просте) додавання додаткових серверів до кластеру. Зручне масштабування.
- справжня паралельна реплікація, на рівні рядків.

Додам, що звичайна реплікація типу master-master не є синхронною. На активному майстрі всі запити спочатку будуть записані в binlog і лише потім будуть передані на інший пасивний MySQL-майстер (слейв), запити на пасивному сервері можуть виконуватись із значною затримкою. У випадку із Galera запити на кожній ноді виконуються одночасно, або майже одночасно.

MySQL/Galera кластер використовує бібліотеку Galera для реалізації реплікації, що працює через MySQL wsrep API (патчена версія MySQL)



Як я вже згадував Galera допускає запис на будь-яку ноду кластеру, навіть одночасні записи із різних нод в одну таблицю. Все це завдяки алгоритму сертифікації транзакцій:
Логіка алгоритму сертифікації приблизно така: SQL-запити приходить на різні сервери кластеру і якщо вони конфліктують між собою (наприклад, запис в той самий рядок таблиці) відбувається роллбек і послідовне виконання запитів (виправте, якщо я помиляюсь).

понеділок, 7 жовтня 2013 р.

Установка Redmine (Nginx у якості frontend)

Відносно нещодавно я писав як установити систему управління проектами та відстежування помилок Atlassian Jira. Проте ймовірно вона влаштовує не всіх, адже як кожна річ вона має свої недоліки та і ліцензія на цей програмний продукт коштує зовсім не дешево. Тому як альтернативу я пропоную Redmine, open source рішення на ruby, що є повністю безкоштовним і розповсюджується під ліцензією GPL v2. Варто також зауважити, що Redmine має клієнти під ОС Android та Iphone.

У цій статті піде мова про установку системи управління проектами та відстежування помилок Redmine, що працюватиме під ОС Ubuntu 13.04, у якості веб-серверу будемо використовувати Nginx та Thin (веб-сервер для Ruby).

Почнемо із установки Redmine. Сирці можна скачати багатьма способами: через Git/SVN/Mercurial репозиторій, чи просто як tar.gz чи zip-архів із RubyForge. Подробиці тут http://www.redmine.org/projects/redmine/wiki/Download.

1. Скачаємо Redmine і розпакуємо:

# wget http://rubyforge.org/frs/download.php/77138/redmine-2.3.3.tar.gz
# tar xvfz redmine-2.3.3.tar.gz
# mv redmine-2.3.3 /var/www/

2. У якості бази даних будемо користуватись MySQL. Установлюємо його та переходимо до створення користувача і самої бази:

mysql> CREATE DATABASE redmine CHARACTER SET utf8;
mysql> GRANT ALL PRIVILEGES ON redmine.* TO 'redmine'@'localhost' IDENTIFIED BY 'my_password';


понеділок, 2 вересня 2013 р.

Compile into deb-package

Не всі розробники пропонують бінарні пакети своїх програм і як результат їх необхідно зібрати. Наприклад, я полюбляю користуватись переглядачем фотографій Viewnior та простим регулятором гучності Volumeicon, але вони не розповсюджуються як deb-пакети. Звісно можна виконати установку make install скриптом, але така установка не завжди бажана, адже можуть з'явитись проблеми під час видалення програми і т.п.

Для початку розберемось як перекомпілювати deb-пакет, що наявний в репозиторію Debian/Ubuntu.

Перевіряємо доступність source-репозиторіїв. Якщо вони відсутні - необхідно їх дозволити:

$ grep deb-src /etc/apt/sources.list
deb-src http://us.archive.ubuntu.com/ubuntu/ raring main restricted
deb-src http://us.archive.ubuntu.com/ubuntu/ raring-updates main restricted
deb-src http://us.archive.ubuntu.com/ubuntu/ raring universe
deb-src http://us.archive.ubuntu.com/ubuntu/ raring-updates universe
deb-src http://us.archive.ubuntu.com/ubuntu/ raring multiverse
deb-src http://us.archive.ubuntu.com/ubuntu/ raring-updates multiverse
deb-src http://us.archive.ubuntu.com/ubuntu/ raring-backports main restricted universe multiverse
deb-src http://us.archive.ubuntu.com/ubuntu/ raring-security main restricted
deb-src http://us.archive.ubuntu.com/ubuntu/ raring-security universe
deb-src http://us.archive.ubuntu.com/ubuntu/ raring-security multiverse
deb-src http://archive.canonical.com/ubuntu raring partner
deb-src http://extras.ubuntu.com/ubuntu raring main

пʼятниця, 10 травня 2013 р.

Віртуалізація з KVM

KVM (або Kernel-based Virtual Machine) - це програмне рішення, що забезпечує віртуалізацію в середовищі Linux на платформі x86 (а з версією ядра 3.9 для ARMv7 також), яка підтримує апаратну віртуалізацію на базі Intel VT або AMD SVM.
Програмне забезпечення KVM складається з завантаження модуля ядра (що зветься kvm.ko), що надає базовий сервіс віртуалізації, специфічного для процесора модуля kvm-amd.ko або kvm-intel.ko, і компонентів для користувача режиму (модифікованого QEMU). Всі компоненти KVM є програмним забезреченням із відкритим вихідним кодом. Компонент ядра, необхідний для роботи KVM, включений в основну гілку Linux починаючи з версії 2.6.20 (лютий 2007). Тож для роботи з даним типом віртуалізації варто мати лише ядро більш-менш сучасної версії.
Самостійно KVM не виконує емуляції. Замість цього програма (QEMU), що працює в просторі користувача, використовує інтерфейс /dev/kvm для налаштування адресного простору гостя віртуальної машини, через нього ж і емулює пристрої введення-виведення і відеоадаптер. (c) Wikipedia

Тож приступаємо! Установка КVM віртулізації буде проведено для Ubuntu 12.10. Спершу перевіримо чи підтримує процесор хост-системи апаратну віртуалізацію:

# egrep '(vmx|svm)' --color=always /proc/cpuinfo

Має видати щось на зразок цього:

flags:  fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc aperfmperf pni dtes64 monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr pdcm pcid sse4_1 sse4_2 popcnt lahf_lm arat dtherm tpr_shadow vnmi flexpriority ept vpid

Якщо вивід відсутній - то можна завершувати спроби встановлення KVM, адже даний тип віртуалізації не працює на процесорах без підтримки SVM чи Intel VT. Як варіант можна використати XEN PV (паравіртуалізацію), що власне є також дуже хорошим варіантом. Але загалом у всіх відносно сучасних процесорах не має бути таких проблем.
Тепер встановимо супутнє програмне забезпечення:

# sudo -i
# apt-get install ubuntu-virt-server python-vm-builder kvm-ipxe

vm-builder - це python-скрипт для зручного створення віртуальних машин Ubuntu.
Додамо користувача root в групи libvirtd та kvm:

# adduser `id -un` libvirtd
# adduser `id -un` kvm

Перелогінюємось і перевіряємо чи коректно було встановлено KVM:

# virsh -c qemu:///system list
  Id    Name                           State
----------------------------------------------------

четвер, 25 квітня 2013 р.

MySQL Sandbox (декілька MySQL-демонів різних версій на одному хості)



Продовжуємо розгляд установки декількох mysql-демонів на одному хості. Цього разу мова піде про Mysql Sandbox.

Mysql Sandbox - це набір скриптів на Perl для автоматизації та швидкого розвертання інстансів MySQL: за допомогою нього можна лиш однією командою підняти одночасно декілька mysql-демонів різних версій,  налаштувати реплікацію різних типів тощо. Причому установка додаткових інстансів не зачіпає директорій оригінального mysql, якщо він присутній на сервері. Насправді дуже корисно мати такий інструмент для тестування нових фіч чи для перевірки поведінки реплікації при певних діях.

Для початку завантажимо tar-архів mysql необхідної версії:


# wget -O mysql-5.6.11-linux-glibc2.5-x86_64.tar.gz http://www.mysql.com/get/Downloads/MySQL-5.6/mysql-5.6.11-linux-glibc2.5-x86_64.tar.gz/from/http://cdn.mysql.com/

Тепер переходимо до самого завантаження Mysql Sandbox:

# wget https://launchpad.net/mysql-sandbox/mysql-sandbox-3/mysql-sandbox-3/+download/MySQL-Sandbox-3.0.33.tar.gz

Розпаковуємо і переходимо в директорію:

# tar xvfz MySQL-Sandbox-3.0.33.tar.gz
# cd MySQL-Sandbox-3.0.33

І тепер власне потрібно визначитись з користувачем від якого будуть працювати mysql-інстанси. Це може бути рут чи звичайний користувач (на ваш вибір). Для рута виконуємо наступне:

# export SANDBOX_AS_ROOT=1

четвер, 18 квітня 2013 р.

Mysqld_multi: декілька демонів mysql на одному хості

Іноді постає необхідність встановити ще одну базу даних на тому ж хості, але просто на іншому порту. І як показала практика, краще за все це робити за допомогою функціоналу mysqld_multi, котрим володіють останні версії mysql.

1) Ясна справа у вас має бути встановлений mysql-server та mysql-client.

2) Зупиняємо наявний демон, якщо його запущено, бекапимо конфіг /etc/mysql/my.cnf (чи просто /etc/my.cnf).

3) Створюємо новий:

cat /etc/my.cnf

[mysqld_multi]
mysqld = /usr/bin/mysqld_safe
mysqladmin = /usr/bin/mysqladmin

[mysqld1]
datadir = /var/lib/mysql1
socket = /var/lib/mysql1/mysql.sock
pid-file = /var/run/mysqld/mysqld1.pid
user = mysql
port = 3306
log-error=/var/log/mysqld1.log

[mysqld2]
datadir=/var/lib/mysql2
socket=/var/lib/mysql2/mysql.sock
pid-file = /var/run/mysqld/mysqld2.pid
user=mysql
port = 3307
log-error=/var/log/mysqld2.log

[mysqld3]
datadir=/var/lib/mysql3
socket=/var/lib/mysql3/mysql.sock
pid-file = /var/run/mysqld/mysqld3.pid
user=mysql
port = 3308
log-error=/var/log/mysqld3.log

вівторок, 25 грудня 2012 р.

Nginx as reverse proxy for Apache

Усім відомо, що Apache є стандартом де-факто для веб-серверів. Розробники деяких CMS взагалі рекомендують користуватись саме Apache, і для налаштування їх під інший веб-сервер іноді необхідно попотіти. Але також ні для кого не є секретом, що Apache - важкий і ресурсоємкий сервер і на великих проектах від себе показує, м'яко кажучи, не дуже.
Тож одним із самих швидких варіантів оптимізації буде використання веб-серверу Nginx, як фронтенду до Apache. Тобто Nginx буде обробляти всю статику (запити на картинки, джаваскрипти, css і тд), а у випадку якщо відбудеться запит на php-скрипт чи щось таке (динамічний контент) - запит буде відправлено на обробку нашому "жирному" другу Apache-у.
Як показує практика такий варіант значно (!) економить ресурси серверу, адже запущених дочірніх процесів apache буде менше, з левовою часткою запитів буде справлятись Nginx.
Перейдемо до конфігурації.

1) Встановлюємо Apache (чи щось інше що буде у вас бекендом) та nginx з усіма запропонованими залежностями.

2) Конфігуруємо Nginx, щоб він слухав стандартний 80-порт і віддавав всю статику напряму, якщо буде запрошено динамічний контент  - запит буде відсилано Apache-y.

cat /etc/nginx/nginx.conf

# Використовуємо користувача від якого працює сервер Apache
user www-data;
# Кількість дочірніх процесів, обирають за к-тю ядер CPU
worker_processes 4;
worker_rlimit_nofile 8192;

# Місцезнаходження логу помилок і pid-файлу
error_log /var/log/nginx/error.log;
pid /var/run/nginx.pid;

events {
  worker_connections 1024;
  use epoll;
  accept_mutex off;
}

http {
  server_names_hash_bucket_size 64;
  include /etc/nginx/mime.types;
  default_type application/octet-stream;
  access_log /var/log/nginx/access.log;
  sendfile on;
  tcp_nopush on;
  keepalive_timeout 65;

  # Опції reverse proxy
  proxy_redirect off;
  proxy_set_header Host $host;
  proxy_set_header X-Real-IP $remote_addr;
  proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

  # Опції gzip компресії.
  gzip on;
  gzip_http_version 1.0;
  gzip_comp_level 6;
  gzip_min_length 0;
  gzip_buffers 16 8k;
  gzip_proxied any;
  gzip_types text/plain text/css text/xml text/javascript application/xml application/xml+rss application/javascript application/json;
  gzip_disable "MSIE [1-6]\.";
  gzip_vary on;

  # Включення додаткових конфігураційних файлів
  include /etc/nginx/sites-enabled/*.conf;
}

четвер, 8 вересня 2011 р.

Налаштування Nagios 3 + NRPE

В цій статті хочу коротко описати про налаштування системи моніторингу Nagios. Надалі планую статтю доповнити. Тож приступимо.

1) Встановлюємо необхідні пакети:

# apt-get install nagios3

По залежностях має потягнути за собою купу всього разом з апачем.

apache2-mpm-prefork apache2-utils apache2.2-bin apache2.2-common bsd-mailx libapache2-mod-php5 libapr1 libaprutil1 libaprutil1-dbd-sqlite3 libaprutil1-ldap
  libgd2-noxpm libnet-snmp-perl libpq5 libradius1 nagios-images nagios-plugins nagios-plugins-basic nagios-plugins-standard nagios3-cgi nagios3-common
  nagios3-core php5-cli php5-common postfix snmp whois

2) Створюємо юзера та пароль:

# cd /etc/nagios3; htpasswd -c htpasswd.users nagiosadmin

Тепер можна залогінитись на нагіос і побачити приблизно таке:

четвер, 12 серпня 2010 р.

Використання мобільного телефону у якості модему в Ubuntu 10.04

Всім привіт. Ось виявилась чудова нагода, вирішив поділитись досвідом. До створення статті мене підштовхнула відсутність як такого звичайного провідного інтернету, а дивитись "Криве дзеркало" по телевізору - це є зовсім не добра альтернатива. Але потім, згадавши, що таки маю телефон з можливістю використовувати його як модем, вирішив використати GSM-мережу для коннекту зі світом. Дана робота була пророблена з операційною системою Ubuntu Linux 10.04, але, я думаю, працюватиме на будь-якому пінгвіні.
Тож до діла! Перш за все, встановимо допоміжний софт, для убунти/дебіана це робиться так:

sudo aptitude install wvdial

Це PPTP-дзвонилка, man wvdial розповість вам про неї більше. Підключивши телефон, далі робимо наступне:

середа, 8 липня 2009 р.

Монтування файлової системи. Fstab

Файл /etc/fstab є в будь-якому дистрибутиві Linux: він пов'язаний з монтуванням файлових систем. Впринципі структура файлу неважка, але поява багатьох файлових систем значно його ускладнили. Добре перевірте файл fstab, адже коли його невірно відредагувати і зберегти система може не завантажитись взагалі. Отже, спробуймо в ньому розібратись.


(для перегляду таблички натисни на неї )


Кожний рядок файлу fstab розбивається на 6 полів (див. таблицю):

>>Поле 1. Пристрій, що має файлову систему, тобто розділ, що монтується. В останніх дистрибутивах в цьому полі записані мітки томів або UUID.

>>Поле 2. Точка монтування, каталог в який буде проходити монтування. Власне, перед монтуванням потрібно створити цей каталог, інакше система при завантаженні видасть помилку монтування.

>>Поле 3. Тип файлової системи розділу. Можна вказати параметр auto, що означає самостійно визначати тип файлової системи.

>>Поле 4. Тут задаються опції монтування. Дуже часто ці параметри залежать від того, який тип файлової системи, що буде монтуватись. Тобто, якщо розділ з файловою системою ext3 нормально монтувався з певними параметрами, то це не значить, що розділ ntfs також нормально примонтується з цими параметрами, і, зазвичай, він таки нормально не примонтується. Якщо параметри вказувати не треба, напишіть тут слово "defaults"(по замовчуванні default всатновлює такі опції: async, auto, dev, exec, nouser, rw, suid)

>>Поле 5. Зараз його майже не використовують. Воно використовується dump-ом (програмою створення інкрементних резервних копій) і визначає розділи, котрі потрібно архівувати.

>>Поле 6. Це поле визначає порядок, в якому файлові системи будуть перевірятись (програмою fsck) після збою системи і т.п. Воно приймає значення '1' для кореневого розділу (тобто перевірка в першу чергу) і '2' для всіх інших розділів. Для CD/DVD в цьому полі вповинен стояти '0', думаю, зрозуміло чому.

Ну і накінець розглянемо найбільшуживаніші опції монтування:

noauto - не монтувати розділ під час завантаження ОС, заборонене автоматичне монтування.

auto - автоматичне монтування сисемою розділа, при виявлені його або виконанні команди mount -a

user - дозволити звичайним користувачам (не root) монтувати пристрій. nouser відповідно навпаки, дозволяється лише root-у.

owner - власником змонтованого диску стане користувач, котрий його змонтував.

ro - монтувати в режимі тільки для читання. Такий параметр встановлюється на монтування розділу "/" задля підвищення безпеки.

rw - монтувати в режимі читання/запис.

noatime - не оновлювати час останнього доступу о файлу. Часом це підвищує продуктивність. В Ubuntu використовується аналогічна опція "relatime".

sync - синхронізує всі операції запису (дані одразу пишуться на диск). Про значення async писати не буду, думаю, зрозуміло.

nosuld - нівелює дії атрибутів "setuid" та "setgid". Ця опція часто призначається з'ємними носіями (наприклад, usb-драйви). Вона не дозволить взломщикам отримати доступ адміністратора, наприклад, за допомогою CD з оболочкою з установленим бітом setuid, власником якого є root.

exec - дозвіл на виконання скриптім та програм на диску. noexec відповідно протилежна опція.

gid=ID - призначення ID групи.

id=ID - призначення ID користувача.

Мало не забув навести типові приклади монтування розділів різних файлових систем.
Отже, для FAT32, 16 і т.д.:

/dev/логічний_розділ_диску /media/папка_монтування vfat umask=0, utf8 0 0

для NTFS:

/dev/логічний_розділ_диску /media/папка_монтування ntfs-3g defaults, utf8, umask=007,gid=46 0 0

для EXT4 (для EXT3, EXT2, EXT рядок аналогічний, окрім значення параметру "Тип файлової системи", треба змінити його на відповідний):

/dev/логічний_розділ_диску /media/папка_монтування ext4 defaults 0 0

понеділок, 16 березня 2009 р.

Налаштування мережі KPI-IX (static IP) через консоль в Ubuntu

Буває, що іноді мережу через графіку налаштувати непросто (для мене чогось так завжди, на убунті 7.10 я шарив як то зробити, а тепер я навіть не знаю як там, в кде 4.0 в вас і можливості немає налаштувати то через графіку). Після цієї статті ви зрозумієте, що не все так важко, як могло здаватись на перший погляд. Отже,

sudo nano /etc/network/interfaces

В нього копіюємо

auto lo
iface lo inet loopback
address 127.0.0.1
netmask 255.0.0.0
# до цього місця нічого не міняємо, адже це параметри локальної петлі

auto eth0
iface eth0 inet static
address 10.XXX.X.XXX
netmask 255.255.255.0
gateway 10.YYY.Y.Y
dns-nameservers 10.7.1.X 10.7.1.Y

Сюди записуєте свої параметри.

Можна записати host-ім'я, відредактуйте /etc/hostname

sudo nano /etc/hostname

і туди запишемо свій хост-нейм у вигляді:

vasya

Ну ось і все. Не забуваймо перезапустити мережеву службу, що робиться так:

sudo /etc/init.d/networking restart

У випадку з DHCP , тобто коли вам айпі присвоюється автоматично, маємо записати в /etc/network/interfaces таке :

auto lo
iface lo inet loopback

auto eth0
iface eth0 inet dhcp


Знову ж таки, не забувайте після змін перевантажити мережу. І уважно дивіться, що на те відповідає команда перезапуску.

неділя, 15 березня 2009 р.

Налаштування VPN (PPTP) для операційної системи Ubuntu Linux

Власне, розглядаємо підключення до провайдера КПІ-телеком (http://kpitelecom.ntu-kpi.kiev.ua), маючи підключення до мережі KPI-IX.

1) В консолі виконумо команду від суперкористувача:

sudo aptitude install pptp-linux

PPTP - це протокол, за допомогою якого буде проходити підключення до провайдера. В вас перед цим повинна бути налаштована мережа та мережеві репозиторії, адже саме з них і буде встановлюватись вищезгаданий програмний пакет.

Слід зауважити, що в Убунту 10.04 і в 10.10 програмний пакет pptp-linux є по замовчуванню.

2) Cтворюємо файл за таким зразком:

sudo nano /etc/ppp/peers/kpitelecom

Туди копіюємо:

name ваш_логін (це не ваш номер до веб інтерфейсу, а логін типу vasya чи як там у вас )
remotename PPTP
lock
deflate 0
defaultroute
lcp-echo-interval 60
lcp-echo-failure 4
lcp-echo-interval 15
pty "/usr/sbin/pptp vpn2.ntu-kpi.kiev.ua --nolaunchpppd"


Зберігаємо написане - ctrl+O, виходимо - ctrl+X . Аналогічно зберігаємось далі.
3) Додаємо до файлу /etc/ppp/chap-secrets запис з вашим логіном та паролем:

ваш_логін(вищезгаданий) PPTP ваш_пароль

Не забуваймо зберегти написане.

4) Для налаштування маршрутизації потрібно виконати:

sudo route add -net 10.0.0.0/8 gw 10.xxx.yyy.zzz

Де 10.xxx.yyy.zzz – IP-адреса шлюзу у Вашій підмережі.

Маршрутизація потрібна для правильного розпізнавання системою понятть мережа Політеха та Інтернет.

Якщо є дефолтний шлюз – видаляємо його (а він таки є):

sudo route del default

Отже, до конекту до кпі-телекому таблиця роутів має виглядати приблизно так:


Звертаю увагу на відсутність дефолтного роуту, котрий мав би бути на початку (до налаштування впн-у) та на роут 10.0.0.0, гейтвей якого в моєму випадку floor3-gw.top7 (тобто 10.107.3.1). Коли ж вони до контакту з впн-ом відсутні, зрозуміло, що конекту не буде. Це по-суті, одна з найголовніших речей...

5) І нарешті:

sudo pon kpitelecom - підключення до свого аккаунту провайдера.

Для відконекчування використовуйте:

sudo poff

Часом говорять, що такі команди працюють не всіх лінуксових дистрах, тож можна конектитись ще так:

sudo pppd call kpitelecom

sudo killall pppd - ну це зрозуміло, я думаю.

6) Перевіримо чи з'явився інтерфейс підключення:

ifconfig ppp0

Реакція командного рядка:

ppp0 Link encap:Point-to-Point Protocol
inet addr:172.16.9.51 P-t-P:172.16.0.0 Mask:255.255.255.255
UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1450 Metric:1
RX packets:7 errors:0 dropped:0 overruns:0 frame:0
TX packets:7 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:3
RX bytes:55 (55.0 b) TX bytes:61 (61.0 b)


Це дуже добре, коли в Вас вийшло аналогічне.

7) А ну ж бо, спробуємо чи пінгуються сервери:

ping ukr.net

PING ukr.net (212.42.64.8) 56(84) bytes of data.
64 bytes from kaena.ukr.net (212.42.64.8): icmp_seq=1 ttl=60 time=1.64 ms
64 bytes from kaena.ukr.net (212.42.64.8): icmp_seq=2 ttl=60 time=2.31 ms
64 bytes from kaena.ukr.net (212.42.64.8): icmp_seq=3 ttl=60 time=2.05 ms

Невже....невже воно обмінюється пакетами??? :) Яке щастя...Нарешті, нарешті...!!!

8) Так як Убунта перезаписує роути при кожному перевантаженні, то буде корисно додати route add -net 10.0.0.0/8 gw 10.xxx.yyy.zzz та route del default в /etc/rc.local. Отже файл /etc/rc.local буде виглядати наступним чином:

#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.
route add -net 10.0.0.0/8 gw 10.xxx.yyy.zzz
route del default
exit 0

Останнім часом, після появи dhcp-сервера адрес, скрипт /etc/rc.local виконується раніше, ніж серевер присвоїть вам айпі (він в мене присвоються через 30-60 сек після ввімкнення), тобто запрацює мережа. Тож виходить що видаляються роути, яких ще не існує , бо /etc/rc.local не чекає увімкнення мережі і запускається одразу.  Тож , як непоганий варіант вирішення проблеми - додати в  /etc/network/interfaces команду що виконає одразу скрипт при підключенні:

auto lo
iface lo inet loopback

auto eth0
iface eth0 inet dhcp
up sh /etc/inet.sh


Скрипт /etc/inet.sh має виглядати так:

#! /bin/bash
route del default
route add -net 10.0.0.0/8 gw 10.XXX.X.X

Можна трохи про конект до кпітелекому прочитати тут

Ну це все.) Па-па.