SSH-туннелинг или замена VPN

В последнее время довольно большое распространение получила технология VPN (Virtual Private Networks). В большинстве случаев ее используют люди для шифрования передаваемой информации через локальную сеть (защита от снифанья трафика, что довольно легко осуществить в сети, даже на свичах) и/или последующей передачи информации через Интернет (тут уже целями будет скрытие своего IP-адреса, защита от глобального снифа трафика всей страны (aka СОРМ, он же нынешний СОРМ2) и.д.). Многие уже давно используют данную технологию VPN, но не многие знают об ее более дешевой и мобильной альтернативе. А называется это – SSH-туннелинг.

Принцип данной реализации следующий. Весь сетевой софт на компе (ну или не весь) форвардится на назначенный порт (вашего локалхоста), на котором висит сервис, соединенный по SSH с сервером (а как мы знаем, соединение по SSH протоколу шифруется) и туннелирующий все запросы; далее, весь ваш трафик (уже не в зашифрованном виде) может форвардится с нашего сервера на прокси (поддерживающий туннерирование) или сокс, который передают весь трафик к необходимым адресам. Наличие прокси или сокса не обязательно, но если нам нужна полнейшая конспирация, то мы можем организовать данный сервис (proxy/socks) на другом сервере (данная схема нужна для создания цепочки адресов), но об этом позже.

