Фряха — Частин https://chast.in Свободной памяти нет - приходится записывать Fri, 30 Aug 2024 20:39:02 +0000 ru-RU hourly 1 https://wordpress.org/?v=6.9.11 Error while fetching file MANIFEST https://chast.in/error-while-fetching-file-manifest.html https://chast.in/error-while-fetching-file-manifest.html#respond Wed, 13 Oct 2021 17:40:40 +0000 https://chast.in/?p=1738

При попытке установить FreeBSD через mfsbsd получаем ошибку: «Error while fetching file:///usr/freebsd-dist/MANIFEST» — no such file or directory.

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

mkdir -p /usr/freebsd-dist
fetch https://download.freebsd.org/ftp/releases/amd64/`uname -r`/MANIFEST -o /usr/freebsd-dist/MANIFEST
bsdinstall
]]>
https://chast.in/error-while-fetching-file-manifest.html/feed 0
Qemu-KVM на host FreeBSD 13 https://chast.in/qemu-kvm-in-freebsd-13.html https://chast.in/qemu-kvm-in-freebsd-13.html#respond Mon, 23 Aug 2021 14:31:34 +0000 https://chast.in/?p=1709

Использование FreeBSD в качестве хостовой ОСи имеет многочисленные преимущества.. Во первых это мощный и гибкий файервол ipfw. Во-вторых специально созданная для снапшотов файловая система ZFS. В третьих — малая прожорливость и легендарная надежность фряхи существенно повышет аптайм ноды..
Во FreeBSD есть виртуализация KVM, а не только jail. И работает вполне бодро, на момент написания доступна только 5-ая версия. В общем, если нужно быстро поднять виртуалку на Фре, действую так, как написано ниже

Устанавливаем нужное программное обеспечение:

pkg install qemu-devel

Создаем тестовую виртуальную машину:

# создаем диск для виртуальной машины
qemu-img create -f qcow2 hdd100.img 10G
# скачиваем образ ОСи для виртуальной машины
fetch https://download.grml.org/grml64-small_2021.07.iso -O grml.iso
# стартуем машину, устанавливаем через VNC на IP хостовой тачки, порт 5900
qemu-system-x86_64 -machine q35 -m size=4096 -cdrom grml.iso -hda hdd100.img -boot d -net nic,model=e1000,macaddr=00:e0:e1:12:13:fe -vnc :0

На этом уже всё! Виртуальная машина работает! Можно далее настраивать сеть, пробрасывать внутрь виртуалки интернет..

]]>
https://chast.in/qemu-kvm-in-freebsd-13.html/feed 0
Проброс порта во FreeBSD ipfw kernel nat на другой IP https://chast.in/freebsd-ipfw-kernel-nat-redirect-ip.html https://chast.in/freebsd-ipfw-kernel-nat-redirect-ip.html#respond Fri, 19 Feb 2021 20:49:58 +0000 https://chast.in/?p=1657

Потребовалось пробросить порт с одного сервера с ОС FreeBSD c ipfw на другой сервер. На всякий случай решил записать — мало ли еще кому-нибудь пригодится…

В файл /boot/loader.conf допишем:

# RUS
kern.vty=vt

# PIPE
ipdivert_load="YES"
dummynet_load="YES"
ng_pipe_load="YES"

# SETFIB
#net.fibs="2"'

# IPFW
ipfw_load="YES"
ipfw_nat_load="YES"
firewall_logif="YES"

В файле /etc/sysctl.conf укажем:

net.inet.ip.fw.verbose_limit=0
net.inet.ip.fw.verbose=1

В файле /etc/rc.conf допишем:

keymap="ru"
# IPFW
firewall_enable="YES"
firewall_script="/etc/ipfw.script"
firewall_logging="YES"
firewall_logif="YES"
firewall_nat_enable="YES"
dummynet_enable="YES"
gateway_enable="YES"

И собственно, сам файл для файрвола /etc/ipfw.script:

