Настройка удаленного NAS на FreeBSD 9.3 с rscriptd

Что нужно

  1. Хотябы приблизительное представление что вы делаете и зачем
  2. Чистая(!) FreeBSD 9.3 amd64 установленая на адекватном железе
  3. Настройки 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 #############


#Интерфейс смотрящий в интернет
EXT_IF="igb1"
EXT_IP="1.2.3.5"

#Интерфейс смотрящий на пользователей
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, местоположение коллектора Netflow и комьюнити SNMP 
RSCRIPTD_KEY="kotiki"
NETFLOW_HOST="172.16.0.1:42111"
SNMPCOMM="changeme"

#Путь по которому должен располагаться bandwidthd
BANDWIDTHD_PATH="band"


# Также вы можете изменить устанавливаемый набор пакетов. На данный момент поддерживаются NAS_93_64 или NAS_103_64
# которые представляют из себя FreeBSD 9.3 amd64 и FreeBSD 10.3 amd64 соответственно.
DL_NAME="NAS_93_64"

После чего в принципе можно пробовать запускать наш скрипт сборки:

# sh autosetup.sh

После завершения работы скрипта сборки следует перегрузиться.

Вот в общих чертах и все.

Немного о логике фаервола и табличках

  • (2) - подсети пользователей, попадают в NAT, по умолчанию запрещено прохождение пакетов через внутренний интерфейс
  • (3) и (4) - таблички используются для шейпа (3-вверх/4-вниз). Попадают сюда пользователи при помощи OnConnect.
  • (47) - сюда попадают пользователи отстреленные вызовами OnDisconnect
  • (9) - адреса и подсети для которых не будет производиться NAT
  • (17) - адреса 80-й порт которых будет доступен всегда по-умолчанию (зарезервировано)
  • (6) - префиксы UA-IX (зарезервировано)
  • (10) - пользовательские подсети, для которых не следует производить NAT (зарезервировано)

Почему именно так? «Так сложилось исторически» и «Потому что так захотелось» - по-моему достаточные причины. В любом случае вам никто не запрещает сделать как угодно, но мы стремимся к единообразию и какой-никакой стандартизации, чтобы при разборе ваших же проблем не тратить лишних усилий, на то, чтобы понять что это, и как оно по вашей задумке должно было бы работать.

О создании пользователя с удаленным доступом к базе

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.

freebsdremotenas.txt · Последние изменения: 2016/08/31 15:30 — nightfly
 
За исключением случаев, когда указано иное, содержимое этой вики предоставляется на условиях следующей лицензии: CC Attribution-Share Alike 3.0 Unported
Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki