====== Налаштування віддаленого NAS на FreeBSD с rscriptd ====== ====== Що потрібно ====== - Хоча б приблизне уявлення що ви робите і навіщо - Чиста(!) FreeBSD amd64 встановлена на адекватному залізі - Налаштування rc.conf з урахуванням фізіології доступу ====== Угоди ====== {{ :rscriptdnas1.png? |}} Для прикладу припустимо, що 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 Після завершення роботи скрипта збірки слід перезавантажитися. Ось у загальних рисах і все. ====== Трохи про логіку фаєрвола та таблички ====== * **(2)** - підмережі користувачів, що потрапляють у NAT, за замовчуванням заборонено проходження пакетів через внутрішній інтерфейс * **(3)** і **(4)** - таблички використовуються для шейпа (3-вгору/4-вниз). Потрапляють сюди користувачі за допомогою OnConnect. * **(47)** - сюди потрапляють користувачі відстріляні викликами OnDisconnect * **(9)** - адреси та підмережі для яких не буде проводитися NAT * **(17)** - адреси, які будуть доступні завжди за замовчуванням (зарезервовано) * **(6)** - префікси UA-IX [[uaixshape|(зарезервовано)]] * **(10)** - призначені для користувача підмережі, для яких не слід робити NAT (зарезервовано) * **(42)** - адреси або підмережі, трафік яких буде дропатися на самому початку (зарезервовано) * **(22)** - відносно безпечні хости чи підмережі Чому саме так? "Так склалося історично" і "Тому що так захотілося" - по-моєму достатні причини. У будь-якому разі вам ніхто не забороняє зробити як завгодно, але ми прагнемо до однаковості та певної стандартизації, щоб під час розбору ваших же проблем не витрачати зайвих зусиль на те, щоб зрозуміти, що це, і як воно, за вашою задумкою, мало б працювати. ====== Про створення користувача з віддаленим доступом до бази ====== CREATE USER 'somelogin'@'%' IDENTIFIED BY 'somepassword'; GRANT ALL PRIVILEGES ON *.* TO 'somelogin'@'%' WITH GRANT OPTION; ====== З сторінки Ubilling-a ====== Перед першим використанням, переконайтеся, що з боку сервера білінгу, в /etc/stargazer.conf присутня розкоментована секція вигляду SendPeriod = 10 SubnetFile =/etc/stargazer/remote_nas.conf Password = kotiki UserParams=Cash Tariff Port = 9999 Також потрібні **увімкнені** опції 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:~ #