Зміст

Налаштування віддаленого NAS на FreeBSD с rscriptd

Що потрібно

  1. Хоча б приблизне уявлення що ви робите і навіщо
  2. Чиста(!) FreeBSD amd64 встановлена на адекватному залізі
  3. Налаштування rc.conf з урахуванням фізіології доступу

Угоди

Для прикладу припустимо, що Ubilling з усіма потрохами розташований за адресою 172.16.0.1 і що наш rc.conf на момент початку встановлення має такий вигляд:

defaultrouter="1.2.3.4"
gateway_enable="YES"
hostname="nas.isp"
ifconfig_igb0="inet 172.16.0.2 netmask 255.255.252.0"
ifconfig_igb1="inet 1.2.3.5 netmask 255.255.255.0"
sshd_enable="YES"

З чого не складно зробити висновок, що аплінковим у нас буде інтерфейс igb1 з айпішкою 1.2.3.5, який дивиться в бік дефолтраута 1.2.3.4. На ньому ж буде здійснюватися NAT призначеної для користувача підмережі 172.16.0.0.0/22, яка доступна через інтерфейс igb0. Шейпінг буде, зі свого боку, проводитися на інтерфейсі igb0.

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

Усе автоматизовано якраз до того рівня, щоб убезпечити від цього дійства домогосподарок, а нормальним людям можна було швиденько встановити необхідні параметри і піти пити чай, поки скрипт збере все, що потрібно, сам

# fetch http://ubilling.net.ua/ubinstaller.tar.gz
# tar zxvf ubinstaller.tar.gz
# cp -R ubinstaller/nas_preconf /tmp/
# cd /tmp/nas_preconf/
# vi autosetup.sh

Далі нам слід встановити всі опції відповідно до реальності нашого NAS-a:

############ CONFIG SECTION #############


#Інтерфейс що "дивиться" в інтернет (WAN)
EXT_IF="igb1"

#Інтерфейс що "дивиться" на користувачів (LAN)
INT_IF="igb0"
INT_IP="172.16.0.2"

#Підмережа користувачів і масочка у вигляді CIDR
INT_NET="172.16.0.0"
INT_NET_CIDR="22"

#Налаштування хоста Ubilling
MYSQL_HOST="172.16.0.1"
MYSQL_LOGIN="somelogin"
MYSQL_PASSWORD="somepassword"
MYSQL_DB="stg"

#Ключ rscriptd (дивимося його в stargazer.conf), місце розташування колектора Netflow та ком'юніті SNMP 
RSCRIPTD_KEY="kotiki"
NETFLOW_HOST="172.16.0.1:42111"
SNMPCOMM="changeme"

#Шлях за яким має розташовуватися bandwidthd
BANDWIDTHD_PATH="band"

Архітектура вашої системи вибирається за допомогою опції

#binary packages distro (141_6K, 140_6K, 133_6K, 132_6E)
DL_NAME="141_6K"

Де як не складно здогадатись, 141 це не що інше як FreeBSD 14.1 amd64 чи 132_6E це FreeBSD 13.2 amd64. Логіка зрозуміла?

Після чого в принципі можна пробувати запускати наш скрипт збірки:

# sh autosetup.sh

Після завершення роботи скрипта збірки слід перезавантажитися.

Ось у загальних рисах і все.

Трохи про логіку фаєрвола та таблички

Чому саме так? “Так склалося історично” і “Тому що так захотілося” - по-моєму достатні причини. У будь-якому разі вам ніхто не забороняє зробити як завгодно, але ми прагнемо до однаковості та певної стандартизації, щоб під час розбору ваших же проблем не витрачати зайвих зусиль на те, щоб зрозуміти, що це, і як воно, за вашою задумкою, мало б працювати.

Про створення користувача з віддаленим доступом до бази

CREATE USER 'somelogin'@'%' IDENTIFIED BY 'somepassword';
GRANT ALL PRIVILEGES ON *.* TO 'somelogin'@'%' WITH GRANT OPTION;

З сторінки Ubilling-a

Перед першим використанням, переконайтеся, що з боку сервера білінгу, в /etc/stargazer.conf присутня розкоментована секція вигляду

