TP-Link TL-WR1043ND: роутер с GRE-туннелингом и фильтрацией трафика на прошивке BackFire
Задача: Роутеры LinkSyS WRT54GL уже сняты с производства, но до недавнего времени еще в достаточном количестве присутствовали у поставщиков. Однако сегодня купить их уже весьма сложно. В качестве замены рассмотрены имеющиеся в продаже TP-Link WR1043ND, LinkSYS WRT160NL, LinkSYS E3200, LinkSYS E4200. Все эти модели поддерживаются прошивкой BackFire.
1. ИСХОДНЫЕ Данные
-технологический адрес (выделенный провайдером), в нашем случае 192.168.2.42/30;
-default gateway, то есть технологический адрес шлюза на стороне провайдера для роутера подразделения , в нашем случае 192.168.2.41/30;
-адрес роутера, являющийся шлюзом для локальной сети подразделения, в нашем случае 10.10.10.100/24;
-технологический адрес шлюза, смотрящего в сторону провайдера для роутера центрального офиса, в нашем случае 172.172.172.100/29;
2. Перепрошивка и настройка TL-WR1043ND
Чтобы определить, какую именно версию прошивки BackFire необходимо скачивать, смотрим readmy имеющихся релизов на предмет поддержки аппаратной платформы:
По адресу http://downloads.openwrt.org/backfire/10.03/README видим следующие строки:
New platforms:
* Atheros AP81: Ubiquiti Router Station Pro, TP-Link TL-WR1043ND,
Netgear WNDR3700, etc. (ar71xx)
Значит нам нужна прошивка ar71xx.
Скачиваем прошивку BackFire 10.03.01-RC6 openwrt-ar71xx-tl-wr1043nd-v1-squashfs-factory.bin для установки через web. На локальном компе настраиваем адрес сетевки 192.168.1.2, подключаем к ней патчкордом первый порт WR1043ND, включаем питание, в браузере набираем адрес 192.168.1.1.
Умолчательный аккаунт для администрирования: root/admin
Загружаем прошивку через web-интерфейс указывая путь к ее расположению на локальном компе. После перепрошивки и перезагрузки меняем пароль root, так как первое что видим, это:

3. Установка пакетов и конфигурирование под наши нужды Теперь устанавливаем пакеты, необходимые для организации vlan, фильтрации приоритетного трафика, построения GRE-туннелей и прочие пакеты исходя из потребностей.
Необходимые пакеты скачиваем там же http://downloads.openwrt.org/backfire/10.03/packages/ или здесь.
Утилита для работы с пакетами - opkg (В openwrt WhiteRussian rc5.0-6.0 была ipkg).
Для удобства заливки пакетов и скриптов поднял на своем компе apache и положил все нужное в его корневую директорию. В моем случае это D:\Program Files\Apache Software Foundation\Apache2.2\htdocs\
Создаем скрипт первоначальной конфигурации роутера с установкой необходимых пакетов. Можно и не создавать его, а выполнить все вручную. В данном случае это скрипт init_conf (название носит произвольный характер). Внимание: в вашем блокноте должен быть выставлен формат новой строки Unix(0Ah).
Внимание: при редактировании скриптов не забываете про завершающий enter (EOF).
Содержимое скрипта:
echo 'For get and apply this configures on TP-Link echo 'run next command: echo 'wget http://you_web_server/path/init_conf' echo 'chmod 775 init_conf' echo './init_conf'
cd /tmp wget http://192.168.1.2/BF/Packages/ip_2.6.29-1-2_ar71xx.ipk opkg install ip_2.6.29-1-2_ar71xx.ipk
#Здесь 192.168.1.2 - это адрес вашего компа с установленным apache, к которому подключен патчкордом TP-Link
................................................................ wget http://192.168.1.2/BF/Packages/mc_4.7.5.2-1_ar71xx.ipk opkg install mc_4.7.5.2-1_ar71xx.ipk
echo 'Packages install complete'
cd /etc/init.d wget http://192.168.1.2/BF/S90tun_p21 chmod 755 S90tun_p21 echo 'Tunnel startup script installed' wget http://192.168.1.2/BF/S99tc_iptables chmod 755 S99tc_iptables echo 'Filtering rules script installed'
Полученные wgetом файлы сохраняются в файловой сисеме, использование команд записи типа 'nvram commit' не требуется.
Не стоит спешить его запускать на выполнение, так как у нас еще не готовы 2 скрипта: S90tun_p21 и S99tc_iptables.
4. Конфигурирование wan (eth0.2) и lan через web-интерфейс.
Умолчательно wan (eth0.2) настроен как dhcp. Для смены выбрать Protocol Static Adresses и нажать располагающуюся ниже кнопку “Switch protocol”. После этого уже ввести необходимую адресацию.