FW="/sbin/ipfw"
# Интерфейс, на котором слушаем
WAN="em0"
# Порт, который слушаем
FromPort="43389"
# IP, на который будем пробрасывать порт
ToIP="91.01.91.11"
# Порт, на который будем пробрасывать
ToPort="3389"
${FW} -f flush
${FW} enable one_pass
${FW} add allow all from any to any via lo0
${FW} add deny all from any to 127.0.0.0/8
${FW} add deny all from 127.0.0.0/8 to any
${FW} add deny all from any to any frag
${FW} add check-state
# Табличка тех IP, кто может зайти в ssh
${FW} table admin create missing
${FW} table admin add 46.0.0.0/8
${FW} table admin add 5.135.191.0/24
${FW} table admin add 188.138.9.0/24
${FW} table admin add 195.154.236.0/24
${FW} add allow ip from "table(admin)" to me 22
# Для них же - разрешаем пинг
${FW} add allow icmp from "table(admin)" to me in icmptype 8
${FW} add allow icmp from me to "table(admin)" out icmptype 0,8
# Ограничим скорость подключения с одного IP на защищенный адрес IP
# Входящая скорость
${FW} pipe 1 config bw 20Mbit/s queue 60 gred 0.002/10/30/0.1
${FW} queue 1 config pipe 1 queue 60 buckets 128  mask src-ip 0xffffffff gred 0.002/10/30/0.1
# Выходящая скорость
${FW} pipe 2 config bw 20Mbit/s queue 60 gred 0.002/10/30/0.1
${FW} queue 2 config pipe 2 queue 60 buckets 128 mask dst-ip 0xffffffff gred 0.002/10/30/0.1
# Собственно - редирект порта 
${FW} nat 1 config log if ${WAN} same_ports deny_in \
        redirect_port tcp ${ToIP}:${ToPort} ${FromPort}
${FW} add nat 1 ip from any to any via ${WAN} 

${FW} add allow tcp from any ${FromPort} to any via ${WAN}
${FW} add queue 1 ip from any to ${ToIP} in via ${WAN}
${FW} add allow  tcp from any to ${ToIP} in via ${WAN}
${FW} add queue 2 ip from me to any out via ${WAN}
${FW} add allow  tcp from me to any out via ${WAN}
${FW} add allow tcp from any to any established
${FW} add deny log all from any to any

После всего этого перезагружаемся, проверяем редирект. При необходимости дописываем еще порты, IP адреса, добавляя

redirect_port IP:Port Port_который слушаем на ${WAN} 

Если на интерфейсе несколько IP и редиректить нужно только с одного IP, то строчка NAT выглядит так:

${FW} nat 1 config log ip ${FromIP} same_ports deny_in \
        redirect_port tcp ${ToIP}:${ToPort} ${FromPort}

Конечно же, проверить все это можно на выделенных и виртуальных серверах компании vps-server.ru

]]>
https://chast.in/freebsd-ipfw-kernel-nat-redirect-ip.html/feed 0
Сборка chan_dongle для Asterisk 13 на FreeBSD https://chast.in/chan_dongle-asterisk-13-in-freebsd.html https://chast.in/chan_dongle-asterisk-13-in-freebsd.html#comments Tue, 01 Sep 2020 20:32:23 +0000 https://chast.in/?p=1538

Однажды душным августовским вечером одному моему знакомому взгрустнулось. Внезапно он осознал, что время быстротечно, жизнь проходит, а минуты, которые ежемесячно предоставляет оператор Yota, не используются и пропадают!! в модеме.. Было решено собрать подзабытый всеми старинный модуль chan_dongle для Asterisk, чтобы пробалтывать, использовать эти минуты через 3G modem. По фигу с кем, но использовать их!

Конечно же ,собрать его требовалось на FreeBSD 12. Описания присутствуют в этих ваших интернетах, но они не годятся, так как не приводят к нужному результату. Без лишних вопросов — приступаем..

Для начала обновляем пакеты FreeBSD и ядро оси. Теперь устанавливаем нужные для сборки пакеты, а именно — autotools и gmake:

