Инструкция: как раздавать интернет от Yota через WiMAX модем Samsung SWC-U200 и роутера ASuS WL-500gP

Как оказалось по данной инструкции сделать что-то очень сложно, особенно не знающим Linux людям. Посему я решил переписать данную инструкцию в нормальном, человеческом виде.
Преамбула - сейчас пока только ожидаются в продаже роутеры, позволяющие раздавать WiMAX интернет сразу нескольким компьютерам. Однако, после выхода Linux драйвера для модема Samsung SWC-U200 появилась реальная возможность сделать такой модем что называется "своими руками". И на мой взгляд это самый простой и действенный метод раздать интернет в офисе. Ниже приведена инструкция, как это сделать.

Итак. Сперва нужен роутер - ASuS WL-500gP или 500gP v2. Возможно все будет работать и на роутерах ASuS WL-700 или похожих (обязательно наличии прошивки "от Олега" и нормальных USB портов). Но автор лично проверял работу только на первых двух моделях
Итак, идем сюда и качаем последнюю прошивку для Вашего роутера.
Качем драйвера для модема Samsung для этого роутера - http://files.linux.ru/index.php?dir=wimax/asus-500gP/. Важное замечание. Драйвера выходят довольно часто, так же выходят часто бинарные сборки драйверов под роутеры. Посему версии Linux драйвера, приведенные здесь вполне могут устареть. Посему рекомендуется отслеживать два сайта - сайт самого Linux драйвера и ветку обсуждения данной задачи на форуме, посвященному прошивкам "от Олега". Однако автор гарантирует, что все что тут написано было проделано им самим лично с теми версиями драйверов, что выложены по ссылкам и по тем инструкциям, что приведены ниже. В настоящий момент данная статья как раз и пишется через такую систему. WiMAX преобразуется в WiFi, к которому подключен ноутбук.
Итак, считаем, что у вас новый роутер со свежеустановленной прошивкой "от Олега". Посему переходим к части 1 - необязательной. Почему эта часть нужна и почему она не обязательная? А в ней просто рассказывается, как "поднять" защищенный протокол обмена данными ssh. В целом ее можно опустить и использовать стандартный telnet, однако я по жизни предпочитаю защищенность и в целом благодаря ssh можно не использовать опять-таки незащищенный протокол передачи данных FTP.
Для инсталляции на наш роутер поддержки протокола ssh, мы заходим по telnet (можно взять отсюда программу putty, которая позволяет работать как с протоколом telnet, так и с протоколом ssh) по адресу 192.168.1.1. Напомню, что логин по умолчанию для данных роутеров admin и пароль так же admin.
Далее в консоли даем по порядку команды:

mkdir -p /usr/local/etc/dropbear
dropbearkey -t dss -f /usr/local/etc/dropbear/dropbear_dss_host_key
dropbearkey -t rsa -f /usr/local/etc/dropbear/dropbear_rsa_host_key
mkdir -p /usr/local/sbin/
echo "#!/bin/sh" >> /usr/local/sbin/post-boot
cp /usr/local/sbin/post-boot /usr/local/sbin/post-firewall
cp /usr/local/sbin/post-boot /usr/local/sbin/post-mount
cp /usr/local/sbin/post-boot /usr/local/sbin/pre-shutdown
chmod +x /usr/local/sbin/p*
echo "dropbear > /dev/null 2>&1" >> /usr/local/sbin/post-boot
dropbear > /dev/null 2>&1
flashfs save
flashfs commit
flashfs enable

Последние три команды обязательны для сохранения каких-либо данных во внутреннем флеше роутера.

Теперь в консоли набираем команду exit и выходим из роутера.

Пункт 2

Теперь нам нужно "залить" в роутер необходимые драйвера, библиотеки и скрипты. Вернее драйвер один и одна библиотека - libusb. Для этого нам необходима утилита WinSCP (Взять ее к примеру можно здесь). Далее, идем сюда (если вы еще там не были) и скачиваем libusb и madwimax.

Далее возможны два пути. Один простой - с USB флешкой, второй тоже простой, но немного посложнее - с использованием внутреннего флеша роутера. Сейчас я остановлюсь на первом варианте - с USB флешкой. Флешка может быть любого объема - хоть 16 Mb (или даже меньше). Втыкаем ее в нижний USB порт. В верхний мы потом воткнем наш USB модем.

Для работы нам нужна флешка, отформатированная под файловую систему ext2 или ext3. это можно сделать из-под любой Linux машины или непосредственно из-под роутера.
Заходим по ssh на наш роутер. Далее в консоли даем следующие команды по порядку:

fdisk /dev/scsi/host0/bus0/target0/lun0/part1

Далее последовательно даем команды:

d
1
n
p
1
512 или 1015 или просто размер вашей флешки
w

Форматируем наш раздел:

mke2fs -j /dev/scsi/host0/bus0/target0/lun0/part1

Подключаем наш раздел к роутеру и создаем нужные директории на этом разделе:

mount -o sync,noatime,rw /dev/scsi/host0/bus0/target0/lun0/part1 /opt
mkdir /tmp/mnt/disc0_1/bin
mount -obind /tmp/mnt/disc0_1 /opt
mkdir -p /opt/tmp/ipkg
После этого наш раздел "смонтирован" в папку /opt
Подключаем наш роутер к интернету через интерфейс WAN. В целом без этого вполне можно обойтись и все заливать, как я уже говорил, во внутреннюю флеш роутера. Но так удобнее и в целом меньше потенциальных "глюков". Даем очередные команды в консоли:

