Skip to content


Строим VPN-сервер на основе pptpd

Eupalinos tunnel at Samos islandVPN расшифровывается как Virtual Private Network, а PPTP – это Point-to-Point Tunelling Protocol, используется чаще всего для организации защищенного подключения удаленных пользователей во внутреннюю сеть компании через публичные сети, такие как Интернет, а также некоторыми Интернет-провайдерами с ограниченным адресным пространством для экономии "белых" IP-адресов при предоставлении услуги доступа в Интернет. Далее описиан пошаговый алгоритм настройки VPN-сервера:

  1. Качаем и устанавливаем пакет pptpd, подходящий для нашей системы. Для моей CentOS 5.5 i386 это выглядело так:
    rpm -ivh http://poptop.sourceforge.net/yum/stable/packages/pptpd-1.3.4-2.rhel5.i386.rpm
  2. В файл /etc/ppp/chap-secrets дописываем информацию о пользователях, которым необходим удаленный доступ:
    $ cat /etc/ppp/chap-secrets
    # Secrets for authentication using CHAP
    # client      server          secret           IP addresses
    user1         pptpd           passwOrD1        10.0.10.2
    user2         pptpd           qWeRPDW2a        10.0.10.3
  3. Проверяем, что в ядре включен форфардинг пакетов между интерфейсами, если нет – включаем:
    echo 1 > /proc/sys/net/ipv4/ip_forward
    sysctl -w net.ipv4.ip_forward=1
  4. Проверяем, что в firewall-е открыты подключения извне на TCP-порт 1723 и что разрешен протокол #47:
    /sbin/iptables -I INPUT -p tcp --dport 1723 -j ACCEPT
    /sbin/iptables -I INPUT -p 47 -j ACCEPT
  5. Проверяем, что в файле /etc/ppp/options.pptpd присутствуют следующие опции:
    name pptpd
    refuse-pap
    refuse-chap
    refuse-mschap
    require-mschap-v2
    require-mppe-128
    ms-dns 10.0.0.253
    ms-dns 10.0.0.252
    proxyarp
    lock
    nobsdcomp
    novj
    novjccomp
    nologfd

    Опции ms-dns – это те DNS-сервера, которые выдаются клиенту. Нужно изменить на те, которые реально используются в Вашей сети. Если клиент в состоянии использовать DNS-сервера (по умолчанию клиент получит в качестве шлюза свой IP-адрес, который прописан в файле chap-secrets и DNS-сервера по этой причине могут стать недоступны), которые он использовал до установки vpn-подключения, эти опции можно убрать.

  6. Редактируем /etc/pptpd.conf, нужно чтобы в нем были следующие строки:
    option /etc/ppp/options.pptpd
    logwtmp
    localip 10.0.0.1
    remoteip 10.0.0.2-20

    Параметры localip и remoteip изменяем в соответствии с IP-адресацией в Вашей сети.

  7. Запускаем сервис:
    /etc/init.d/pptpd start
  8. Включаем автозагрузку сервиса при старте системы:
    /sbin/chkconfig pptpd on
  9. Пробуем подключаться. Если в качестве клиента Windows XP и имеются проблемы с подключением, то в настройках подключения на вкладке "Безопасность" нужно снять галочку "Требуется шифрование данных".

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

  1. 1. Если какая-то машинка за NAT-ом испытывает трудности с подключением к внешнему VPN-серверу и винда показывает ошибку №619, то стоит попробовать включить модуль ядра ip_nat_pptp на linux-роутере, который исполняет NAT:
    modprobe ip_nat_pptp
  2. Если в логе (/var/log/messages) сервера с pptpd имеется нечто такое
    Feb 17 08:09:29 zeon pppd[28671]: Plugin /usr/lib64/pptpd/pptpd-logwtmp.so is for pppd version 2.4.3, this is 2.4.4

    то наиболее простым решением является убирание опции logwtmp из файла /etc/pptpd.conf. Это приведёт к тому, что сеансы связи клиентов не будут отбражаться командой last (которая как раз и работает с /var/log/wtmp). Ну а правильным решением будет найти rpm-ку соответсвующую вашей системе или пересобрать pptpd руками из исходников.

  3. Если в логе (/var/log/messages) сервера с pptpd наблюдается

    Feb 17 11:18:12 zeon kernel: pptpctrl[30130]: segfault at 00000000 rip 005a34b0 rsp ffe60810 error 4

    а клиенты на windows-машинках при подключении получают ошибку 800, то, скорей всего, исчерпался лимит одновременных подключений, который задаётся опцией remoteip в файле /etc/pptpd.conf. Такой segfault у меня был когда в /etc/pptpd.conf я сдуру втулил строчку "remoteip 192.168.0.2-192.168.0.254" (пускало только первого юзера, а все последующие получали ошибку 800 и segfault в логе сервера). После того, как заменил на "remoteip 192.168.0.2-254" всё заработало как надо.

Posted in *nix, Howto.

Tagged with , , , , .


Как найти flash-video в кеше броузера Opera

Логитип броузера Opera
Закрываем браузер Opera. Открываем диспетчер задач и видим незавершенный процесс opera.exe размером 513 Мб. Вот это настоящий Призрак Оперы.