# Установим нужный для сборки софт
#
pkg install -y autotools gmake git

Теперь клонируем пакет с GIT-хаба и готовим его к сборке :

# Клонируем пакет
#
git clone https://github.com/oleg-krv/asterisk-chan-dongle
cd dongle/
# Готовимся к сборке
#
aclocal
autoconf
automake -a
./configure

Теперь пара важных моментов — нужно внести исправления в конфиг файла Makefile, а именно — в опции компилятора добавить ключ -fblocks и указать компилятору верный путь до библиотеки libiconv. Для этого находим строчку CFLAGS в файле Makefile и добавляем туда опцию -fblocks

А также в строке LIB = указываем путь LIBS = /usr/local/lib/

# Редактируем нужный файл
#
vi Makefile

CFLAGS  = -g -O2 -O6 -I$(srcdir)  ... -fblocks

LIBS = /usr/local/lib/

Теперь компилируем пакет:

# Компилируем и устанавливаем пакет
#
gmake
gmake install

./config.status
config.status: creating Makefile
config.status: creating config.h
config.status: config.h is unchanged
config.status: executing depfiles commands
strip chan_dongle.so
/usr/bin/install -c -m 755 chan_dongle.so /usr/local/lib/asterisk

Астериск получил плагин для звонков через 3G modem. Теперь можно настраивать его.

# Устанавливаем Asteriks
#
pkg search asterisk13
# В настоящий момент в пакетах собран asterisk13-13.34.0_1,
# устанавливаем его.
pkg install asterisk13-13.34.0_1
# Добавляем в rc.conf
sysrc asterisk_enable="YES"
# Добавляем пользователя asterisk в группу dialer 
# 
pw groupmod dialer -m asterisk
# Стартуем asteriks
#
/usr/local/etc/rc.d/asterisk start

Вероятнее всего, что астериск стартанет и будет работать. Теперь требуется создать конфиг для плагина chan_dongle — файл /usr/local/etc/asterisk/dongle.conf и написать в нем примерно следующее.

[general]
interval=15 
[defaults]
context=default
group=0
rxgain=0 
txgain=0
autodeletesms=yes
resetdongle=yes
u2diag=-1
usecallingpres=yes 
callingpres=allowed_passed_screen 
disablesms=no 
[beeline]
imei=35870507777777
context=beeline-incoming
exten=+79051111111
audio=/dev/cuaU0.1
data=/dev/cuaU0.2
group=1
rxgain=2
txgain=2
resetdatacard=yes
u2diag=0
usecallingpres=yes
callingpres=allowed_passed_screen
disablesms=no

]]>
https://chast.in/chan_dongle-asterisk-13-in-freebsd.html/feed 1
Печать громоздких PDF файлов на принтере Canon LBP-810 https://chast.in/print-pdf-files-on-canon-lbp-810.html https://chast.in/print-pdf-files-on-canon-lbp-810.html#respond Wed, 29 Jan 2020 12:51:56 +0000 https://chast.in/?p=1388

Оказывается, что формат PDF не всегда верно интерпретируют старинные принтеры типа Canon LBP-810, LBP-1120 и аналогичных. При попытке печатать страница «расползается» и текст становится не читаемым. Проблема решается конвертированием PDF в TIFF

На Fedore моментально используем Ghostscript и действуем так:

gs -r300 -o page-tiffg4.tif -sDEVICE=tiff24nc source.pdf

где:

-r — разрешение в DPI,

-sDEVICE=tiff24nc — глубина цвета, может быть tiff32nc или tiff4

-o новый файл

source.pdf исходный файл

]]>
https://chast.in/print-pdf-files-on-canon-lbp-810.html/feed 0
Gammu daemon во FreeBSD https://chast.in/gammu-daemon-in-freebsd.html https://chast.in/gammu-daemon-in-freebsd.html#respond Fri, 23 Aug 2019 13:45:37 +0000 https://chast.in/?p=1354

