пятница, 23 мая 2008 г.

Скрипт для упрощения монтирования CD-ROMа Автор: Антон [есть мнение]

Вот такой простой скрипт:

#!/bin/sh
retval=`/sbin/mount | grep /mnt/cdrom`
if [ -n "$retval" ];
then /sbin/umount /mnt/cdrom 1> /dev/null 2> /dev/null
if [ "$?" -ne 0 ];
then echo "Не могу размонтировать CDROM"
else echo "Размонтировал CDROM"
eject /dev/cdrom
fi
else /sbin/mount /dev/cdrom 1> /dev/null 2> /dev/null
if [ "$?" -ne 0 ];
then echo "Не могу смонтировать CDROM"
else echo "Примонтировал CDROM"
fi
fi


П.С. копируем в каталог /sbin под именем cdm. Сам определяет состояние

среда, 21 мая 2008 г.

Настройка exim

здесь

Дрова для Realtek 8185

Дрова для Realtek 8185
wiki

official drivers page

Опыт настройки USB-адаптера D-Link DWL-G122 в Ubuntu

отсюда

Мой опыт настройки USB-адаптера D-Link DWL-G122 в Ubuntu 7.10 Linux, но думаю что методика применима для большинства дистрибутивов (аналогичным методом точно можно настроить в Ubuntu 7.04)

Предисловие

Будем настраивать соединение Wi-Fi USB-адаптера D-Link DWL-G122 rev.C с точкой доступа в Ubuntu 7.10 Linux

Будем пользоваться windows-драйверами через ndiswrapper. Соответственно предполагается что ndiswrapper уже установлен в системе. Для Ubuntu 7.10 это пакеты ndiswrapper-common и ndiswrapper-utils-1.9 Естественно понадобятся и windows-драйвера.

В рассматриваемом адаптере используется чипсет производства Ralink. Проблема в том, что Linux считает, что он умеет работать с данным чипсетом. Соответственно при загрузке ОС мы с большой долей вероятности в выводе команды 'ifconfig -a' увидим сетевой интерефейс 'rausb0'

Все операции должны выполняться с правами пользователя root

