Posted: Sat Mar 14, 2015 16:10 Post subject: Гостевая WiFi сеть + режим свитча
Здравствуйте!
Есть роутер D-Link DIR-300 c прошивкой DD-WRT v24-sp2 std.
Необходимо сделать гостевую (для всех, без пароля, без доступа к локалке, только к интернету) сеть WiFi в холле здания. В холл заходит 1 UTP-кабель для компа охранника с видеонаблюдением. Нужно, чтобы для компа охраны по кабелю раздавалась локалка.
Пока что сделал так:
порт WAN не занят, LAN1 = кабель к локалке, LAN2 = кабель к компу охраны.
В настройках роутера DHCP-сервер отключен, в Advanced Routing режим Operating Mode = Router. Т.е. для кабельных подключений работает как свитч. Основная WiFi сеть запаролена и скрыта, и вообще не нужна.
Затем сделал по Wiki http://www.dd-wrt.com/wiki/index.php/Multiple_WLANs вторую открытую сеть WiFi (гостевую), настроил DHCP-сервер на неё по инструкции, сеть 192.168.2.0/255.255.255.0 работает, но нет шлюза, и поэтому не раздается интернет.
Пробовал копаться в Advanced routing, но не хватает знаний, ничего не получилось пока. Прошу помощи!
Posted: Mon Mar 16, 2015 8:39 Post subject: Re: Гостевая WiFi сеть + режим свитча
Стандартная схема для раздачи интернета - это
Интернет-----WAN(роутер)(LAN)-----ПК
ПК2-----------wi-fi+
При подключении роутера к интернету любым способом через WAN порт будет добавлен маршрут по умолчанию на шлюз подключенный к WAN порту роутера.
Если схема
Интернет-----шлюз----LAN(роутер)LAN----ПК
ПК2------------------wi-fi+
то тут уже нужно ручками указывать маршрут по умолчанию на шлюз с которого можно получить выход в интернет или настроить DNSMasq http://192.168.1.1/Services.asp прописав в поле "Additional DNSMasq Options" раздела "DNSMasq" строчку :
dhcp-option=lan, 3, 192.168.1.100
где 192.168.1.100 адрес шлюза в локальной сети который получает интернет. Тогда клиент подключивших по DHCP к роутеру получит адрес шлюза.
Posted: Mon Mar 16, 2015 10:18 Post subject: Re: Гостевая WiFi сеть + режим свитча
vasek00 wrote:
http://192.168.1.1/Services.asp прописав в поле "Additional DNSMasq Options" раздела "DNSMasq" строчку :
dhcp-option=lan, 3, 192.168.1.100
где 192.168.1.100 адрес шлюза в локальной сети который получает интернет. Тогда клиент подключивших по DHCP к роутеру получит адрес шлюза.
Спасибо за ответ. Да, так устройство по WiFi получает адрес шлюза, но интернет не работает, наверное шлюз 192.168.1.1 не видит сеть 192.168.2.0. Копаюсь пока дальше...
Posted: Mon Mar 16, 2015 10:37 Post subject: Re: Гостевая WiFi сеть + режим свитча
Смотрите таблицу маршрутов на роутере, что и как выполнив команду ip ro на странице http://192.168.1.1/Diagnostics.asp в окне Command Shell-Commands набрать ее и нажать внизу кнопку "Run Commands".
Либо http://192.168.1.1/Routing.asp - кнопка "Show Routing Table" если она вам удобней. Основная запись это маршрут по умолчанию он же default.
192.168.2.0/24 via 192.168.2.1 dev br1 scope link
192.168.2.0/24 dev br1 proto kernel scope link src 192.168.2.1
192.168.1.0/24 dev br0 proto kernel scope link src 192.168.1.2
127.0.0.0/8 dev lo scope link
default via 192.168.1.1 dev br0
1. на скрине не чего не видно, так как он маленький.
2. по маршрутам основной маршрут у вас
Code:
default via 192.168.1.1 dev br0
т.е. если адрес IP получателя нельзя найти по таблице маршрутов, то он будет отправлен по default на данный IP - у вас он сам. Должно быть что-то типа такого если шлюз для интернета в сегменте роутера, т.е. на LAN порту:
Code:
default via 192.168.1.100 dev br0
при IP роутера 192.168.1.1
Команда в StartUp скрипте
Code:
ip ro add default via 192.168.1.100 dev br0
Вы имеете два br :
br0 - 192.168.1.0-255
br1 - 192.168.2.0-255
Спасибо, за ответ, вечером буду понимать и пробовать. Шлюз в интернет (основной роутер) 192.168.1.1, мой роутер 192.168.1.2.
Картинку с настройками починил.
смотрите инструкцию внимательней в части iptables, и второе можно обойтись было и просто ra1 без создания br1, так как данный интерфейс ra1 у вас один.
Одна из команд на 192.168.1.2 тогда
Code:
ip ro add default via 192.168.1.1 dev br0
Любой клиент из сети роутера 192.168.1.2 с IP 192.168.1.х в интернет будет иметь выход через 192.168.1.1 не зависимо от настроек на самом клиенте ПК IP адреса шлюза 192.168.1.2 или 192.168.1.1.
Для клиентов второго сегмента 192.168.2.х настроить iptables для прохода пакетов с вашего интерфейса br1 на br0 на роутере 192.168.1.2
К сожалению, не работает. В startup commands занёс:
Code:
iptables -I FORWARD -i br1 -m state --state NEW -j ACCEPT
iptables -I FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu
iptables -I FORWARD -i br1 -d `nvram get lan_ipaddr`/`nvram get lan_netmask` -m state --state NEW -j DROP
iptables -t nat -I POSTROUTING -o br0 -j SNAT --to `nvram get lan_ipaddr`
Не могу понять почему не сработало...
ip ro выдает:
Code:
192.168.2.0/24 dev br1 proto kernel scope link src 192.168.2.1
192.168.1.0/24 dev br0 proto kernel scope link src 192.168.1.2
127.0.0.0/8 dev lo scope link
default via 192.168.1.1 dev br0
К сожалению, не работает. В startup commands занёс:
Code:
iptables -I FORWARD -i br1 -m state --state NEW -j ACCEPT
iptables -I FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu
iptables -I FORWARD -i br1 -d `nvram get lan_ipaddr`/`nvram get lan_netmask` -m state --state NEW -j DROP
iptables -t nat -I POSTROUTING -o br0 -j SNAT --to `nvram get lan_ipaddr`
Не могу понять почему не сработало...
ip ro выдает:
Code:
192.168.2.0/24 dev br1 proto kernel scope link src 192.168.2.1
192.168.1.0/24 dev br0 proto kernel scope link src 192.168.1.2
127.0.0.0/8 dev lo scope link
default via 192.168.1.1 dev br0
Не сработало потому что такие вещи для начало нужно выполнять по шагам и второе после ввода той или иной команды нужно проверить ее. Все это делается через телнет доступ любой удобной для вас программой.
Входите на роутер через телнет - имя root пароль что для WEB доступа. Скрин ниже.
Первая часть
Code:
root@My-Buf:~# ifconfig br0 | grep addr
br0 Link encap:Ethernet HWaddr хх:хх:хх:хх:хх:хх
inet addr:192.168.130.99 Bcast:192.168.130.255 Mask:255.255.255.0
root@My-Buf:~#
root@My-Buf:~# route del default
root@My-Buf:~# ip ro add default via 192.168.130.100 dev br0
root@My-Buf:~# ip ro | grep default
default via 192.168.130.100 dev br0
root@My-Buf:~#
ifconfig лишняя просто показать IP адрес роутера.
С маршрутами у вас правильно для ваших IP.
Вторая часть.
Выполняем команды по шагу и проверяем их правильность ввода по
Code:
iptables -t nat -nvL
iptables -nvL
Сначала смотрим после загрузки, потом начинаем выполнять команды и опять смотрим.
Для начало вам вопрос что вы предполагали должно быть в переменных lan_ipaddr и lan_netmask которые вы используете, вот пример для моих :
Code:
root@My-Buf:~# nvram get lan_ipaddr
192.168.130.99
root@My-Buf:~# nvram get lan_netmask
255.255.255.0
root@My-Buf:~#
т.е. в них лежит IP адрес роутера или его IP от br0.
Ваша команда в результате имеет тогда вид
Интернет так и не появился на 192.168.2.x. Всё сделал как вы написали.
Решил плюнуть и поставить 1 свитч перед DD-WRT, из свитча кабель до WAN-порта DD-WRT, настроил WAN DHCP. Внутренней сети назначил 192.168.2.х. Был поражён, думал, что так должна быть изоляция от внешней сети, но блин сеть 192.168.1.х всё равно видна! Но хотя бы есть интернет.
WAN порт на dd-wrt просто настроен на стат IP для того чтоб основные правила iptables прописались. В данной реализации для сети wi-fi c ПК не какого br1 не создается, используется ath0.1.
Скрины настроек разделов настроек ниже.
Имеем сеть
wi-fi - 192.168.2.0 и интерфейс ее обслуживания ath0.1, DHCP диапазон с 192.168.2.100
wi-fi - 192.168.130.99 и интерфейс ее обслуживания br0 по умолчанию, так же DHCP диапазон 192.168.130.130
шлюз доступа в интернет 192.168.130.100 в сети интерфейса br0 с маршрутом
Code:
route del default
ip ro add default via 192.168.130.100 dev br0
маршрут по умолчанию.
Задача раздать интернет на роутере dd-wrt в сети wi-fi интерфейса ath0.1 и доступ ПК1 к локальной сети 192.168.130.0-192.168.130.254.
Результат работы:
настройка iptables для новой сети ath0.1
Получили:
ПК1 получил IP адрес 192.168.2.102, шлюз 192.168.2.1, DNS адреса которые были прописаны в настройках http://192.168.130.99/Services.asp в разделе DNSMasq.
Доступ в интернет и к локальным ПК получился и все работает.
Для информации параметры на ройтере 192.168.130.99 который в схеме dd-wrt:
Code:
ifconfig
--------
ath0 Link encap:Ethernet HWaddr хх:...:хх
...
ath0.1 Link encap:Ethernet HWaddr хх:...:хх
inet addr:192.168.2.1 Bcast:192.168.2.255 Mask:255.255.255.0
...
br0 Link encap:Ethernet HWaddr хх:...:хх
inet addr:192.168.130.99 Bcast:192.168.130.255 Mask:255.255.255.0
...
vlan1 Link encap:Ethernet HWaddr хх:...:хх
...
vlan2 Link encap:Ethernet HWaddr хх:...:хх
inet addr:10.10.10.10 Bcast:10.10.10.255 Mask:255.255.255.0
brctl show
----------
bridge name bridge id STP enabled interfaces
br0 8000.хх...хх no vlan1
ath0
vasek00, спасибо большое, после недели мучений, курения манов iptables, понял в чём проблема. Если я в iptables работал напрямую с радиоинтерфейсом (ra0-ra1) ничего не работало. Как только сделал br1 на радиоинтерфейс, всё заработало. Вот такой вот то ли глюк, то ли баг, то ли фича.
Команды у меня сейчас такие, сеть на вай-фай сделал 10.10.10.0/24 для удобства восприятия:
Code:
iptables -t nat -A POSTROUTING -s 10.10.10.1/24 -o br0 -j SNAT --to-source 192.168.1.2
iptables -t nat -A POSTROUTING -o br1 -j SNAT --to-source 10.10.10.1
iptables -A FORWARD -i br1 -d 192.168.1.0/24 -m state --state NEW -j DROP
Т.е. фактически сейчас у меня есть свитч на 5 портов в локалке 192.168.1.0/24 и есть точка доступа с доступом только в интернет и без доступа к локалке.
Я рад что у вас получилось, и вы не зря потратили время.
Quote:
Если я в iptables работал напрямую с радиоинтерфейсом (ra0-ra1) ничего не работало.
Возможно где-то была ошибка, так несколько раз уже обращал внимание на то, что при использовании WAN порта в разных режимах, дает и разные настройки первичные iptables, которые нужно было посмотреть и добавить только необходимые, так же при настройках ra1 опять же нужно было ставить галку использовать NAT и т.д.