Теперь давайте разберемся с минимальным набором инструментов и сервисов необходимых для организации данного процесса. В первую очередь нам нужна программа для организации туннеля по SSH-протоколу. Для этой задачи мы можем применить VanDyke Entunnel (http://www.vandyke.com/products/entunnel/) или Putty (http://www.web-hack.ru/download/info.php?go=35) (вкладка Connection\SSH\Tunnels). В наших примерах я буду использовать оба клиента. Далее мы можем вручную прописывать в каждой программе работу через прокси или использовать специализированную программу для перенаправления запросов, такую как ProxyCap (http://proxylabs.netwu.com), SocksCap (http://www.socks.nec.com), FreeCap (http://www.freecap.ru) и т.п. В нашем примере будет использоваться ProxyCap, как наиболее удобная софтина (кстати, через ProxyCap мы сможем сделать туннерирование даже WebMoney, которая известна защитой от такого вида софта, для скрытия IP). Так же нам понадобится SSH-аккаунт (на сервере желательно расположенном за пределами вашей страны =), который можно без проблем достать (например, я покупаю VPS-хостинг для этого) и socks`ы.

Первым делом создаем SSH-аккаунт. Далее, я предлагаю вам использовать socks-сервер, а не proxy, т.к. не все прокси поддерживают туннелирование. Также может оказаться, что сегодня прокси анонимный, а завтра уже и не нет (если, конечно, не вы сами отвечаете за него). Кстати, проверить свою анонимность можно здесь (http://ip.xss.ru). Как я уж говорил, мы можем использовать сокс на удаленной машине (для большей безопасности). Для примера я покажу, как установить сокс-демон. Наиболее популярные и продвинутые демоны под никсы это socks5 от Permeo/NEC (http://freeware.sgi.com/source/socks5/), Dante (http://www.inet.no/dante/) и отечественный продукт 3proxy (http://www.security.nnov.ru/soft/3proxy/). Для примера я выбрал классический демон на FreeBSD – socks5.

Для тестирования использовалась FreeBSD 5-ой ветки. Я устанавливал socks5 из портов (/usr/ports/net/socks5/), но и из сорцов под фряхой тоже все хорошо собирается и ставится:

cd /usr/ports/net/socks5/
make install clean
rehash

Для нормальной работы демона необходим конфиг к демону socks5.conf и файл паролей socks5.passwd (если необходима аутификация к сокс-серверу по паролю):

touch /usr/local/etc/socks5.conf
touch /usr/local/etc/socks5.passwd

Далее добавляем в конфиг следующие строчки:

auth - - u
permit u - - - - -
SET SOCKS5_BINDINTFC 1.2.3.4:8080
SET SOCKS5_CONFFILE /usr/local/etc/socks5.conf
SET SOCKS5_PWDFILE /usr/local/etc/socks5.passwd
SET SOCKS5_MAXCHILD 128
SET SOCKS5_NOIDENT
SET SOCKS5_NOREVERSEMAP
SET SOCKS5_NOSERVICENAME
SET SOCKS5_V4SUPPORT
SET SOCKS5_ENCRYPT
SET SOCKS5_FORCE_ENCRYPT
SET SOCKS5_UDPPORTRANGE 1023-5000

Первые две строчки указывают, что необходима аутификация по логин/пароль. SOCKS5_BINDINTFC указывает на какой IP (если у сервера несколько алиасов) и порт повесить демон. SOCKS5_MAXCHILD по умолчанию 64, я советую увеличить до 128, чтобы всем юзерам (если их много) хватило потоков. Далее, идут строчки для ускорения работы демона. SOCKS5_V4SUPPORT – поддержка 4-ой версии протокола. SOCKS5_ENCRYPT и SOCKS5_FORCE_ENCRYPT поддержка шифрования, если клиент это поддерживает. За более подробной информацией по установка обращайтесь к файлам README и INSTALL, а за информацией по настройке к манам socks5(1) и socks5.conf(5).

Далее, заполняем файл паролей. Он имеет обычный текстовый формат и login/password разделяются в нем пробелами:

user password
root toor

Теперь можно запускать демон и приступить к настройке клиентского софта:

/usr/local/bin/socks5

Запускам ProxyCap (http://forum.web-hack.ru/index.php?showtopic=29262), кликаем правой кнопкой мыши на значке в трее, Preferences. На вкладке “Proxies” вписываем 127.0.0.1:8080 и устанавливаем в “Require Authorization” наш login/password на сокс. На вкладке “Rules” добавляем сначала правило для Entunnel, указав в “Rule Type” – Force direct connetion. Далее, создаем правило, для всего остального софта, трафик от которого будет шифроваться и туннелироваться через сокс. В правиле указываем “All Programs”, “Tunnel through proxy” и в выпадающем меню наш сокс. Так же можно создать правило не для всего софта, а только выборочный софт пускать через туннель или наоборот, создать правило для всего софта, но для некоторого софта сделать прямой доступ в инет (Force direct connetion). В качестве дополнения могу сказать, что если ваша сетевая программа поддерживает работу через сокс/прокси (и нет необходимости пускать сразу весь сетевой софт через туннель), то в качестве настроек прокси вы можете указать забинденный Entunnel`ем адрес и порт – 127.0.0.1:8080.

Запускаем Entunnel и создаем в нем новое соединение по SSH. Далее, в свойствах соединения (Port Forwarding) добавляем наш сокс. В категории “Local” вписываем 127.0.0.1:8080, а в категории “Remote” вписываем IP и порт нашего сокс-сервера. Настройка закончена! Если что-то не работает, то еще раз перечитайте все пункты настройки.

В случае, если вы хотите использовать SSH-аккаунт, как конечную точку (т.е. не юзать соксы или прокси), то ваши настройки должны быть следующие (на примере для Putty): на вкладке Connection\SSH\Tunnels в строке “Source port” указываем порт, на который Putty забиндится на локалхосте (например, 8080), далее ставим влажок на “Dynamic” и идем на вкладку “Session” прописывать адрес и порт сервера с SSH. Коннектимся…

Какие плюсы данной системы:

1. Для организации данной схемы не нужно устанавливать серверный софт (т.к. SSH-аккаунт и сокс можно без проблем достать в инете);
2. Т.к. при SSH-соединении трафик шифруется и сжимается, то мы получаем небольшой прирост скорости работы в инете (это верно, когда сокс-демон находится на том же сервере);
3. В случае, когда сокс-сервер находится на другом хосте, то мы получаем дополнительную цепочку серверов, которые повышают нам безопасность и анонимность;

Nginx+Php-Fpm+Eaccelerator = Perfect Linux Server !

Цель: Построить быстрый и надёжный сервер, способный обслуживать несколько больших динамичных вебсайтов основанных на современных CMS (системах управления содержанием) и базе данных MySQL

Cредства; 1, Достаточно мощный компьютер: – процессор+оперативная память+обьёмный винчестер+сетевая карта = должны быть хорошими по характеристикам и достаточно современными, 2, Постоянное соединение с быстрым интернетом, 3. Зарегестрированное имя домена и наличие DNS (Domain Name Server). на котором этот домен припаркован,

Начали: Грузим OS http://www.ubuntu.com/getubuntu/download Здесь надо выбрать OS соответствующую архитектуре железа: x86 или AMD64. Я буду писать для AMD64, что впрочем подходит с небольшими изменениями и для x86 После того, как файл загрузился, надо записать его в том же формате т.е. .iso, чтобы с него можено было запускать компьютер.

Надеюсь всё прошло хорошо и сомпьютер запустился с СДишки. Предупреждаю, компьютер должен быть отведен специально для цели служить СЕРВЕРОМ. Т.е. всё, что было в нём прежде, будет утрачено !!!

Ubuntu установить очень просто, достаточно выбрать язык установки и следовать указаниям. Важно сделать правильную разметку диска. Для root или “/” достаточно 8 ГБ , swap расчитывается по формуле active RAM x 2. т.е. если общий размер оперативной памяти составляет 1 ГБ, то swap должен быть не меньше 2 ГБ. Остальное пространство отдадим /home. Там будет сидеть всё хозяйство сервера.

После того как система задышала и ты в неё вошёл первым делом добавь терминал на панель. Ну и понеслись: (Я буду писать коды для терминала, тебе надо их скопировать, вставить и нажать “enter”. Свои пояснения я буду отделять запятыми, скобками или кавычками, чтобы программа их не распознала, даже если ты их по ошибке и введешь)

sudo apt-get update

sudo apt-get upgrade

(процесс получения обновлений, надо будет ввести пароль)

sudo aptitude install mysql-server

(ждём пока установится)

sudo mysql_secure_installation

(на все вопросы – yes и устанавливаем пароль, очень важно его не забыть и сделать достаточно сложныи)

(Установим дополнительные библиотеки)

sudo aptitude install build-essential libtool libltdl3-dev libgd-dev libmcrypt-dev libxml2-dev libmysqlclient15-dev flex m4 awk automake autoconf bison make libbz2-dev libpcre3-dev libssl-dev zlib1g-dev vim re2c libjpeg-dev libpng-dev

(Мы будем собирать PHP с PHP-FPM заплаткой из источника.)

cd /usr/local/src

wget http://us.php.net/get/php-5.2.10.tar.gz/from/ru.php.net/mirror

tar xzvf php-5..10.tar.gz

wget php-fpm.org/downloads/php-5.2.10-fpm-0.5.13.diff.gz

gzip -cd php-5.2.10-fpm-0.5.13.diff.gz | patch -d php-5.2.10 -p1

cd php-5.2.10

./configure –enable-fastcgi –enable-fpm –enable-exif –with-mcrypt –with-zlib –enable-mbstring –with-openssl –with-mysql –with-mysql-sock –with-gd –with-gettext –with-jpeg-dir=/usr/lib –enable-gd-native-ttf –without-sqlite –disable-pdo –disable-reflection –with-libdir=lib64 –with-pgsql=/usr/lib/pgsql –with-mysql=/usr/lib64/mysql

(Если сборка будет жаловаться, что не хватает чего то, то можно будет найти и установить недостающее через Synaptic)

make all install

strip /usr/local/bin/php-cgi

( Теперь отрегулируем PHP-FPM, о котором хочу сказать особо. Php-fpm – это продукт напряжённого бескорыстного труда нашего соотечественника Андрея Нигматулина, И этим продуктом, как и NGINXом от Игоря Сысоева, уже пользуются миллионы админов по всему миру, несмотря на то, что мало кто из из них говорит и понимает по русски и что отсутствует подробная документация. Золото видно издалека …. И цена его понятна на любых языкахMoney mouth )

sudo gedit /usr/local/etc/php-fpm.conf

(линия 63 убрать стрелки и тире перед и за кодом и поменять nobody на)

www-data

( то же самое для линии 66)

www-data

(Устанавливаем NGINX web server)

cd /usr/local/src

wget sysoev.ru/nginx/nginx-0.7.61.tar.gz

tar xzvf nginx-0.7.61.tar.gz

cd nginx-0.7.61

(нам не нужны почтовые функции NGINX потому, что мы будем использовать внешний почтовый агент чтобы не нагружать сервер)

./configure –sbin-path=/usr/local/sbin –with-http_ssl_module –without-mail_pop3_module –without-mail_imap_module –without-mail_smtp_module

make

make install

(настроим NGINX)

sudo gedit /usr/local/nginx/conf/nginx.conf

(см. прикрерплённый файл)

http://vkimo.org/files/nginx.txt

(Обрати внимание на “root /home/TVOI FOLDER/$host;” – здесь надо указать путь к папке, где будет сидеть всё содержание сайта. “$host” это абсолютное значение, которое вытащит и опубликует любой сайт если он зарегестрирован, находится на работающем домайн найм сервере и сидит в отдельной папке в твоей домашней папке “TVOI FOLDER” под названием твоего сайта т.е. “moisite.com”. А также на “server_name ” Символ ” _ ” – это Изумительное по простоте и удобству решение автора NGINX Игоря Сысоева http://sysoev.ru/nginx/ способа адресовать виртуальные хосты. Apache и даже Lighttpd здесь отдыхают плотно.

Теперь создадим место для содержимого нашего вебсайта и изменим соответственно /home/TVOI FOLDER/$host

sudo mkdir /home/www

sudo mkdir /home/www/точное название твоего сайта (мойсайт.ru)

sudo chmod -R tvoeimya:tvoeimya /home/www/moisite.ru (tvoeimya надо поменять на имя пользователя, под которым ты работаешь в своём сервере, Это даст тебе возможность управлять содержимым папки сайта без необходимости входить в сервер под привелегированным пользователем – root.

(Создадим также два файла внутри папки сайта)

gedit /home/www/moi site.ru/index.html

(вставить в пустой файл что-нибудь вроде – Это мой первый сайт !!! )

gedit /home/www/moisite.ru/info.php

(Вставить этот код в пустой файл сохранить и закрыть)

phpinfo();
?>

Продолжаем: надо отрегулировать fastcgi_params)

sudo gedit /usr/local/nginx/conf/fastcgi_params

(и в самый верх добавляем)

fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

(а также выключаем, ставим “#” перед #fastcgi_param REDIRECT_STATUS 200; примочку для арача потому что мы его здесь не имеем )

(Полируем PHP код)

sudo gedit /usr/local/lib/php.ini

(вставить это в пустой файл)

_________________________________________________________________________________________

magic_quotes_gpc=0
[xcache-common]
#zend_extension = /usr/local/lib/php/extensions/no-debug-non-zts-20060613/xcache.so
[xcache]
#xcache.shm_scheme = “mmap”
#xcache.size = 64M
default_charset = “utf-8″
[memcache]
#extension = memcache.so
#memcache.hash_strategy=”consistent”
[memcache]
[suhosin]
#extension = suhosin.so
#extension = apc.so
#apc.shm_size = 48
[suhosin]
; For Unix only. You may supply arguments as well (default: “sendmail -t -i”).
sendmail_path = /usr/sbin/sendmail -i -t
upload_max_filesize=8M
[eaccelerator]
#zend_extension=”/usr/local/lib/php/extensions/no-debug-non-zts-20060613/eaccelerator.so”
#eaccelerator.shm_size=”16″
#eaccelerator.cache_dir=”/tmp/eaccelerator”
#eaccelerator.enable=”1″
#eaccelerator.optimizer=”1″
#eaccelerator.check_mtime=”1″
#eaccelerator.debug=”0″
#eaccelerator.filter=”"
#eaccelerator.shm_max=”0″
#eaccelerator.shm_ttl=”0″
#eaccelerator.shm_prune_period=”0″
#eaccelerator.shm_only=”0″
#eaccelerator.compress=”1″
#eaccelerator.compress_level=”9″
[eaccelerator]

_________________________________________________________________________________________

(Как видно, большинство примочек выключено. Это на потом, потому что ни одна из тех примочек ещё у тебя не установлена. Мы это сделаем позже)

(Надо попробовать стартануть php-fpm)

php-fpm start

(Теперь NGINX)

nginx

(Если ошибок нет – будь горд собой !!!)

(Надо теперь сделать так чтобы оба сервиса запускались автоматически вместе с запуском сервера)

cd /etc/init.d/

ln -s /usr/local/sbin/php-fpm php-fpm

/usr/sbin/update-rc.d -f php-fpm defaults

(Это было просто для php-fpm, немного сложнее для NGINX)

sudo kill `cat /usr/local/nginx/logs/nginx.pid`
sudo gedit /etc/init.d/nginx
(и вставить этот код в пустой файл)

_________________________________________________________________________________________

### BEGIN INIT INFO
# Provides: nginx
# Required-Start: $all
# Required-Stop: $all
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: starts the nginx web server
# Description: starts nginx using start-stop-daemon
### END INIT INFO

PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
DAEMON=/usr/local/sbin/nginx
NAME=nginx
DESC=nginx

test -x $DAEMON || exit 0

# Include nginx defaults if available
if [ -f /etc/default/nginx ] ; then
. /etc/default/nginx
fi

set -e

case “$1″ in
start)
echo -n “Starting $DESC: ”
start-stop-daemon –start –quiet –pidfile /usr/local/nginx/logs/nginx.pid \
–exec $DAEMON — $DAEMON_OPTS
echo “$NAME.”
;;
stop)
echo -n “Stopping $DESC: ”
start-stop-daemon –stop –quiet –pidfile /usr/local/nginx/logs/nginx.pid \
–exec $DAEMON
echo “$NAME.”
;;
restart|force-reload)
echo -n “Restarting $DESC: ”
start-stop-daemon –stop –quiet –pidfile \
/usr/local/nginx/logs/nginx.pid –exec $DAEMON
sleep 1
start-stop-daemon –start –quiet –pidfile \
/usr/local/nginx/logs/nginx.pid –exec $DAEMON — $DAEMON_OPTS
echo “$NAME.”
;;
reload)
echo -n “Reloading $DESC configuration: ”
start-stop-daemon –stop –signal HUP –quiet –pidfile /usr/local/nginx/logs/nginx.pid \
–exec $DAEMON
echo “$NAME.”
;;
*)
N=/etc/init.d/$NAME
echo “Usage: $N {start|stop|restart|force-reload}” >&2
exit 1
;;
esac
exit 0