Естественно, я снимаю с себя всякую ответственность за результат Ваших действий в системе :-(


Тактика и стратегия

1. Найти ...

Находим модули ядра, которые нам мешают.

lsmod | grep rt7

lsmod | grep rt2

Вывод данных команд будет зависеть от версии дистрибутива Linux. В моем случае это были rt73usb, rt2x00usb и rt2x00lib

2. ... и обезвредить

modprobe -l

показывает где находятся модули ядра. В моем случае все 3 модуля (rt73usb, rt2x00usb и rt2x00lib) находились в каталоге /lib/modules/2.6.22-14-generic/ubuntu/wireless/rt2x00/

Чтобы данные модули больше не подгружались, их нужно либо удалить, либо переименовать. Я выбрал второе.

cd /lib/modules/2.6.22-14-generic/ubuntu/wireless/rt2x00/

mv rt2x00usb.ko rt2x00usb.ko.old

mv rt2x00lib.ko rt2x00lib.ko.old

mv rt73usb.ko rt73usb.ko.old

Все. После перезагрузки системы эти модули не будут загружены.

3. "Заграница" нам поможет

Сначала проинсталлируем драйвера адаптера. Для этого перейдем в каталог где они лежат и выполним команду:

ndiswrapper -i Dr71WU.inf

где Dr71WU.inf inf-файл драйвера нашего адаптера. Данная команда копирует нужные ей файлы в каталог /etc/ndiswrapper. Оттуда модуль ядра ndiswrapper и будет брать их в дальнейшем.

Теперь скажем ядру что оно должно использовать модуль ndiswrapper, для этого:

modprobe -i ndiswrapper

depmod -a

Теперь проверим что в файле /etc/modprobe.d/aliases отсутствует запись для rausb0

Далее создаем интерфейс wlan0

vi /etc/modprobe.d/ndiswrapper

с такой записью:

alias wlan0 ndiswrapper

Теперь можно перезагрузить систему и если все было правильно, то вывод команды 'ifconfig -a' покажет наличие в системе интерфейса wlan0.

Если этого не произошло, попробуйте еще раз сделать

modprobe -i ndiswrapper

depmod -a

это должно помочь.

4. "Полная тайна вкладов... то есть организации"

Дальше рассказ о том как настроить WPA-шифрование. Для этого в системе должен быть wpa_supplicant (пакет wpasupplicant в Ubuntu 7.10)

Предположения относительно точки доступа:

- SSID = testnet

- сеть "скрытая", т.е. не анонсирует своего имени

- адрес сети 00:11:22:33:44:55

- используются протоколы WPA-PSK, WPA2-PSK, TKIP, AES

- пароль PSK = 1234567890axcvf

- на точке доступа настроена динамическая раздача адресов

Двоичный пароль запрашиваем командой:

wpa_passphrase testnet 1234567890axcvf

и получаем от него нечто вроде:

network={
ssid="testnet"
#psk="1234567890axcvf"
psk=95d5e79040c1da5c70981fbc51679331b53245e923b7dc62f0621826d529abfa
}

Вариантов два.

Вариант 1

Если беспроводная сеть является постоянной, то в файле /etc/network/interfaces прописываем:

auto wlan0
iface wlan0 inet dhcp
wpa-driver wext
wpa-ssid testnet
wpa-bssid 00:11:22:33:44:55
wpa-scan-ssid 1
wpa-ap-scan 2
wpa-proto WPA RSN
wpa-pairwise TKIP CCMP
wpa-group TKIP CCMP
wpa-auth-alg OPEN
wpa-key-mgmt WPA-PSK
wpa-psk 95d5e79040c1da5c70981fbc51679331b53245e923b7dc62f0621826d529abfa


Вариант 2

Если беспроводная сеть нужна время от времени,

то ее можно инициализировать следующим способом

wpa_supplicant -D wext -i wlan0 -c /etc/wpa_supplicant.conf -B

Содержимое файла /etc/wpa_supplicant.conf:

ctrl_interface=/var/run/wpa_supplicant
ap_scan=2
network={
ssid="testnet"
bssid=00:11:22:33:44:55
scan_ssid=1
proto=WPA RSN
key_mgmt=WPA-PSK
auth_alg=OPEN
pairwise=TKIP CCMP
group=TKIP CCMP

psk=95d5e79040c1da5c70981fbc51679331b53245e923b7dc62f0621826d529abfa
}

IP-адрес получается динамически, говорим:

dhclient wlan0

Все.

понедельник, 19 мая 2008 г.

полезные утилиты

htop - просмотр и удаление процессов
cairo-clock - прикольные гномовские часы
darkstat - статистика по трафику интерфейса ( после установки в конфиге подправить первую строку на yes
iptraf просмотр трафика с консоли

Сигнал об окончании загрузки сервера

ставим beep
apt-get install beep
и правим скрипт /etc/rc.local
nano /etc/rc.local
добавляем в скрипт строку
beep -l 900 -r 3 -f 500
теперь после загрузки сервака будет 3 раза пищать встроенный динамик

пятница, 16 мая 2008 г.

How-to Apache2 и vhost_alias

ставим Apache
# apt-get install apache2
После установки у нас появилась директория /var/www (здесь расположен сайт по умолчанию. Все документы в этой директории доступны через броузер по адресу http://localhost/ или IP адресу сервера.

ставим PHP5 и MySql
# apt-get install libapache2-mod-php5
# apt-get install mysql-server
# apt-get install php5-mysql
рестартуем apache
# /etc/init.d/apache2 restart
Проверяем работу PHP
# echo "<?php echo phpinfo() ?>" > /var/www/info.php
смотрим броузером http://localhost/info.php и видим результат работы PHP.
если предлагается загрузить файл проверяем файлы /etc/apache2/apache2.conf или /etc/apache2/mods-enabled/php5.conf на наличие строки
AddType application/x-httpd-php .php .phtml .php3
если потребовались изменения делаем рестарт апача
# /etc/init.d/apache2 restart
Настраиваем Dynamic Virtual Hosting по именам сайтов (url):
разрешаем запуск модуля vhost_alias
# a2enmod vhost_alias
для того чтобы модуль заработал правим /etc/apache2/apache2.conf
отключаем canonical name ,если нужно настраиваем логи по каждому виртуальному хосту, и указываем директорию виртуальных хостов
# берем имя сервера из Host: header
UseCanonicalName Off
# директории с виртуальными хостами
VirtualDocumentRoot /var/www/vhosts/%0
VirtualScriptAlias /var/www/vhosts/%0/cgi-bin
создаем директорию для виртуальных хостов
# mkdir /var/www/vhosts
# chown -r www-data:www-data /var/www/vhosts
Создаем темплейт виртуального хоста и копируем туда например joomla 1.5
# mkdir -p /var/www/vhosts/template/cgi-bin

Рестартуем апач
# /etc/init.d/apache2 restart
Все готово для создания виртуальных хостов.
Просто копируем темплейт хоста в директорию с именем будущего сайта например для сайта www.mysite.ru
# cp -r /var/www/vhosts/template /var/www/vhosts/www.mysite.ru
теперь все HTTP запросы к серверу с Host-header www.mysite.ru будут перенаправляться на сайт в директории /var/www/vhosts/www.mysite.ru

Для того чтоб до сайта можно было добраться правим записи DNS
или правим /etc/hosts file и добавляем запись
127.0.0.1 localhost www.mysite.ru

вторник, 13 мая 2008 г.

Генерируем пароли

ставим pwgen
sudo apt-get install pwgen
и запускаем
pwgen

how-to Установка антивируса ClamAV

Устанавливаем антивирус
apt-get install clamav
обновляем антивирусную базу
freshclam
обновить сейчас или
freshclam -d -c 2
запускаем как демон (обновлять два раза в день)
и запускаем сканирование вирусов
clamscan -r / <- все сканируем
или
clamscan -r /home <- только домашние папки
разумеется лучше в cron запихнуть например так

0 9 * * * /usr/bin/freshclam > /dev/null 2>&1

и антивирусная база будет обновляться каждый день в 9-00.

Шифрованная файловая система

1.Создаем сам файл, на котором будет храниться шифрованная файловая система
touch /home/secure
2.Заполняем его случайными данными, чтобы сложнее было дешифровать
shred -n1 -s500M /home/secure
в данном случаи мы указали размер в 500Мб.

3.Подгружаем нужные модули:

modprobe dm-crypt
modprobe aes_generic
(aes - быстрый алгоритм шифрования)

4.Создаем loopback устройство из файла:
losetup /dev/loop0 /home/secure
наше устройство теперь называется /dev/loop0, а находится оно в файле /home/secure

5.Создаем шифрованный том из устройства /dev/loop0
cryptsetup -c aes -y create mycrypt /dev/loop0
шифрованный том в этом примере будет называться mycrypt

6.Форматируем его:
mkreiserfs /dev/mapper/mycrypt
После этих операций в устройстве /dev/mapper/mycrypt находится файловая система с шифрованными данными. Ее уже можно монтировать / писать на нее / размонтировать.

7.Монтирование:
losetup /dev/loop0 /home/secure
cryptsetup create mycrypt /dev/loop0
mount -o acl /dev/mapper/mycrypt /home/mnt
ACL - включаем потом для самбы пригодиться

8.Размонтирование:
umount /dev/mapper/mycrypt
cryptsetup remove mycrypt
losetup -d /dev/loop0


Хранение шифрованных данных на отдельной партиции LVM

1. Создаем партицию
lvcreate -L2G -nstorage vg

в данном случаи мы задали размер 2Гб для тома с именем storage в группе vg. Подробнее в документации по LVM2.

2.Подгружаем нужные модули:
modprobe dm-crypt
modprobe aes

(aes - быстрый алгоритм шифрования, можно использовать blowfish, des и пр. - см. раздел Cryptographic options ядра)

3. Создаем шифрованный том из устройства /dev/vg/storage
cryptsetup -c aes -y create mycrypt /dev/vg/storage

шифрованный том в этом примере будет называться mycrypt

4.Форматируем его:
mkreiserfs /dev/mapper/mycrypt

Все. После этих операций в устройстве /dev/mapper/mycrypt находится файловая система с шифрованными данными. Ее уже можно монтировать / писать на нее / размонтировать.

5.Монтирование:
cryptsetup create mycrypt /dev/vg/storage
mount /dev/mapper/mycrypt /mnt/storage

6.Размонтирование:
umount /dev/mapper/mycrypt /mnt/storage
cryptsetup remove mycrypt

воскресенье, 11 мая 2008 г.

Настройка MTA для работы через внешний SMTP сервер

отсюда
Поскольку MTA существуют самые разные и многим нравится только какой-то определенный, я попытаюсь описать настройку нескольких популярных MTA.

1. Sendmail
Классический Sendmail многим не нравится из-за сложной настройки, но все-таки это очень мощный и достаточно распространенный MTA. Итак (все действия будут выполнятся пользователем root),

# apt-get install sendmail

Добавим несколько строк в /etc/mail/sendmail.mc для того, чтобы Sendmail отсылал почту через gmail (добавлять эти строчки нужно до параметров MAILER, иначе потом будет ошибка при сборке конфигов).

define(`SMART_HOST',`smtp.gmail.com')dnl
define(`confAUTH_MECHANISMS', `EXTERNAL GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl
define(`RELAY_MAILER',`esmtp')dnl
define(`RELAY_MAILER_ARGS', `TPC $h 587')dnl
FEATURE(`authinfo',`hash /etc/mail/auth/client-info')dnl

Теперь создадим папку /etc/mail/auth, а в ней - файл client-info, в котором будут храниться наши логин и пароль для my.name@gmail.com.

# mkdir /etc/mail/auth
# touch /etc/mail/client-info

Добавим в client-info наши параметры авторизации (my.name заменим на свой логин на gmail, а password - на пароль).

AuthInfo:smtp.gmail.com "U:root" "I:my.name" "P:password" "M:PLAIN"
AuthInfo:smtp.gmail.com:587 "U:root" "I:my.name" "P:password" "M:PLAIN"

Для пущей безопасности можно сделать этот файл (да и папку тоже) доступными только для пользователя root

# chmod 600 /etc/mail/auth/client-info
# chmod 700 /etc/mail/auth

Преобразуем этот файл в нужный формат

# makemap -r hash /etc/mail/auth/client-info.db < /etc/mail/auth/client-info

Теперь выполним одно специфичное для Sendmail действие - пересборку конфигурационных файлов

# cd /etc/mail
# make

И наконец перезапускаем MTA для применения изменений

# /etc/init.d/sendmail reload

Готово. Можно отправлять почту.

2. Postfix
Postfix обладает всей мощью Sendmail, будучи полностью с ним совместимым, но при этом он гораздо проще в конфигурации. Кроме того, это мой любимый MTA, так что я не мог обойтись без описания его настройки. Итак (все действия производятся от имени root),

# apt-get install postfix

Скопируем главный настроечный файл postfix в нужное место (почему-то в Kubuntu он не устанавливается по-умолчанию)

# cp /usr/share/postfix/main.cf.debian /etc/postfix/main.cf

В конец этого файла добавим несколько строк, чтобы настроить доставку почты через gmail.

relayhost = smtp.gmail.com:587
smtp_use_tls = yes
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/gmail_passwd
smtp_sasl_security_options = noanonymous

Теперь создадим указанный нами файл авторизации

# touch /etc/postfix/gmail_passwd

и добавим в него наши логин и пароль на gmail (my.name заменяем на логин, а password - на пароль).

smtp.gmail.com:587 my.name@gmail.com:password

Преобразуем этот файл в нужный формат (BDB) и для пущей безопасности защитим его от доступа простых смертных.

# postmap /etc/postfix/gmail_passwd
# chown root:postfix /etc/postfix/gmail_passwd*
# chmod 0640 /etc/postfix/gmail_passwd*

Перезапускаем Postfix для применения изменений.

# /etc/init.d/postfix restart

Настройка закончена. MTA готов к отправке почты через gmail.

3. Exim
Exim - один из самых популярных (и мощных) MTA. Именно его мне советовала Kubuntu при установке Mutt. Кроме того, exim уже упоминался в этом блоге, так что описание его настройки вполне закономерно. Итак (всё делаем с правами root),

# apt-get install exim4

Отредактируем следующие параметры в файле /etc/exim4/update-exim4.conf.conf, чтобы отправлять почту через gmail

dc_eximconfig_configtype='smarthost'
dc_smarthost='smtp.gmail.com::587'

В файл авторизации /etc/exim4/passwd.client добавим следующие строки (подставляем свои логин и пароль вместо my.name и password соответственно)

gmail-smtp.l.google.com:my.name@gmail.com:password
*.google.com:my.name@gmail.com:password
smtp.gmail.com:my.name@gmail.com:password

Выполним следующую команду для применения новых настроек

# update-exim4.conf

На этом настройка завершена. Exim будет отправлять почту через gmail.

Использование bacula для mysql баз

отсюда
При использовании Bacula для копирования MySQL баз данных на Bacula-клиенте (там, откуда необходимо копировать mysql-базы) необходимо создать скрипт /usr/loca/bin/mysqlhotcopyall:

#!/bin/bash
DBLIST="db1 db2 db3 mysql" # здесь необходимо указать имена баз, которые следует копировать
DBDIR=/var/lib/bacula/mysql
UP=" --user=$1 --password=$2"
LOGFILE=/var/log/backup.log
mkdir $DBDIR
for DATABASE in $DBLIST
do
mysqlhotcopy $UP $DATABASE ${DBDIR} --allowold >> ${LOGFILE}
done

Также необходимо в MySQL'е создать пользователя bacula, который будет выполнять блокировку и копирование указанных баз на время backup'а. Данному пользователю должны быть предоставлены глобальные привилегии SELECT, RELOAD, LOCK TABLES.

CREATE USER 'bacula'@'localhost' IDENTIFIED BY 'PASSWORD';
GRANT SELECT, RELOAD, LOCK TABLES ON *.* TO 'bacula'@'localhost' IDENTIFIED BY 'PASSWORD';

На Bacula Director'е в соответствующий job добавить строки:

ClientRunBeforeJob = "/usr/local/bin/mysqlhotcopyall bacula PASSWORD"
ClientRunAfterJob = "/bin/rm -rf /var/lib/bacula/mysql"

Благодаря указанным параметрам перед backup'ом с помощью утилиты mysqlhotcopy указанные базы будут скопированы в каталог /var/lib/bacula/mysql. После backup'а содержимое данного каталога будет очищено.

Bacula - система резервного копирования и восстановления

отсюда

Перед началом установки сервисов необходимо ознакомиться со структурой и функционированием составных частей системы Bacula. В этом может помочь небольшая статья [1] и исчерпывающая документация (более 700 стр.), доступная на официальном сайте. Установка сервисов - это всего лишь начало, впереди стоят более важные задачи по грамотной конфигурации сервисов и тестированию процессов резервирования и восстановления.

В приведенном описании в качестве Director и Storage сервисов используется FreeBSD 5.4, в качестве клиента (File Daemon) опробованы следующие системы: Debian 3.1 (Bacula 1.36.2), 4.0 (Bacula 1.38.11), FreeBSD 5.4 (Bacula 2.0.1), Slackware 10.1 (Bacula 2.0.2). В качестве рабочей консоли использовался Windows XP SP2 (Bacula 2.0.1).

Установка Director и Storage сервисов

1. Установка производится из портов

# cd /usr/ports/sysutils/bacula-server
# make
[X] MYSQL Use MySQL database instead of SqLite
[X] NLS Native Language Support via gettext utilities
[X] OPENSSL Enable OpenSSL for encrypted communication
...
# make install

2. Для работы Bacula Director необходима база данных для накопления и оперирования всевозможными данными о собранных резервных копиях. Такая база называется Каталог (Catalog). Таких каталогов может быть несколько, в зависимости от потребностей. Перед запуском, необходимо подготовить хотя бы один Каталог:

mysql -u root -ppassword
CREATE DATABASE `bacula_db` DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;
GRANT USAGE ON *.* TO 'baculauser'@'localhost' IDENTIFIED BY 'baculauser_password';
GRANT ALL PRIVILEGES ON `bacula_db`.* TO 'baculauser'@'localhost';

Для заполнения подготовленной базы необходимыми таблицами есть скрипт /usr/local/share/bacula/make_mysql_tables. Единственное, в нем по умолчанию используется база данных с именем bacula. В данном примере используется имя bacula_db, поэтому перед запуском скрипт необходимо внести соответствующую поправку.

# /usr/local/share/bacula/make_mysql_tables -u baculauser -pbaculauser_password
Creation of Bacula MySQL tables succeeded.

Перед запуском сервисов необходимо создать конфигурационные файлы на основе доступных шаблонов и сконфигурировать их в соответствии с желаемой конфигурацией.

# cd /usr/local/etc
# cp bacula-dir.conf.sample bacula-dir.conf
# cp bacula-sd.conf.sample bacula-sd.conf

Для автоматического запуска Director и Storage сервисов при загрузке сервера в /etc/rc.conf добавить строчки

bacula_dir_enable="YES"
bacula_sd_enable="YES"

Документацию и клиент-сервис (file daemon) можно установить отдельно

# cd /usr/ports/sysutils/bacula-docs
# make && make install
# cd /usr/ports/sysutils/bacula-client
# make && make install
Запуск сервисов
# /usr/local/etc/rc.d/bacula-dir.sh start
# /usr/local/etc/rc.d/bacula-sd.sh start

Установка клиента (File Daemon)

# apt-get install bacula-fd
Reading package lists... Done
Building dependency tree... Done
The following extra packages will be installed:
bacula-common
Suggested packages:
bacula-doc bacula-traymonitor
The following NEW packages will be installed
bacula-common bacula-fd
0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
Need to get 528kB of archives.
After unpacking 1167kB of additional disk space will be used.
Do you want to continue [Y/n]? y
Get: 1 http://ftp.at.debian.org etch/main bacula-common 1.38.11-7 [348kB]
Get: 2 http://ftp.at.debian.org etch/main bacula-fd 1.38.11-7 [180kB]
Fetched 528kB in 2s (264kB/s)
Selecting previously deselected package bacula-common.
(Reading database ... 44221 files and directories currently installed.)
Unpacking bacula-common (from .../bacula-common_1.38.11-7_all.deb) ...
Adding user 'bacula'... Ok.
Selecting previously deselected package bacula-fd.
Unpacking bacula-fd (from .../bacula-fd_1.38.11-7_i386.deb) ...
Setting up bacula-common (1.38.11-7) ...

Setting up bacula-fd (1.38.11-7) ...
Starting Bacula File daemon: bacula-fd.

В конфигурационном файле /etc/bacula/hostname-fd.conf поправить описание Director (имя, адрес, пароль), закомментировать второй Director (с опцией Monitor), в описании Messages поправить имя используемого director'а. Перезапустить fd-сервис с новыми параметрами:

# /etc/init.d/bacula-fd restart
Restarting Bacula File daemon: bacula-fd.

Установка клиента из исходников (sources)

# tar zxf bacula-2.0.x.tar.gz
# cd bacula-2.0.x
./configure --with-mysql --with-openssl --enable-client-only --localstatedir=/var --sysconfdir=/etc \
--with-job-email=roma@mycompany.com --with-dump-email=roma@mycompany.com
# make
# make install

В конфигурационном файле /etc/bacula/bacula-fd.conf поправить описание Director (имя, адрес, пароль), закомментировать второй Director (с опцией Monitor), в описании Messages поправить имя используемого director'а. Скрипт управления bacula-сервисами - /etc/bacula/bacula, его необходимо переложить, в соответствии с Вашей системой, в папку с другими скриптами и проделать необходимые манипуляции для автоматического запуска fd-сервиса в момент загрузки системы. Запустить fd-сервис с новыми параметрами:

# /etc/bacula/bacula start
Starting the Bacula File daemon

Ссылки:

  1. Bacula: Cross-Platform Client-Server Backups
  2. Bacula, the Network Backup Tool for Linux, Unix, Mac and Windows
  3. Перевод документации от Bacula v.1.38 на русский язык (частично)

понедельник, 5 мая 2008 г.

Настройка VPN по L2TP в Ubuntu 8.04 Hardy Heron

отсюда

Исторически сложилось, что многие российские провайдеры предоставляют подключение к интернет через VPN-соединение. Соответственно, пользователям Linux для этого приходится настраивать подключение по PPTP. Относительно недавно у некоторых провайдеров появилась возможность подключения по протоколу L2TP. Не вдаваясь в технические подробности, скажу, что для пользователей Linux теперь появилась возможность кардинально улучшить свое интернет-соединение. Забегая вперед, замечу, что результат превзошел все мои ожидания.


Такая возможность появилась с поддержкой OpenL2TP в последних ядрах Linux. В этой заметке пойдет речь о настройке L2TP-соединения в Ubuntu Linux на примере провайдера Corbina Telecom. Для других провайдеров, думаю, настройка будет не сильно отличаться. Выражаю огромную благодарность sdvn, написавшему очень толковую инструкцию по настройке.



Настройка L2TP-соединения


1. Вначале необходимо установить пакет xl2tp. В репозиториях Ubuntu 8.04 он уже есть.


$ sudo apt-get install xl2tp


2. Редактируем файл /etc/xl2tpd/xl2tpd.conf:


$ sudo gedit /etc/xl2tpd/xl2tpd.conf


Необходимо прописать в него следующее:


[global]
access control = yes
[lac corbina]
lns = l2tp.corbina.net
redial = yes
redial timeout = 1
require chap = yes
require authentication = no
name = <corbina-user-name-without-brackets>
ppp debug = yes
pppoptfile = /etc/ppp/options.xl2tpd
require pap = no
autodial = yes


где <corbina-user-name-without-brackets> - ваше имя пользователя в Corbina.


3. Редактируем /etc/ppp/options.xl2tpd:


$ sudo gedit /etc/ppp/options.xl2tpd


Прописываем в него:


unit 0
name <corbina-user-name-without-brackets>
remotename l2tp
ipparam corbina
connect /bin/true
mru 1460
mtu 1460
nodeflate
nobsdcomp
persist
maxfail 0
nopcomp
noaccomp
defaultroute
replacedefaultroute

4. В /etc/ppp/chap-secrets добавляем строку (если ее еще там нет):



<corbina-user-name-without-brackets> * <corbina-password-without-brackets>


5. Вносим изменения в /etc/init.d/xl2tpd:


$ sudo gedit /etc/init.d/xl2tpd


Необходимо поменять секцию start следующим образом:


start)
if !([ -f /var/run/xl2tpd/l2tp-control ]) ; then
mkdir -p /var/run/xl2tpd
touch /var/run/xl2tpd/l2tp-control
fi
echo -n "Starting $DESC: "
start-stop-daemon --start --quiet --pidfile /var/run/$NAME.pid \
--exec $DAEMON -- $DAEMON_OPTS
echo "$NAME."
route add -host <host l2tp.corbina.ru> gw <default-gw>

route add -host <dns-server-1> gw <default-gw>
route add -host <dns-server-2> gw <default-gw>

Здесь (L2TP-сервер провайдера), (первый DNS-сервер), (второй DNS-сервер), (шлюз по умолчанию) определяются для каждого случая свои. Для их определения можно воспользоваться командами:



$ host l2tp.corbina.ru
$ cat /etc/resolv.conf
$ route -n


Или уточнить их в службе технической поддержки провайдера. Очень важно, чтобы маршруты были прописаны правильно.


6. Прописываем в /etc/network/interfaces свои настройки сети для карточки:


auto lo eth0
iface lo inet loopback
address 127.0.0.1
netmask 255.0.0.0
iface eth0 inet dhcp

7. Удаляем network-manager из системы, чтобы не мешал работать стандартной дебиановской сетевой системе и позволил проинициализировать eth0 до того, как будет подниматься ppp0 через xl2tpd:


$ sudo aptitude remove network-manager


8. Теперь можно перезагрузиться и посмотреть на результат. Если все нормально, то по команде ifconfig мы получим три интерфейса - lo, eth0 и ppp0. Что и требовалось.


9. В случае, если необходимо расшарить интернет на другие машины, можно в /etc/init.d/xl2tpd в секцию start после route -add добавить строчки:


echo 1 >/proc/sys/net/ipv4/ip_forward
iptables -F
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
iptables -t nat -I POSTROUTING -o ppp0 -j MASQUERADE
iptables -I FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu


Возможные проблемы


В случае неправильных настроек может наблюдаться следующая проблема: соединение устанавливается, но через минуту-две обрывается либо без каких-либо сообщений, либо с сообщением в /var/log/messages:


No response to 4 echo-requests


В таком случае можно попытаться сделать следующее:



  • Убедиться, что network-manager удален из системы. Кроме того, убедиться, что нет еще каких-либо факторов, мешающих стандартной дебиановской сетевой системе. Таковым может являться firestarter или некорректные настройки dnsmasq или ipmasq.

  • Убедиться, что указан верный маршрут к L2Tp-серверу провайдера. В случае чего уточнить его в службе технической поддержки.


Если же интерфейс ppp0 успешно поднимается и не обрывается, но сайты не открываются, то проблема скорее всего в DNS-серверах. Нужно указать их правильные адреса в маршрутах.


Результаты



В моем случае результаты оказались следующими.


При работе через PPTP:



При работе через L2TP:



Результат потрясающий и говорит сам за себя.


воскресенье, 4 мая 2008 г.

how-to Анонимный серфинг

взято отсюда
Когда я первый раз столкнулся с проблемой анонимного серфинга, то максимум, что смог вспомнить, это анонимные прокси серверы. Но немного покопавшись в сети выяснил, что на самом деле всё намного проще, чем возня c ненадежными, во всех смыслах, сервисами, и что хорошие люди не только придумали, но уже давно сделали отличную "луковую" штуку — Tor.

Как поставить Tor в "горячо любимой" операционке можно прочитать на указанном выше сайте, а я расскажу, как настроить Tor в Ubuntu, чтобы было удобно, красиво и правильно.

Итак, для начала нужно установить Tor и Privoxy (оно нам пригодится):
$ sudo apt-get install tor privoxy


Затем нужно рассказать Privoxy, что оно не одиноко, и можно пользоваться Tor'ом. Для этого в конфиге правим:
$ sudo nano /etc/privoxy/config
forward-socks4a / localhost:9050 .
confdir /etc/privoxy
#logfile logfile
#jarfile jarfile
listen-address 127.0.0.1:8118

не забываем точку
Перезапускаем Privoxy:
$ sudo /etc/init.d/privoxy restart


Осталось сделать две важные вещи — настроить FireFox, чтобы было удобно, и проверить как всё работает.

Для ОгнеЛиса есть крошечный плагин Torbutton, который устанавливается и работает очень просто. Одна подсказка — используйте "Use Privoxy" в Preferences. И не забудьте перезапустить браузер.

И наконец последний, самый важный, шаг — проверка.
Для этого включаем в FireFox (нажатием на луковицу в правом нижнем углу окна) анонимность, и идём на TorCheck, где, если всё было сделано правильно, должно появится что-то вот такое:
Your IP is identified to be a Tor-EXIT.
So you are using Tor successfully to reach the web!


На всякий случай цитата с сайта — И помните что это развивающийся код - не лучшая идея полностью полагаться на сеть Tor, если вам нужна гарантированная анонимность.