ipkg.sh update
ipkg.sh install ipkg-opt
ipkg update
ipkg install mc
ipkg install gzip
ipkg install bzip2
flashfs save
flashfs commit
flashfs enable
Создаем два файла event.sh и udhcpc.script. И устанавливаем на них правильные права доступа. Первый из этих файлов отвечает за получение по DHCP IP адреса и других IP параметров от Yota, второй эти полученные параметры сохраняет в систему и прописывает необходимые правила роутинга. Чтобы теперь внешним интерфейсом у нас был не WAN а наш USB модем.

touch /opt/etc/madwimax/event.sh
touch /opt/etc/madwimax/udhcpc.script
chmod +x /opt/etc/madwimax/event.sh
chmod +x /opt/etc/madwimax/udhcpc.script

В консоли даем команды:

export TERMINFO="/opt/share/terminfo"
export TERM="xterm"

Эти команды нам нужны для того, чтобы мы могли визуально редактировать файлы в mc и у нас ничего не глючило :-) MC - Midnight Commander, файловый менеджер по типу Norton Commander или FAR Manager (вернее это они по типу mc, но не суть).

Запускаем mc:

mc

Идем в директорию /opt/etc/madwimax/ и открывем на редактирование (F4) сначала файл event.sh и копируем в него следующее:

#!/bin/sh
# Usage: event.sh  

case "$1" in
start)
	;;
end)
	;;
if-up)
	/sbin/udhcpc -i "$2" -p /var/run/udhcpc1.pid -s /opt/etc/madwimax/udhcpc.script -b
	iptables -A INPUT -i "$2" -m state --state NEW -j SECURITY
	iptables -A FORWARD -i "$2" -m state --state NEW -j SECURITY
	iptables -t nat -A POSTROUTING -o "$2" ! -s `ifconfig "$2" | grep 'inet addr' | tr ':' ' ' | awk '{print $3}'` -j MASQUERADE
	iptables -t mangle -A FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu
	;;
if-down)
	cat /var/run/udhcpc1.pid | xargs -i kill -TERM {}
	;;
*)
	echo "Usage: $0 {start|end|if-up|if-down}" >&2
	exit 3
	;;
esac

И файл udhcpc.script

#!/bin/sh

RESOLV_CONF=/tmp/resolv.conf

case "$1" in
        bound|renew)
        ifconfig $interface up
        ifconfig $interface $ip netmask $subnet
        route add default gw $router
                for ii in $dns; do
                echo nameserver $ii >> $RESOLV_CONF
                done
# trigger dnsmasq restart
        kill -s SIGHUP `pidof dnsmasq`
        ;;
        deconfig)
        ifconfig $interface 0.0.0.0
        echo deleting $RESOLV_CONF
        echo -n > $RESOLV_CONF
        kill -s SIGHUP `pidof dnsmasq`
        ;;
esac

event.sh является основным и запускается именно он. И этот скрипт уже в свою очередь вызывает вспомогательный скрипт udhcpc.script Выходим из mc по F10. Далее даем команды

flashfs save
flashfs commit
flashfs enable

Теперь копируем через WinSCP (если вы этого не сделали раньше) файлы libusb и madwimax. Потом через mc (к примеру) распаковываем libusb в папку /opt, а файл madwimax в папку /opt/sbin

Пункт 3. Автозагрузка

Опять из консоли запускаем mc. Идем и редактируем файл /usr/local/sbin/post-boot. Записываем в него следующее:

export TERMINFO="/opt/share/terminfo"
export TERM="xterm"

Теперь редактируем /usr/local/sbin/post-mount. Записываем в него:

mount -o sync,noatime,rw /dev/scsi/host0/bus0/target0/lun0/part1 /opt
mount -obind /tmp/mnt/disc0_1 /opt
insmod tun.o
/opt/sbin/madwimax --device 04e9:6761 # или --device 04e8:6761 если прошивка новая смотреть в веб интефейсе в Status & Log -- Diagnostic Info -- USB Devices

В данном файле после загрузки роутера подключается наша флешка, потом монтируется в /opt и запускается wimax драйвер (madwimax).

Важное замечание Вообще, запуская в linux-е madwimax, мы получаем всего лишь СЕТЕВУЮ КАРТУ (и имя ей tap0). Никакими IP адресами она не обладает. Для того чтобы получила IP адрес ей нужно или прописать IP адрес руками (не наш случай) или заставить получить IP адрес по DHCP протоколу. Напомню - именно для этого мы сделали два файла - event.sh и второй.
Сохраняем настройки:

flashfs save
flashfs commit
flashfs enable

Перегружаемся

reboot>

После перезагрузки в случае успешного запуска драйвера модема и в случае обнаружения сети Yota модем у нас замигает синей лампочкой.

Далее - опять заходим по ssh. И даем команду:

/opt/etc/madwimax/event.sh if-up tap0 И все - работаем :-)

Часть информации взято отсюда. Тут же находится и обсуждение

Кому лень настраивать, тот может купить уже настроенный комплект тут