Настройка TFTP-сервера tftpd-hpa

У него можно отметить два достоинства:

  • Умеет работать автономно, без помощи inetd.
  • Есть опция, разрешающая создание новых файлов, что полезно для сохранения резервных копий конфигурации оборудования.

Установим пакет tftpd-hpa:

# apt install tftpd-hpa

После установки отредактируем файл /etc/default/tftpd-hpa, содержащий настройки сервера. Приведём его к следующему виду:

TFTP_USERNAME="tftp"
TFTP_DIRECTORY="/srv/tftp"
TFTP_ADDRESS="0.0.0.0:69"
TFTP_OPTIONS="--ipv4 --secure --create --umask 027 --permissive"

В настройках указаны дополнительные опции:

  • create разрешает серверу создавать новые файлы.
  • ipv4 предписывает ему ожидать подключений только на адресах IPv4.
  • umask предписывает сбрасывать бит записи для группы и все биты доступа для остальных пользователей.
  • permissive предписывает не проводить никаких проверок прав доступа к файлу сверх производимых операционной системой.

Создадим каталог для tftp-сервера, дадим серверу доступ к каталогу:

# mkdir /srv/tftp
# chown tftp:tftp /srv/tftp

Можно также поменять домашний каталог пользователя tftp в файле /etc/passwd на /srv/tftp.

Осталось перезапустить демона, чтобы он начал работу с новым каталогом:

# systemctl restart tftpd-hpa

Установка Yaourt

Yaourt (Yet AnOther User Repository Tool) — это оболочка для пакетного менеджера pacman, с некоторыми расширениями и поддержкой репозитория AUR.

Его нет в репозиториях pacman, но его можно поставить из AUR. Первым делом нужно установить yajl. Установите его с помощью pacman:

# pacman -S yajl

После этого установим пакет package-query.
Для этого загрузите архив package-query.tar.gz

Переходим в директорию загрузки:

# cd ~/Downloads/

Распаковываем загруженный архив:

# tar xzf package-query.tar.gz

Переходим в распакованную директорию

# cd package-query/

Собираем и устанавливаем пакет при помощи makepkg

# makepkg -si

Читать далее «Установка Yaourt»

pacman-key

При ошибках вроде этих:

Спойлер

error: required key missing from keyring
error: failed to commit transaction (unexpected error)
Errors occurred, no packages were upgraded.

[свернуть]

Помогает что-то из этого:
Спойлер

# Archive the GNUPG directories
mv $HOME/.gnupg $HOME/.gnupg.bak
sudo mv /root/.gnupg /root/.gnupg.bak

# This one fixed the GNUPG Error
dirmngr

# Refresh Keys
pacman-key –init
pacman-key –populate archlinux
pacman-key –refresh-keys

[свернуть]

Краткий ман по сборке OpenWrt

Получаем последнюю версию OpenWrt:

# svn co svn://svn.openwrt.org/openwrt/trunk/

Получаем дополнительные пакеты:

# ./scripts/feeds update -a && ./scripts/feeds install -a

Применяем дефолтную конфигурацию:

# make defconfig

Конфигурируем систему (выбираем свой тип роутера):

# make menuconfig

Запускаем сборку OpenWrt:

# make

Готовый файл прошивки для заливки в роутер находится здесь:
/bin/brcm47xx$

Если нужно просто обновить ранее скаченый дистрибутив то обновляем до последней версии с помощью команды:

# svn up

Также возможно получение исходников определнной версии:

# svn co -r 27495 svn://svn.openwrt.org/openwrt/trunk/

Для сборки какого-то отдельного (определенного) пакета из состава openWrt:

# make package/busybox/install

настройка iptv от ростелеком на openwrt

Для настройки я использую веб-интерфейс luci. Выделим порт под приставку, если она есть, для этого нужно соединить порт wan с портом для приставки в bridge, делается это через VLAN.

40

vlan 1 – группа lan, vlan 2 – группа wan. В моем случае порт 1 это порт wan, 4 порт по факту 3, нужно перенести этот порт из vlan 1 в vlan 2. Для этого  указываем в vlan 2 значение “без тега”, а в vlan 1 “выключено”.

Далее рассказ о том как настроить iptv чтобы иметь возможность смотреть его с пк/raspberry/телевизора/холодильника/кофеварки… и если вы не собираетесь смотреть с чего либо кроме iptv приставки то дальше можно не читать.

Читать далее «настройка iptv от ростелеком на openwrt»

vlan на прошивке tomato

На роутере asus rt n12 d1 не настраивается vlan из веб интерфейса, остается только делать это в консоли. Для этого конечно надо зайти по ssh на роутер. Привожу пример изменения LAN1 —> WAN c прошивкой Tomato:

