Май 03

DHCP client без default GW

Чтобы dhclient получал default route только с одного интерфейса, делаем хук в
/etc/dhcp/dhclient-enter-hooks.d
такого содержания:

#!/bin/sh
INTERFACE_DEFAULT_ROUTE="eth0"
case "$reason" in
    BOUND|RENEW|REBIND|REBOOT|TIMEOUT)
    if [ ${interface} != $INTERFACE_DEFAULT_ROUTE ]; then
        unset new_routers
    fi
      ;;
esac

после чего основной шлюз будет ловиться только у интерфейса INTERFACE_DEFAULT_ROUTE
и не надо костыльно править client.conf как все советуют.

Мар 28

Прячем виртуальный хост в малиновый пирог

МагияПро OpenVPN написано уже довольно дофига. И даже мной. Но вот возникла необходимость сделать ВЖУХ.


Итак:
Сервер на Raspberry-pi, eth0 в мост с tap1
Клиент на libvirt хост, VPN поднимает хост, отдает мостом (br1 tap1) гостю. Гость прозрачно сидит в локальной сети, про VPN не знает.
Можно отключить гостю virbr0, тогда он еще и в интернет ходить будет через впн. Такая вот петрушка.
Имеем — без малинки сервера нет, но малинка сама по себе не знает откуда он берется, изучать её на в другом месте или при выключенном VPN-клиенте бессмыслительно. Еще логи в /dev/null переправить и предусмотреть аварийное выключение VPN клиента.
А еще порт понестандартнее и ваще огонь.
Конфиги чуть внизу.
Continue reading

Апр 22

OpenSSL self-signed cert

Выжимка из http://www.akadia.com/services/ssh_test_certificate.html

Создаем ключ:

openssl genrsa -out server.key 1024

Создаем CSR (Запрос на подпись сертификата)

openssl req -new -key server.key -out server.csr

В Common Name должно быть полное доменное имя, это важно.
Создаем самоподписанный сертификат:

openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt
Апр 22

Mikrotik hotspot Uptime-Limit

В догонку к предыдущему посту
Счетчик общей длительности сессий пользователя:

sqlcounter uptimecounter {
    counter-name = Uptime-Total
    check-name = Uptime-Limit
    reply-name = Session-Timeout
    sqlmod-inst = sql
    key = User-Name
    reset = never
    query = "SELECT ifnull(sum(time_to_sec(timediff(acctstoptime,acctstarttime))),0) FROM radacct WHERE username like '%{%k}'"
}

Подключить модуль в секции authorize
Аттрибут Uptime-Limit в стандартных справочниках есть, если что — добавить не сложно.
Время сессии в секундах.

Апр 16

Mikrotik hotspot + Radius + счетчики (трафика?)

Собсно ничего сложного в этом нет.
Настройка Radius+MySQL стандартна:

apt-get install freeradius freeradius-mysql mysql-server

добавить базу, залить таблички из /etc/freeradius/sql/mysql/schema.sql
подключаем базу к freeradius правя /etc/freeradius/sql.conf и раскомментируя загрузку модуля sql.conf в radiusd.conf
раскоментируем модуль sql в
/etc/freeradius/sites-enabled/default (или в том, что используется) в секциях authorize authenticate и прочих закомментированных местах (мануалов тысяча, даже чуть больше), все стандартно.

Continue reading

Мелочь

Дожидаемся завершения процесса и выключаем компьютер:

#!/bin/bash
pid=$1
while kill -0 $pid 2> /dev/null >/dev/null
do
  sleep 1
done
shutdown -h now
Сен 23

Конвертация таблиц MySQL в UTF8

Джанга в очередной раз создала кучу таблиц в latin1, а вручную уж очень не хотелось

#!/bin/bash
host="127.0.0.1"
database=$1
pwd="password"
user="user"
tables=`mysql -h $host --user=$user --password=$pwd $database -e "show tables;" -s -r -N`
for table in $tables
do
	echo "Converting $table"
        #тут можно так же optimize table и что там еще
	mysql -h $host --user=$user --password=$pwd $database -e \    
           "alter table $table convert to character set 'utf8';"
done
Янв 31

Собственный git с преферансом и поэтессами

Заметка скорее для себя, на память…
Цель работы:
Настроить репозиторий git с доступом по протоколу HTTP и web-интерфейсом

Приборы и материалы:

  • сервер с ubuntu (debian)
  • apache2 (будем работать по HTTP)
  • git (ради него все и затевалось)
  • gitweb (веб-морда)

Continue reading