Для прикладу припустимо, що Ubilling з усіма потрохами розташований на сервері доступному за адресою 1.2.3.6 а Чистий Debian 13.2 встановлено на сервер, з відповідними інтерфейсами. Ви не повинні конфігурувати інтерфейси самостійно, 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 відбуваються в одному єдиному файлі /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"
взагалі пробіжіться очима по конфігу - там всі опції прокоментовані і доволі самоочевидні.
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
Перед першим використанням, переконайтеся, що з боку сервера білінгу, в /etc/stargazer.conf присутня розкоментована секція вигляду
<Module remote_script> SendPeriod = 10 SubnetFile =/etc/stargazer/remote_nas.conf Password = тут_ваш_пароль_rscriptd UserParams=Cash Tariff Port = 9999 </Module>
Також потрібні увімкнені опції 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;
Робиться однією командою: /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 ==
Як перевірити, чи користувачів ініціалізовано? Ну хоча б якось так:
Також можете подивитись, шейпера всіх або конкретного користувача за допомогою /etc/PureNAS/actions/uc
журнал з'єднання та роз'єднання користувачів знаходиться в /var/log/allconnect.log.
Вмикається аж двома опціями в конфігу
SNMP_ENABLED="YES" SNMP_COMMUNITY="yoursecretcommunity"
Якщо ви з якоїсь причини не використовуєте 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)