nvram show | grep vlan.ports

В ответ получаем:

vlan0ports=1 2 3 4 5*
vlan1ports=0 5
vlan3ports=
vlan4ports=
vlan5ports=
vlan6ports=
vlan7ports=
vlan8ports=
vlan9ports=

Делаем выводы что vlan0 это LAN порты, а vlan1 это WAN порт.
Исключаем WAN из vlan1, а LAN1 добавляем:

nvram set vlan0ports="2 3 4 5*"
nvram set vlan1ports="1 5"
nvram set manual_boot_nv=1

Сохраняем и перезагружаем роутер:

nvram commit
reboot

Всё! Должно всё работать!
Также этим методом можно выделить LAN порт для iptv приставки, к примеру для провайдера Beeline:

nvram set vlan0ports="1 2 3 5*"
nvram set vlan1ports="0 4 5"
nvram set manual_boot_nv=1
nvram commit
reboot

и так, 4 порт выделен для iptv приставки

Алтернативная прошивка на Asus RT-N12 D1

Для начала, окирпичить этот девайс случайно не получится.

Родная прошивка принимает только свои образы, прошить альтернативные прошивки можно из режима восстановления.
В режиме восстановления загрузчик роутера сливает образ по tftp, мне было влом поднимать tftp и я скачал утиль восстановления asus.

Первым делом я поискал прошивку dd-wrt, но ничего дельного не нашел, а то что нашел было эдак 2010 года.
В идеале подошла бы openwrt, там возможностей больше. Поддержка нужного чипсета есть только в нестабильной ветке, после прошивки прекомпиленной версии я заметил что не работает wi-fi, погуглив я понял что там в основном всего 3 драйвера: b43, wl и еще какой-то. В конечном итоге я забил на openwrt и поставил tomato, мне от прошивки нужен был только igmp для нормальной работы iptv и он там есть, в стандартной прошивке не было. Работает вполне стабильно, кстате драйвер там тот же wl, только на ядре 2.6

nginx webmcr rewrite rules

server {
listen 80;
server_name ordinary-minecraft.ru www.ordinary-minecraft.ru;

root /srv/webmcr/;
index index.php index.html;
location /news {
rewrite ^/news/([^/]+)/?$ /index.php?id=$1 last;
}
location /category {
rewrite ^/category/([^/]+)/?$ /index.php?cid=$1 last;
}
location /list {
rewrite ^/list/([^/]+)/?$ /index.php?l=$1 last;
}
location /control {
rewrite ^/control/([^/]+)/?$ /index.php?mode=control&do=$1 last;
}
location /get {
rewrite ^/get/([^/]+)/?$ /action.php?method=download&file=$1 last;
}
location /go {
rewrite ^/go/([^/]+)/?$ /index.php?mode=$1 last;
}
location = /authenticate {
rewrite ^(.*)$ /MineCraft/auth16x.php last;
}
location = /invalidate {
rewrite ^(.*)$ /MineCraft/invalidate16x.php last;
}
location = /refresh {
rewrite ^(.*)$ /MineCraft/refresh16x.php last;
}
location /game {
rewrite ^/game/joinserver.jsp /MineCraft/joinserver.php last;
}
location / {
try_files $uri $uri/index.php?$uri&$args;
}

location ~ \.php$ {
try_files $uri =404;
fastcgi_pass unix:/var/run/php-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}

nginx-frontend + nginx-backend и потерявшиеся реальные IP посетителей.

Мы говорим о связке nginx+nginx. Те, кто впервые настраивает такую связку наверняка столкнулись с тем, что nginx-backend пишет в лог (и отдает в PHP/Django и прочее, соответственно) IP фронт-энда. Если в апаче это решалось при помощи mod_rpaf, то в nginx’e всё намного проще.

В секцию http {} или в секцию нужного server {} (если вы упрямы — то можете даже в location {} вписать) пишем следующие строки:
set_real_ip_from 8.8.8.8;
real_ip_header X-Real-IP;

Либо:
set_real_ip_from 192.168.0.0/24;
real_ip_header X-Real-IP;

В директиве set_real_ip_from мы указываем серверы, которым мы доверяем тяжкую ношу по передаче нам IP адресов посетителей (если тут указать чужие серверы — то эти самые чужие серверы смогут вас очень красиво и весело dos-ить с адресов вида 0.0.0.1, например).

Директивой real_ip_header мы указываем откуда брать IP. В данном примере нужно на фронте написать proxy_set_header X-Real-IP $remote_addr; в proxy_pass.

оригинал