Внезапно выяснилось, что во FreeBSD нет демона gammu. Сама gammu присутствует, порт ведется, обновляется. Но daemon gammu-smsd отсутствует. А мне потребовалось отправлять SMS через старенький модем ZTE MF112, установленный в компьютер с ОС FreeBSD 12. Причем таким образом, что SMS эти поступали на FTP пользователя gammu этого же компьютера. Пришлось быстренько накалякать свой..

Установка самой gammu не представляет никаких сложностей, элементарно:

# Устанавливаем gammu:
pkg install gammu

После установки втыкаем модем, у меня это ZTE, в /dev сразу же появилось несколько новых устройств, в их числе те, что интересуют нас:

# Смотрим устройства модема.
ls -al /dev/cuaU*
crw-rw----  1 uucp  dialer  0x93 22 авг.  15:55 /dev/cuaU0.0
crw-rw----  1 uucp  dialer  0x94 22 авг.  15:49 /dev/cuaU0.0.init
crw-rw----  1 uucp  dialer  0x95 22 авг.  15:49 /dev/cuaU0.0.lock
crw-rw----  1 uucp  dialer  0x99 22 авг.  16:02 /dev/cuaU0.1
crw-rw----  1 uucp  dialer  0x9a 22 авг.  15:49 /dev/cuaU0.1.init
crw-rw----  1 uucp  dialer  0x9b 22 авг.  15:49 /dev/cuaU0.1.lock
crw-rw----  1 uucp  dialer  0x9f 23 авг.  00:10 /dev/cuaU0.2
crw-rw----  1 uucp  dialer  0xa0 22 авг.  15:49 /dev/cuaU0.2.init
crw-rw----  1 uucp  dialer  0xa1 22 авг.  15:49 /dev/cuaU0.2.lock

Видим, что у нас три устройства. Нам нужно найти то, через которое идет обмен данными. Пробуем подключиться через screen к устройствам модема..

# Пробуем подключиться через screen  к устройствам модема.
screen /dev/cuaU0.2
Подключаемся поочередно к устройствам модема и пробуем ввести туда команды.

Поняв, что нужное нам устройство — /dev/cuaU0.2, сочиняем конфиг gammu, файл /etc/gamurc:

nano /etc/gamurc
port = /dev/cuaU0.2
gammucoding = utf8
connection = fbus
name = ZTE
synchronizetime = no
model = MF112 (MF112)
connection = at9600
synchronizetime = yes
logfile =
logformat = notify
use_locking =
gammuloc =
unicode

Проверяем, сможет ли gammu использовать модем:

# Gammu говорит: все в порядке, вижу модем
gammu --identify
Устройство : /dev/cuaU0.2
Производитель : ZTE
Модель         : MF112 (MF112)
Прошивка     : BD_MF112V1.0.0B01
IMEI                 : 355434042361354
Номер SIM IMSI  : 250996656699529

Пробуем отправить SMS на телефон, раз все так здорово:

# Пробуем отправить SMS на телефон через GAMMU:
/usr/local/bin/gammu sendsms TEXT +910667XXXX -unicode -textutf8 "Горячий привет всем работникам связи!"

SMS уходит, и, что важно — приходит адресату! 😉 Теперь нужно автоматизировать процесс отправки SMS, организовать простенький шлюз. Я решил написать собственный демон для отправки SMS. Для этого создадим файл нашего демона в каталоге /usr/local/etc/rc.d/ и сделаем его исполняемым. Открываем редактор nano /usr/local/etc/rc.d/gammud
И добавляем текст туда:

#!/bin/sh
#
# PROVIDE: gammud
# REQUIRE: networking
# KEYWORD:

. /etc/rc.subr

name="gammud"
rcvar="gammud_enable"
command="/usr/local/gammud/gammud"
command_interpreter=/bin/sh
gammud_user="root"
pidfile="/var/run/${name}.pid"

start_cmd="gammud_start"
stop_cmd="gammud_stop"
status_cmd="gammud_status"


