====== 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)