Дано
Провайдер позволяет зарегистрировать по MAC-адресам четыре устройства для выхода в интернет.
На каждый MAC-адрес по ipv4 выдаётся один IP и ограниченная полоса трафика.
По ipv6 ограничений ни по скорости, ни по количеству устройств нет.
Есть три стационарных устройства и много мобильных устройств (телефоны, гостевые ноутбуки, etc.)
Задача
Дать доступ в интернет (и по ipv4 и по ipv6) всем устройствам (и стационарным и мобильным).
Дать возможность подключаться как через Wi-Fi, так и через Ethernet (всем устройствам, и стационарным и мобильным)
Рассмотренные варианты решения
Использовать bridging — не подходит, так как зарегистрировать можно только 4 MAC-адреса, а устройств — больше.
Использовать маршрутизацию (ipv4 — NAT, ipv6 — ??) — плохо, потому что все устройства будут использовать только одну полосу, остальные три будут простаивать.
Приходит в голову такой вариант: зарегистрировать у провайдера MAC-адреса стационарных компьютеров, и MAC-адрес длинка.
Дать стационарным устройствам выделенные полосы (то есть их трафик передавать наружу на канальном уровне), а мобильным устройствам выдать IP из своей внутренней сети и маршрутизировать (ipv4 — NAT, ipv6 — ??) их трафик на сетевом уровне (они все вместе будут использовать одну полосу).
Отсюда вопрос: как это реализовать? (готов к перепрошивке, если это необходимо)
План:
1. нужно отличать трафик между этими двумя группами устройств (vlan?)
1.1. или делать это по MAC-адресам (как?)
1.2. или физически?
1.2.1. по Wi-Fi сделать две разные SSID — для стационарных и для мобильных (может ли один роутер вещать на двух SSID, при этом чтобы их сигналы не мешали друг другу?)
1.2.2. по Ethernet выделить некоторые порты как «для стационарных компьютеров», а некоторые — «для мобильных устройств и гостей»
2. выдавать адреса из внутренней сети (ipv4 — dhcp, ipv6 — ??) только мобильным устройствам, стационарные получат адреса от провайдера
3. трафик устройств из одной группы нужно передавать наружу на канальном уровне, другой — на сетевом (для ipv4 — нужен NAT, для ipv6 — не знаю что делать, маршрутизацией ipv6 никогда не занимался)
4. возможность обмена данными между компьютерами не актуальна, главное, чтобы они имели доступ в интернет и в ЛВС провайдера
5. (это уже совсем с низким приоритетом) чтобы при этом хотя бы на стационарных устройствах работал IPTV (multicast). Сейчас роутер просто перезагружается при попытке смотреть через него IPTV
UPD:
Настроил всё, кроме ipv6 в гостевой сети (на мультикаст забил)
Для тех, кому подобное понадобится, опишу последовательность действий:
0) DD-WRT v24-sp2 (12/19/10) std-nokaid (SVN revision 15943M NEWD Eko)
1) bridging WAN and WLAN:
www.dd-wrt.com/phpBB2/viewtopic.php?t=38368, обе WLAN делаем bridged
3) Если по инструкции из предыдущего пункта назначить в качестве WAN br1 — происходят странные вещи:
www.dd-wrt.com/phpBB2/viewtopic.php?p=312471
4) поэтому WAN port assignment не трогаем, а вручную дописываем нужные правила в iptables и перезапускаем демонов с нужными параметрами (вот они, костыли! В случае если watchdog или WebUI перезапустят каких-то демонов, то они запустят их с неверными параметрами)
Скрипты:
# startup script<br>
killall udhcpc<br>
ifconfig vlan1 0.0.0.0<br>
brctl delif br0 wl0.1<br>
brctl addbr br1<br>
brctl addif br1 vlan1<br>
brctl addif br1 wl0.1<br>
ifup br1<br>
udhcpc -i br1 -p /var/run/udhcpc.pid -s /tmp/udhcpc<br>
# Firewall script<br>
killall nas<br>
sleep 1<br>
killall -9 nas<br>
sleep 1<br>
nas -P /tmp/nas.wl0lan.pid -l br0 -H 34954 -i eth1 -A -m 4 -k guest_key -s guest_ssid -w 6 -g 3600<br>
nas -P /tmp/nas.wl0.1lan.pid -l br1 -H 34954 -i wl0.1 -A -m 4 -k home_key -s home_ssid -w 6 -g 3600<br>
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o br1 -j MASQUERADE<br>
Вопрос, как настроить маршрутизацию ipv6 — остаётся открытым.
NAT не нужен, достаточно просто маршрутизации и чтобы устройства получали свой ipv6 адрес и адрес шлюза.
Желательно без необходимости подключать jffs и устанавливать дополнительные пакеты — места на устройстве всего 4 Мб.