gammud_start() {
        /usr/sbin/daemon -P ${pidfile} -r -f -u $gammud_user $command
}

gammud_stop() {
        if [ -e "${pidfile}" ]; then
                kill -s TERM `cat ${pidfile}`
        else
                echo "${name} is not running"
        fi

}

gammud_status() {
        if [ -e "${pidfile}" ]; then
                echo "${name} is running as pid `cat ${pidfile}`"
        else
                echo "${name} is not running"
        fi
}

load_rc_config $name
: ${gammud_enable:=no}

run_rc_command "$1"

Делаем его исполняемым:
chmod +x /usr/local/etc/rc.d/gammud

Добавляем демон в файл /etc/rc.conf, добавим туда строку gammud_enable=»YES»

Теперь пишем скрипт, который будет мониторить каталог с поступающими файлами SMS и отправляет сообщения абонентам. Для этого создаем каталог демона mkdir /usr/local/gammud и файл
/usr/local/gammud/gammud, в который помещаем следующий текст:

#!/bin/sh
#
homeDir="/home/gammu"
outDir=$homeDir"/out"
sentDir=$homeDir"/sent"
inDir=$homeDir"/in"

log="/var/log/gammu.log";

while true; do
    for f in "$outDir"/OUTA_*.txt; do
        sms_number=$(echo $f | /usr/local/bin/perl -n -e '/.*OUTA_([+\d]*)_[\d]*.txt/is && print "$1"' );
        sms_text=$(cat "$f" | xargs );
        if [ ! -z "$sms_number" ] && [ ! -z "$sms_number" ]; then
            echo $(date "+%Y-%m-%d %H:%M:%S" ) " $f $sms_number $sms_text"  >> $log
            /usr/local/bin/gammu sendsms TEXT $sms_number -unicode -textutf8 "$sms_text" | xargs >> $log
            /bin/mv $f $sentDir
        fi
    done
    sleep 10
done

Делаем файл исполняемым, cmod +x /usr/local/gammud/gammud Практически готово. Осталось только добавить пользователя gammu командой adduser и создать необходимые директории для работы демона. Выполняем следующие команды:

# Добавим пользователя в систему
adduser
# Создадим каталоги для получения/отправки SMS
# Каталог для исходящих SMS
mkdir /home/gammu/out 
# Каталог для отправленных SMS
mkdir /home/gammu/sent
mkdir /home/gammu/in 

Теперь запускаем daemon:

# Run daemon
service gammud start
# Check daemon status
service gammud status
gammud is running as pid 1261

Все в порядке, демон работает..Теперь кладем в каталог исходящих сообщений специально сформированный файл, например: nano /home/gammu/out/OUTA_+7910667XXXX_42221.txt. В имени файла указываем номер телефона, это +7910667XXXX, а 42221 — ID SMS, его можно придумать от балды. Я через него веду учёт отправленных SMS. Внутри файла пишем текст нашего сообщения. Например: «Привет, всё хорошо, работает gammu daemon». Через некоторое время файл исчезнет из каталога out и будет перемещен в каталог sent. При этом на телефон +7910667XXXX поступит сообщение.

Если сообщение отправляется, приходит абоненту, то на этом всё. Если нет, то смотрим логи нашего демона, которые находятся в /var/log/gammu.log. Могу еще добавить, что сообщения исходящие можно класть в каталог out по FTP, SSH, HTTP и другими способами, которых десятки. Есть даже mail2sms — конвертер писем в SMS.

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

]]>
https://chast.in/gammu-daemon-in-freebsd.html/feed 0
Использование модемов во FreeBSD. https://chast.in/howto-use-modem-in-freebsd.html https://chast.in/howto-use-modem-in-freebsd.html#respond Mon, 12 Aug 2019 16:37:02 +0000 https://chast.in/?p=1304