© bash.org.ru

Если очень хочется сохранить себе на память понравившийся видео-ролик, который встретился где-то на бескрайних просторах Интернета (например, на youtube.com) и просмотренный из броузера Opera, сделать это можно так:

  1. Перейти в каталог, в котором содержится дисковый кеш Оперы, в Windows обычно это %APPDATA%\Opera\Opera\profile\cache4, или, если вместо переменной окружения APPPATH подставить ее значение, – C:\Documents and Settings\user\Application Data\Opera\Opera\profile\cache4. Достоверно узнать этот путь можно у самой оперы, набрав в строке адреса opera:config#UserPrefs и посмотрев значение параметра "Cache Directory4";
  2. Найти среди файлов с временем модификации, не сильно отличающимся от текущего, те, размер которых максимален – с очень большой вероятностью это и будет тот видео-файл, который Вы только что смотрели в окне броузера (имена файлов в кеше формируются случайным образом, скорей всего, имя у него будет похожее на что-то типа "opr03XWL").
    В 10-ой опере структура кеша изменена, теперь файлы храняться не в одной директории, а в нескольких десятках с именами вида "g_00xx", где вместо xx могут быть любые шестнадцатиричные цифры. Поиск файла в этом дереве уже не настолько прост, как было раньше, но всё равно принципиальных проблем нет. Я это делаю с помощью следующей команды:

    find -type f ! -name dcache4.url ! -iregex ".*sesn.*" -mmin -1 -size +1024k

    Это стандартная для unix-систем утилита find. Find для windows можно взять, например, отсюда. Данная команда ищет файлы, начиная с текущей директории, размером более 1МБ, содержимое которых изменялось не более 1 минуты назад. Из результатов исключаются файлы в директории sesn (насколько я понял, там опера кеширует файлы для сайтов с авторизацией) и файл с именем dcache4.url. Обратите внимание, что в Windows есть своя утилита find.exe, чем-то напоминающая grep. Так что если просто набрать в командной строке команду find, то запуститься именно родная виндовая. Чтобы запустить юниксовый find, нужно либо указать в нему полный путь, либо переименовать в что-то уникальное и помесить в одну из директорий, перечисленных в переменной окружения $PATH.

  3. Скопировать найденный видео-файл куда-то на постоянное место жительства, переименовав соответствующим образом и добавив ему расширение ".flv";
  4. Открыть файл любимым плеером, я для этого использую VLC.

Posted in Misc.

Tagged with .


История команд в bash с указанием даты и времени

Big brother is watching you Читая в очередной раз man по bash-у, наткнулся на интересную переменную оболочки, цитирую:

HISTTIMEFORMAT
If this variable is set and not null, its value is used as a format string for strftime(3) to print the time stamp associated with each history entry displayed by the history builtin. If this variable is set, time stamps are written to the history file so they may be preserved across shell sessions.

Это означает, что в историю команд можно добавлять дату и время, когда была выполнена та или иная команда. В случае, когда сервер администрируют несколько человек, это может быть весьма полезно при различных "разборах полетов" на тему кто где и когда накосячил :) Для этого в bashrc (системный, который /etc/bashrc, или в домашней директории, который ~/.bashrc) нужно добавить строчку:

export HISTTIMEFORMAT="%h/%d - %H:%M:%S "

После чего история команд вместо этого

    3  h
    4  man bash
    5  cat ~/.bashrc
    6  less ~/.bashrc

будет уже выглядеть более подробно, примерно вот так:

    3  Июл/04 - 19:55:01 h
    4  Июл/04 - 19:55:26 man bash
    5  Июл/04 - 20:25:13 cat ~/.bashrc
    6  Июл/04 - 20:25:18 less ~/.bashrc

P.S. А на тему происхождения картинки с глазом, которая в этой заметке в качестве иллюстрации притулена, весьма интересно написано в Википедии.

Posted in *nix.

Tagged with , .


Установка принтера Canon Pixma iP1000 в Linux

Canon Pixma iP1000
1. Ставим rpm-файлы:

2. Перезапускаем cups:

/etc/rc.d/init.d/cups restart

3. Выполняем команду для окончательной регистрации принтера:

lpadmin -p PIXMAIP1000 -m canonpixmaip1000.ppd -v usb://Canon/iP1000 -E

Вместо "usb://Canon/iP1000", возможно, нужно будет указать что-то другое – этот device-uri можно посмотреть в web-интерфейсеcups.

Дополнительная инфа есть здесь: http://mambo.kuhp.kyoto-u.ac.jp/~takushi/

Альтернативные ссылки для скачивания RPM-пакетов:

http://files.alfansa.org/bjfilter-common-2.50-2.i386.rpm
http://www.mediafire.com/download.php?6cxlx0bt9e0

http://files.alfansa.org/bjfilter-pixmaip1000-2.50-2.i386.rpm
http://www.mediafire.com/download.php?6stx52nn0km

http://files.alfansa.org/bjfilter-pixmaip1000-lprng-2.50-2.i386.rpm
http://www.mediafire.com/download.php?0n2nomwoyfz

Posted in *nix.

Tagged with , , .