_________________________________________________________________________________________

(разумеется его надо сохранить, закрыть и сделать исполняемым)

sudo chmod +x /etc/init.d/nginx
sudo /usr/sbin/update-rc.d -f nginx defaults

(Увидишь примерно такой выход):

Adding system startup for /etc/init.d/nginx …
/etc/rc0.d/K20nginx -> ../init.d/nginx
/etc/rc1.d/K20nginx -> ../init.d/nginx
/etc/rc6.d/K20nginx -> ../init.d/nginx
/etc/rc2.d/S20nginx -> ../init.d/nginx
/etc/rc3.d/S20nginx -> ../init.d/nginx
/etc/rc4.d/S20nginx -> ../init.d/nginx
/etc/rc5.d/S20nginx -> ../init.d/nginx

(Последнее в этом уроке:

Если мы ожидаем хорошее движение на сайте, то необходимо создать файл для logrotate, который автоматически будет сжимать и удалять старые файлы и давать нам возможность контролировать кто бывал на нашем сайте)
sudo gedit /etc/logrotate.d/nginx

(вставить это в пустой файл и сохранить)

_________________________________________________________________________________________

/usr/local/nginx/logs/*.log {
daily
missingok
rotate 9
compress
delaycompress
notifempty
postrotate
kill -USR1 `cat /usr/local/nginx/logs/nginx.pid`
endscript
}

Настройка безпарольной аутентификации по ssh

Допустим, вам необходимо настроить безпарольный вход по ssh (scp и sftp тоже) на удаленный сервер remote.org.ua под пользователем user.
Если ваш имя вашего локального пользователя совпадает с удаленным, то user@ везде можно опустить.

1) создаем открытый и закрытый ключ нашей локальной системы
$ ssh-keygen -t rsa
жмем энтер отказываясь от ключевой фразы

2) если в системе есть программа ssh-copy-id, то настраиваем удаленную систему на то, что бы оно авторизировало ssh по открытому ключу
$ ssh-copy-id -i ~/.ssh/id_rsa user@remote.org.ua
переходим к шагу 4)

3) если ssh-copy-id нет то можно сделать это ручками. вот последовательность действий с объяснениями

3.1) копируем открытый ключ на удаленную систему
$ scp ~/.ssh/id_rsa.pub user@remote.org.ua:~ незабываем ввести пароль. ведь мы еще не настроили беспарольный вход Ж:-)

3.2) логинимся на удаленный сервер
$ ssh user@remoute.org.ua

3.3) заносим открытый ключ нашей локальный системы в авторизированые ключи удаленной системы, устанавливаем правильные права и убираем за собой мусор:
remote$ [ -d ~/.ssh ] || (mkdir ~/.ssh; chmod 711 ~/.ssh) # создадим ~/.ssh директорию если ее нет и дадим нужные права
remote$ cat ~/id_rsa.pub >> ~/.ssh/authorized_keys # добавляем открытый ключ к авторизированым ключам
remote$ chmod 600 ~/.ssh/authorized_keys # и делаем правильные права(иначе ssh откажется брать отсюда ключи)
remote$ rm ~/id_rsa.pub # удаляем ненужное

4) проверяем что все работает. запускаем на локальном хосту
$ ssh user@remoute.org.ua
или например
$ scp .zshrc user@remoute.org.ua:~
должно сработать без пароля.

Полезные bash-команды

Кто слышал о BASH? Думаю все, кто, хоть как-то, связан с IT индустрией. О синтаксисе и командах написана не одна тысяча книг. Поэтому здесь, предлагаю, рассмотреть только “редкие” команды, которые трудно найти, но могут быть полезными.
Возвращает количество файлов в том числе и во вложенных папках:

ls -R -l | wc -l

Возвращает объём папки(со вложеностями):

du -sh

Выводит максимальное разрешение текстур (wallpapper, skydom и тд) поддерживаемое системой:

xvinfo | grep max

Высчитывает количество строк в файлах по маске (параметр “*.php”) в текущей и во вложеных директориях:

find . -name "*.php" -type f -print0 | xargs -0 wc -l

Генерирует произвольный пароль в 16 (параметр -c16) символов:

/dev/urandom tr -dc A-Za-z0-9_ | head -c16 ; echo

Разбивает файл bigfile на файлы не превышающие 700 мегабайт (параметр 700m), называя новые файлы BIG_aa, BIG_ab, … (общая маска задаётся последним параметром):

split -b 700m bigfile BIG_

Выводит список популярных на машине команд с количеством вызовов:

history|awk '{a[$2]++ } END{for(i in a){print a[ i ] " " i}}'|sort -rn|head

Найти и удалить в bash

Простая команда для поиска и удаления в консоле:

 $ rm -rf `find /folder_name/ -name *patern*` 

Пример:

 $ rm -rf `find . -name .svn` 

Удалит все папки .svn из текущей и всех вложенных дерикторий.

Настройка NAT во FreeBSD

В статье описывается процесс настройки NAT’а (Network Address Translation) на простом примере предоставления доступа к ресурсам внешней сети (или интернету) из внутренней локальной сети.

В данной статье мы будем рассматривать настройку Nat на примере раздачи интернета в локальную сеть.

Итак, у нас есть сервер под управлением FreeBSD, подключенный к сети провайдера («внешняя сеть»).
Также имеется один или несколько компьютеров («внутренняя сеть»), которым нужно дать доступ к ресурсам сети интернет.
Подключить компьютеры внутренней сети напрямую к внешней нельзя, так как у нас есть всего 1 IP-Адрес во внешней сети, который выдан нашему серверу.
Выходом из ситуации будет соединение сетей через сервер (в данной ситуации всётаки «роутер» будет более правильно) при помощи технологии NAT
Предположим что сеть провайдера имеет диапазон 123.123.123.0/24, а IP который выдал нам провайдер 123.123.123.111.
Внутренняя сеть же имеет диапазон 192.168.10.0/24 и IP нашего роутера в ней 192.168.0.1
Диапазон IP адресов во внутренней сети может быть любой, однако необходимо чтобы он не пересекался с диапазонами ни в одной внешней сети.
Read the rest of this entry »

Настройка сетевых интерфейсов для разных Unix систем

В данной статье мы рассмотрим как правильно настроить сетевой интерфейс для разных Unix систем.
В качестве примера предположим что у нас есть следующие данные:

IP address : 192.168.10.14, 192.168.10.15
Mask : 255.255.255.0
Gateway : 192.168.10.1
DNS : 192.168.10.3
DNS : 192.168.10.2

Итак приступим:
Для операционной системы FreeBSD:
В конфигурационный файл /etc/rc.conf добавляем:

# Основной адрес
ifconfig_rl0="inet 192.168.10.14 netmask 255.255.255.0"
# Основной Шлюз
defaultrouter="192.168.10.1"
# Алиас
ifconfig_rl0_alias0="inet 192.168.10.15 netmask 255.255.255.0"

rl0 — название сетевого интерфейса который настраиваемого мы настраиваем.

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

/etc/rc.d/netif restart
 Read the rest of this entry »

autoconf 2.62 и старые версии FreeBSD

При необходимости установить autoconf версии 2.62 и выше из портов в FreeBSD 5.x или, тем более, 4.x, возникает проблема с texinfo. Например, появляются такие ошибки:

autoconf-2.62.texi:1723: Unknown command `'.
autoconf-2.62.texi:3353: Unknown command `’.

По этой ссылке указано, что надо с этим делать. В общем, надо всего-то добавить пару строк в Makefile и чуть-чуть изменить последнюю строку, и всё соберётся без проблем.

UPDATE: получившийся у меня Makefile

UPDATE2: in case you don’t speak Russian, please, read this the full version of this post.

If you have ‘old’ version of FreeBSD (4-5) and experiencing problems with texinfo while updating autoconf, you should read this link. It tells what you should add to Makefile in order to update autoconf. As a result, this Makefile worked for me.

Tip: запускать задачу раз в месяц в субботу

Часто необходимо запускать что-то (например полный бекап бд) раз в месяц, но в выходной, допустим в ночь с субботы на воскресенье.

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

0 23 * * 6 [`date "+%d"` -lt 8] && /path/to/script

Это запустит скрипт в первую субботу месяца в 23:00.

Файловая система FreeBSD: иерархия и монтирование

Созданием разделов и файловых систем на них дело подготовки дискового пространства к использованию не заканчивается. Все созданные файловые системы нужно еще сделать доступными для FreeBSD. Для чего они должны быть смонтированы — то есть включены в единую иерархию каталогов и файлов, для обозначения которой также используется название файловой системы. Однако если раньше речь шла о физической организации данных, то теперь пора ознакомиться с ее логикой.
Логика файловой системы

Логически файловая система FreeBSD (как и любой Unix-системы) организована по древовидному принципу: в основании ее лежит корень (корневой каталог, обозначаемый символом / и именуемый также root-каталогом; последнее не должно путать с каталогом /root, который выполняет роль домашнего для суперпользователя). От корневого каталога, который можно уподобить скорее стволу дерева, отходят ветви — вложенные в него подкаталоги, и побеги — обычные файлы. Последних, правда, немного: в версиях FreeBSD 5-й ветки это пара профильных файлов — /.cshrc и /.profile, на самом деле дублирующие профильные файлы суперпользователя (в каталоге /root), некий энтропийный (/entropy) файл и файл с описанием авторских прав на систему /COPYRIGHT. Read the rest of this entry »