Це стара версія документу!
Зміст
Настройка удаленного NAS на FreeBSD с rscriptd
Что нужно
- Хотябы приблизительное представление что вы делаете и зачем
- Чистая(!) FreeBSD 13.1 amd64 установленая на адекватном железе
- Настройки 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/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"
После чего в принципе можно пробовать запускать наш скрипт сборки:
# sh autosetup.sh
После завершения работы скрипта сборки следует перегрузиться.
Вот в общих чертах и все.
Немного о логике фаервола и табличках
- (2) - подсети пользователей, попадают в NAT, по умолчанию запрещено прохождение пакетов через внутренний интерфейс
- (3) и (4) - таблички используются для шейпа (3-вверх/4-вниз). Попадают сюда пользователи при помощи OnConnect.
- (47) - сюда попадают пользователи отстреленные вызовами OnDisconnect
- (9) - адреса и подсети для которых не будет производиться NAT
- (17) - адреса которые будут доступны всегда по-умолчанию (зарезервировано)
- (6) - префиксы UA-IX (зарезервировано)
- (10) - пользовательские подсети, для которых не следует производить NAT (зарезервировано)
- (42) - адреса или подсети трафик которых будет дропаться в самом начале (зарезервировано)
Почему именно так? “Так сложилось исторически” и “Потому что так захотелось” - по-моему достаточные причины. В любом случае вам никто не запрещает сделать как угодно, но мы стремимся к единообразию и какой-никакой стандартизации, чтобы при разборе ваших же проблем не тратить лишних усилий, на то, чтобы понять что это, и как оно по вашей задумке должно было бы работать.
О создании пользователя с удаленным доступом к базе
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.

