Рубрика: Linux

Rocky Linux 8.4 Open vSwitch

Прикручивать к системе буду через network-scripts, хоть и legacy, но просто, быстро и без бубна. А NetworkManager вообще выключу к х.ям. И вообще это заметка для себя, потому что OVSDHCPINTERFACES и OVSBOOTPROTO как-то не сразу обнаружилось, а надо было.

Устанавливаем пакеты, в два этапа

dnf install -y centos-release-nfv-openvswitch
dnf install -y network-scripts openvswitch2.13

Запускаем OpenVSwitch

systemctl enable --now openvswitch

Добавляем OVS свитч ovs-br0, порт в него добавим позже, иначе отвалится сеть

ovs-vsctl add-br ovs-br0

Создаем файлы конфигурации свитча

cat > /etc/sysconfig/network-scripts/ifcfg-ovs-br0 << EOF
DEVICE=ovs-br0
BOOTPROTO=dhcp 
ONBOOT=yes
TYPE=OVSBridge
PEERDNS=yes
IPV6INIT=no
# Static IP
IPADDR=192.168.0.2
NETMASK=255.255.255.0
GATEWAY=192.168.0.1
DNS1=192.168.0.1
DNS2=1.1.1.1
#Or DHCP Config, BOOTPROTO должно быть none
OVSBOOTPROTO=dhcp
OVSDHCPINTERFACES=enp0s3
EOF

И его порта,

cat > /etc/sysconfig/network-scripts/ifcfg-enp0s3 << EOF
DEVICE=enp0s3
ONBOOT=yes
TYPE=OVSPort
DEVICETYPE=ovs
OVS_BRIDGE=ovs-br0
EOF

Выключаем NetworkManager и заводим sys-v скрипты

systemctl disable NetworkManager
systemctl enable network

Вот тут кончится сеть или перезагружать компьютер через минутку (shutdown -r +1)

ovs-vsctl add-port ovs-br0 enp0s3

или выполнить в скрипте

systemctl stop NetworkManager
systemctl start network

Ну а дальше:
https://habr.com/ru/post/242741/

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 как все советуют.

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

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


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

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

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 в стандартных справочниках есть, если что — добавить не сложно.
Время сессии в секундах.

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 и прочих закомментированных местах (мануалов тысяча, даже чуть больше), все стандартно.

Читать далее

Мелочь

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

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

Конвертация таблиц 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