<Module remote_script>
SendPeriod = 10
SubnetFile =/etc/stargazer/remote_nas.conf
Password = kotiki
UserParams=Cash Tariff
Port = 9999
</Module>

Також потрібні увімкнені опції RESET_AO та STGNASHUP у billing.ini для запобігання проблемам із реініціалізацією користувачів на віддалених NAS.

Також варто додати ваш сервер rscriptd в табличку безпечних хостів у firewall.conf з боку вашого біллінгу, якось ось так

${FwCMD} table 22 add 172.16.0.2

Як перевірити, стан абонента на NAS-і?

Ну хоча б якось так

root@test141:~ # checkspeed 172.16.0.42
===================================================
172.16.0.42/32 32111
172.16.0.42/32 111
||||||||||||||||||[ Download speed ]|||||||||||||||||||
32111: 107.520 Mbit/s    0 ms burst 0 
q163183 128 KB 0 flows (1 buckets) sched 97647 weight 0 lmax 0 pri 0 droptail
 sched 97647 type FIFO flags 0x0 0 buckets 0 active
||||||||||||||||||[ Upload speed ]|||||||||||||||||||||
00111: 107.520 Mbit/s    0 ms burst 0 
q131183 128 KB 0 flows (1 buckets) sched 65647 weight 0 lmax 0 pri 0 droptail
 sched 65647 type FIFO flags 0x0 0 buckets 0 active
===================================================

А якщо не працює?

Найпростіший спосіб перевірити, що пішло не так, це для початку подивитись в

root@test141:~ # tail /var/stargazer/allconnect.log
2024.08.27 17:02:18 CONNECT: ID-25;LOGIN-gen_i85e2b3dqq;IP-172.16.0.46;CASH-0;SPEED-107520;UPSPEED-107520,MAC-14:88:32:24:77:90
2024.08.27 17:02:18 CONNECT: ID-38;LOGIN-gen_r93yyeddg2;IP-172.16.0.47;CASH-0;SPEED-107520;UPSPEED-107520,MAC-14:88:81:86:45:87
2024.08.27 17:02:18 CONNECT: ID-23;LOGIN-gen_h3grzvtzmu;IP-172.16.0.48;CASH-0;SPEED-107520;UPSPEED-107520,MAC-14:88:65:39:20:99
2024.08.27 17:02:19 CONNECT: ID-5;LOGIN-gen_4csr11hp57;IP-172.16.0.49;CASH-0;SPEED-107520;UPSPEED-107520,MAC-14:88:20:17:30:81
2024.08.27 17:02:19 CONNECT: ID-47;LOGIN-gen_ynkdk76lpr;IP-172.16.0.50;CASH-0;SPEED-107520;UPSPEED-107520,MAC-14:88:42:84:67:52
2024.08.27 17:02:19 CONNECT: ID-36;LOGIN-gen_pkvlxtuefw;IP-172.16.0.51;CASH-0;SPEED-107520;UPSPEED-107520,MAC-14:88:89:92:22:66
2024.08.27 17:02:19 CONNECT: ID-32;LOGIN-gen_mszsh9kygt;IP-172.16.0.52;CASH-0;SPEED-107520;UPSPEED-107520,MAC-14:88:63:70:79:60
2024.08.27 17:02:19 CONNECT: ID-50;LOGIN-potypov14ap1c_xo1o;IP-172.16.0.53;CASH-100;SPEED-0;UPSPEED-0,MAC-00:23:63:7c:d0:14
2024.08.27 17:09:20 DISCONNECT: ID-52;LOGIN-potypov14ap88_532r;IP-172.16.0.2;CASH-400
2024.08.27 17:09:20 CONNECT: ID-52;LOGIN-potypov14ap88_532r;IP-172.16.0.2;CASH-400;SPEED-107520;UPSPEED-107520,MAC-08:00:27:64:1a:92

і якщо в ньому відбуваються якісь аномалії, вже приймати рішення, попередньо продіагностувавши зв'язок з БД Ubilling методом

root@test141:~ # /etc/rscriptd/GetMac userlogin
14:88:20:17:30:81
root@test141:~ #