Внезапно потребовалось отправлять СМС-уведомления через сервер с FreeBSD. Естественно, что требовалось установить модем. Под рукой оказался старенький, но весьма и весьма работоспособный модем Huawei E3131 с прошивкой Hi-link. Прелесть этого модема в наличии crc9-разъема в боку для подключения внешней антенны. При подключении модем увиделся, как флешка.. Пришлось пользоваться google, чтобы найти решение.

Подключаем модем в USB компьютера и смотрим в dmesg:

ugen3.2:  at usbus3
umass0 on uhub0
umass0:  on usbus3
umass0:  SCSI over Bulk-Only; quirks = 0x0100
umass0:7:0: Attached to scbus7
cd0 at umass-sim0 bus 0 scbus7 target 0 lun 0
cd0:  Removable CD-ROM SCSI-2 device
cd0: 40.000MB/s transfers
cd0: 128MB (65536 2048 byte sectors)
cd0: quirks=0x10<10_BYTE_ONLY>

Понимаем, что это совсем не то, чего бы мы хотели… Начинаем действовать:

# Для работы с модемом сразу ставим необходимый софт:
pkg install -y usbutils usb_modeswitch
# смотрим, как у нас определился модем при включениии в USB:
lsusb
Bus /dev/usb Device /dev/ugen3.2: ID 12d1:1f01 Huawei Technologies Co., Ltd. E353/E3131 (Mass storage mode)

Ищем target-конфиг для модема, чтобы переключить его в сетевую карту. К всеобщему счастью, во FreeBSD предусмотрительно присутствуют конфиги для перевода в нужный нам режим «как сетевая карта» для всех поддерживаемых модемов:

# Ищем модем E3131:
grep -R "E3131" /usr/local/share/usb_modeswitch/
/usr/local/share/usb_modeswitch/12d1:15ce:# Huawei E3531s-2, E3131 (Variant)
/usr/local/share/usb_modeswitch/12d1:151a:# Huawei E392u-12, E3131 (Variant)
/usr/local/share/usb_modeswitch/12d1:15ca:# Huawei E3131
/usr/local/share/usb_modeswitch/12d1:15d0:# Huawei E3131 (Variant)
# я использовал в качестве целевого переключения файл /usr/local/share/usb_modeswitch/12d1:15ca
# даем команду переключения модема, в качестве параметров даем 
# входные параметры из lsusb, а target содержится в файле usb_modeswitch/12d1:15ca
/usr/local/sbin/usb_modeswitch -v 0x12d1 -p 0x1f01 --config-file /usr/local/share/usb_modeswitch/12d1:15ca

Теперь смотрим в dmesg и в сетевые устройства:

dmesg
..........................
umass0: detached
ugen3.2:  at usbus3 (disconnected)
ugen3.2:  at usbus3
cdce0 on uhub0
cdce0:  on usbus3
ue0:  on cdce0
ue0: Ethernet address: 58:2c:80:13:92:63
ifconfig ue0
ue0: flags=8802 metric 0 mtu 1500
	ether 58:2c:80:13:92:63
	nd6 options=29

Видим, что всё получилось.. Модем у нас теперь видится, как сетевая карта. Конечно же, таким образом можно подключить любой модем, в том числе huawei E3372, huawei E352 и прочими. Отличие в исходных и целевых параметрах usb_modeswitch.

Для подключения интернет достаточно только получить ip от сетевой карты и можно бороздить просторы сети…

dhclient ue0
]]>
https://chast.in/howto-use-modem-in-freebsd.html/feed 0
Замена редактора по-умолчанию во FreeBSD https://chast.in/change-default-editor-in-freebsd.html https://chast.in/change-default-editor-in-freebsd.html#respond Tue, 06 Aug 2019 18:34:25 +0000 https://chast.in/?p=1293

По-умолчанию во Фряшечке установлен редактор vi. Это очень хороший и удобный редактор. Однако по целому ряду причин он не всегда годится, как редактор FreeBSD по-умолчанию. Мне лично больше нравится VIM.
Для смены редактора достаточно заменить его в списке переменных окружения и перезайти в сессию. В общем, действуем так:

