====== PureNAS з rscriptd на Debian 13.2 ======
====== Домовленості ======
{{:remotenassamplescheme.png?800|}}
Для прикладу припустимо, що Ubilling з усіма потрохами розташований на сервері доступному за адресою 1.2.3.6 а Чистий [[https://www.youtube.com/watch?v=n9UaJPAg4Hg|Debian 13.2]] встановлено на сервер, з відповідними інтерфейсами. Ви не повинні конфігурувати інтерфейси самостійно, [[https://github.com/nightflyza/PureNAS|PureNAS]] зробить це автоматично за вас при своїй ініціалізації. Основна ідея - PureNAS сам все налаштовує і запускає, базуючись на своєму одному і єдиному файлі конфігурації.
====== Встановлення PureNAS ======
su -
apt install -y ethtool net-tools conntrack tcpdump htop mtr-tiny sudo irqbalance
apt install -y git expat libexpat1-dev build-essential softflowd snmpd snmp
apt install -y php8.4-cli php8.4-mysqli php8.4-mbstring php8.4-bcmath php8.4-curl
apt install -y build-essential libncurses-dev libssl-dev bc flex bison dwarves rsync libelf-dev
apt install -y autoconf libtool pkg-config libpcap-dev libnfnetlink-dev libbpf-dev libdbus-1-dev
apt install -y libvirt-dev libxml2-dev uuid-dev clang
після чого просто клонуємо його поточну гілку собі:
git clone https://github.com/nightflyza/PureNAS.git /etc/PureNAS
вмикаємо автоматичний старт при запуску
cp -R /etc/PureNAS/dist/purenas.service /etc/systemd/system/
systemctl daemon-reload
systemctl enable purenas.service
розгортаємо пресет автоматичних тюнячок
cp -R /etc/PureNAS/dist/99-nat-tuning.conf /etc/sysctl.d/
sysctl -p /etc/sysctl.d/99-nat-tuning.conf
Компілюємо rscriptd
wget http://ubilling.net.ua/stg/stg-2.409.tar.gz
tar zxvf stg-2.409.tar.gz
cd stg-2.409/projects/rscriptd/
./build
/usr/bin/gmake install
розгортаємо заготовки конфігів та скриптів ініціалізації користувачів
cp -R /etc/PureNAS/dist/rscriptd/* /etc/rscriptd/
====== Налаштування PureNAS ======
Всі налаштування PureNAS відбуваються в одному єдиному файлі **/etc/PureNAS/purenas.conf**. Для зображеного на схемі прикладу всі важливі налаштування, які базово треба модифікувати, будуть виглядати якось так:
LAN_IF="enp0s3"
WAN_IF="enp0s8"
USER_NET="172.16.0.0/17"
USER_GATEWAY_IP="172.16.0.1/17"
FORCE_ASSIGN_GATEWAY_IP="YES"
WAN_IP="1.2.3.5/24"
WAN_DEFAULT_ROUTE="1.2.3.4"
SHAPER_ENABLED="YES"
NAT_ENABLED="YES"
RSCRIPTD_ENABLED="YES"
взагалі пробіжіться очима по конфігу - там всі опції прокоментовані і доволі самоочевидні.
====== Налаштування rscriptd ======
ExecutersNum=4
ConfigDir=/etc/rscriptd
Password=тут_ваш_пароль_rscriptd_з_stargazer.conf
Port=9999
UserTimeout=3600
ScriptOnConnect=/etc/rscriptd/OnConnect
ScriptOnDisconnect=/etc/rscriptd/OnDisconnect
host = 1.2.3.6
port = 3306
username = somelogin
password = somepassword
database = stg
====== З боку Ubilling-a ======
Перед першим використанням, переконайтеся, що з боку сервера білінгу, в /etc/stargazer.conf присутня розкоментована секція вигляду
SendPeriod = 10
SubnetFile =/etc/stargazer/remote_nas.conf
Password = тут_ваш_пароль_rscriptd
UserParams=Cash Tariff
Port = 9999
Також потрібні **увімкнені** опції RESET_AO та STGNASHUP у billing.ini для запобігання проблемам із реініціалізацією користувачів на віддалених NAS.
Також варто додати ваш сервер rscriptd в табличку безпечних хостів у firewall.conf з боку вашого біллінгу, якось ось так
${FwCMD} table 22 add 1.2.3.5
====== Про створення користувача з віддаленим доступом до бази ======
CREATE USER 'somelogin'@'%' IDENTIFIED BY 'somepassword';
GRANT ALL PRIVILEGES ON *.* TO 'somelogin'@'%' WITH GRANT OPTION;
====== Запуск PureNAS ======
Робиться однією командою: **/etc/PureNAS/init** та виглядає наступним чином
__________ _______ _____ _________
\______ \__ _________ ____ \ \ / _ \ / _____/
| ___/ | \_ __ \_/ __ \ / | \ / /_\ \ \_____ \
| | | | /| | \/\ ___// | \/ | \/ \
|____| |____/ |__| \___ >____|__ /\____|__ /_______ /
\/ \/ \/ \/
== Initializing PureNAS ==
== Loading kernel modules ==
== Reapplying sysctl settings ==
== Sysctl settings reapplied ==
== DONE ==
== Enabling IP forwarding ==
== Configuring interfaces ==
== Enabling internal interface enp0s3 ==
== Assigning gateway IP(s) to enp0s3 ==
== Configuring firewall ==
== Cleaning up existing firewall configuration ==
== Configuring user networks ==
== Configuring user gateways ==
== Configuring banned hosts ==
== Configuring allowed DNS servers ==
== Configuring protected ports ==
== Configuring safe zones ==
== Configuring DNS restrictions for user network ==
== Configuring allowed always hosts ==
== Configuring user isolation ==
== Configuring blocked incoming ports ==
== Configuring blocked outgoing ports ==
== Configuring default firewall block policy for inactive users ==
== Configuring NAT ==
== Configuring shaper ==
== Cleaning up existing shaper configuration ==
== Loading kernel modules ==
== Created interface ifb0 ==
== Using enp0s3 as user gateway ==
== Initializing hash table structure ==
== Shaper configuration complete ==
== Starting rscriptd ==
== FINISHED ==
Як перевірити, чи користувачів ініціалізовано? Ну хоча б якось так:
{{:purenassubshow.png|}}
Також можете подивитись, шейпера всіх або конкретного користувача за допомогою **/etc/PureNAS/actions/uc**
{{:purenasuc.png|}}
журнал з'єднання та роз'єднання користувачів знаходиться в **/var/log/allconnect.log**.
====== Про SNMP ======
Вмикається аж двома опціями в конфігу
SNMP_ENABLED="YES"
SNMP_COMMUNITY="yoursecretcommunity"
====== Про підрахунок трафіку ======
Якщо ви з якоїсь причини не використовуєте [[ophanimflow|OphanimFlow]] та покладаєтесь на cap_nf, вам може знадобитись NetFlow, його можна просто ввімкнути ось так:
NETFLOW_SENSOR_ENABLED="YES"
NETFLOW_SAMPLING_RATE="100"
NETFLOW_COLLECTOR="1.2.3.6"
NETFLOW_PORT="42111"
У випадку, якщо в вас є вже налаштований OphanimFlow здоровий глузд та міркування швидкодії, підказують зібрати sFlow сенсор
git clone https://github.com/sflow/host-sflow.git
cd host-sflow
make clean
make FEATURES="HOST"
make install
після чого просто його ввімкнути якось так:
SFLOW_SENSOR_ENABLED="YES"
SFLOW_SAMPLING_RATE="100"
SFLOW_COLLECTOR="192.168.0.223"
SFLOW_PORT="6343"
(тут очевидно ми вважаємо, що OphanimFlow знаходиться на доступному хості 192.168.0.223)