Аналогичным образом задаем адрес lan-интерфейса.
5. Конфигурирование gre-тоннеля. Создаем файл сетевой конфигурации S90tun_p21 (имя файла носит произваольный характер) в соответствии с исходными данными (см.п.1).
#echo 'Network configures echo 'network to Provider'
ip addr add 192.168.2.42/30 dev eth0.2 #Это технологический адрес выделенный провайдером для роутера подразделения ip route add 172.172.172.100/29 via 192.168.2.41
# 172.172.172.100 - технологический адрес выделенный провайдером для нашего роутера в центральном офисе
# 192.168.2.41 - технологический адрес на стороне провайдера (шлюз для удаленного подразделения)
echo 'tunnel'
insmod ip_gre
ip tunnel add pos21 mode gre remote 172.172.172.100 local 192.168.2.42 ttl 255
ip link set pos21 up
ip addr add 192.168.201.6/30 dev pos21
#Это адрес тоннельного интерфейса, назначаемый нами произвольно.
ip route add default dev pos21
Скрипт поднятия тоннеля готов.
6. Скрипт фильтрации пакетов и правил iptables.
# iptables and tc # tc
insmod cls_u32 insmod sch_htb insmod sch_sfq
tc qdisc add dev br-lan root handle 1: htb default 20 tc class add dev br-lan parent 1: classid 1:1 htb rate 512kbit ceil 512kbit burst 32k tc class add dev br-lan parent 1:1 classid 1:10 htb rate 64kbit ceil 512kbit burst 16k tc class add dev br-lan parent 1:1 classid 1:20 htb rate 448kbit ceil 512kbit burst 16k tc filter add dev br-lan protocol ip parent 1:0 prio 1 u32 match ip dst 10.252.1.100/32 flowid 1:10
#check filter rules by next command: #tc -s class ls dev br-lan
#iptables
iptables -A FORWARD -s 10.0.0.0/8 -d 10.10.10.0/24 -j ACCEPT iptables -A FORWARD -s 10.10.10.0/24 -d 10.1.1.0/24 -j ACCEPT iptables -A FORWARD -s 10.10.10.0/24 -d 10.20.20.20/32 -j ACCEPT .................
iptables -A FORWARD -s 10.10.10.0/24 -j DROP
7. Активация скриптов
Итак, с нашего компа заходим по ssh на TP-Link и в консоли выполняем:
root@OpenWrt:~# wget http://192.168.1.2/BF/init_conf
root@OpenWrt:~# chmod 755 init_conf
root@OpenWrt:~# ./init_conf
Перегружаем роутер: root@OpenWrt:~#reboot
Если скрипты поднятия тоннеля и фильтрации пакетов после перезагрузки не отработали, то необходимо сделать символические ссылки из /etc/init.d в /etc/rc.d root@OpenWrt:~#cd /etc/rc.d root@OpenWrt:~#ln -s /etc/init.d/S90tun_p21 ./S90tun_p21 root@OpenWrt:~#ln -s /etc/init.d/S99tc_iptables ./S99tc_iptables root@OpenWrt:~#reboot
Готово!
|