# Найдем редактор, установленный сейчас по-умолчанию в системе:
grep -r "EDITOR" ~
/root/.cshrc:setenv	EDITOR	vi
# Видим, что переменная EDITOR определена в файле /root/.cshrc
# Отредактируем его:
ee /root/.cshrc
# исправляем переменную EDITOR на ваш любимый редактор, хоть на mcedit ))

Заодно в этом же месте можно русифицировать нашу консоль, для этого нужно добавить переменные локализации в файл ~/.cshrc:

# редактируем ~/.cshrc
ee ~/.cshrc
setenv LANG ru_RU.UTF-8
setenv MM_CHARSET UTF-8
# Редактируем /boot/loader.conf:
kern.vty=vt
]]>
https://chast.in/change-default-editor-in-freebsd.html/feed 0
Монтирование диска FreeBSD zfs https://chast.in/mount-freebsd-zfs.html https://chast.in/mount-freebsd-zfs.html#comments Mon, 05 Aug 2019 14:20:16 +0000 https://chast.in/?p=1287

Выяснилось, что монтировать диск FreeBSD zfs требуется в два этапа. Например, у меня имела место ситуация, когда монтируемый пул называется, как и текущий — zroot. При загрузке ОС видит на двух дисках одинаковые пулы и упорно грузилась не с того, что нужно…

Решение было такое: я на ходу, после загрузки ОС я находу подключил диск. Фряха его увидела, а дальше уже было дело техники:

# Импортируем zpool и получаем имя zpool  
# вероятнее всего, что zroot
zpool import
#создаем точку монтирования zpool:
mkdir -p /mnt/zroot
#Импортируем zpool:
zpool import -fR /mnt/zroot zroot
#создаем точку монтирования для корня zfs /:
mkdir /mnt/root
#монтируем корень /:
mount -t zfs zroot/ROOT/default /mnt/root

На этом всё. Всем удачи и спасибо за внимание!

]]>
https://chast.in/mount-freebsd-zfs.html/feed 1
Проброс трафика ipfw fwd ip https://chast.in/ipfw-fwd-ip-or-ports.html https://chast.in/ipfw-fwd-ip-or-ports.html#respond Thu, 25 Jul 2019 20:18:14 +0000 https://chast.in/?p=1270

Иногда требуется пробросить трафик и/или порт внутри сервера или локальной сети. Это требуется например тогда, когда в локальной сети сервера находится web-сервер или высунуть windows RDP 3389 локального сервера наружу

Итак, имеется FreeBSD сервер с установленным для теста nginx, который слушает только localhost (127.0.0.1) . При этом в конфиге nginx присутствуют следующие строки:

listen 127.0.0.1:80;
server_name  localhost;
location / {
    root   /usr/local/www/nginx;
    index  index.html index.htm;
    try_files $uri $uri/ /index.html;
}

В этом конфиге nginx присутствует редирект всех страниц на страницу index.html

Для работы проброса (forward) в ipfw необходимо выполнить команду sysctl net.inet.ip.forwarding=1

#!/bin/sh

N='igb0'
IP='195.154.95.95'
F='/sbin/ipfw -q'

$F -f flush

$F add pass all from any to any via lo0
$F add deny all from any to 127.0.0.0/8
$F add deny all from 127.0.0.0/8 to any
$F add accept tcp from any to any established
$F add check-state
$F add accept ip from me to any keep-state

$F add accept icmp from any to me in via $N keep-state
$F add deny all from any to any frag

$F add fwd 127.0.0.1,80 tcp from any to $IP 80 keep-state
$F add fwd 127.0.0.1,443 tcp from any to $IP 443 keep-state

ipfw add allow in
ipfw add allow out

ipfw add deny log logamount 3 tcp from any to any
Готово! Теперь весь трафик, приходящий на 80 порт $IP будет уходить на 80 порт 127.0.0.1
]]>
https://chast.in/ipfw-fwd-ip-or-ports.html/feed 0