Сьогодні хочу розповісти як безпечно поділитися своїм бездротовим інтернетом з сусідами чи клієнтами.
Така потреба часто виникає в невеликих барах чи офісах, коли потрібно надати Wi-Fi комусь "чужому", не переживаючи що їм стануть доступні Ваші власні мережеві ресурси. Такий доступ називаються "гостьовим". На одному і тому ж роутері створюються дві окремі Wi-Fi мережі.
Також, бажано розділити інтернет так, щоб Ваші гості не забирали всю швидкість собі, тобто встановити пріоритети трафіку (основне Вам, все решта — гостям).
Я реалізував це на безкоштовній прошивці для роутерів DD-WRT. Зауважу, що багато сучасних роутерів мають такі функції (в тій чи іншій мірі) вже в стандартних прошивках. Але якщо їх функцій недостатньо — краще встановити альтернативні.
В загальному, повинна вийти ось така схема:
Наші гості можуть вільно підключатись до Wi-Fi і отримувати доступ до інтернету. Ми самі підключаємося до іншої W-Fi мережі і отримуємо доступ до інтернету та локальних ресурсів.
Обмін інформацією між Wi-Fi мережами заборонено. Доступ до роутера з гостьової мережі — заборонено.
Гостьова мережа має менший пріоритет трафіку, щоб не заважати користуватися інтернетом нам.
Після змін на сторінках не забувайте тиснути Apply Settings! Дайте роутеру час (30-90 с) щоб все коректно зберегти!
Встановіть прошивку DD-WRT
На цьому не буду зупинятися. Процес встановлення залежить від моделі роутера. Перевірити чи придатний Ваш роутер і як його перепрошити краще на офіційному сайті DD-WRT.
Процедура, як правило, не складна.
Зайдіть на веб-сторінку налаштувань роутера.
Створення додаткової Wi-Fi мережі
Заходимо в Wireless -> Basic Settings. У розділі Virtual Interfaces тиснемо Add.
Даємо назву новій мережі (гостьовій). Більше нічого не змінюємо.
Apply Settings.
Параметри безпеки Wi-Fi мереж
Заходимо в Wireless -> Advanced Settings. Задаємо параметри безпеки для обидвох мереж. Для себе — надійно, для гостей — щось з простим паролем.
Apply Settings.
Розділення мереж
Розділимо дві мережі на логічно окремі, зі своїм діапазоном IP-адрес.
Setup -> Networking page. У розділі Bridging, підрозділ Create Bridge тицяємо Add. Назва — br1.
Apply Settings.
Якщо "основна" мережа має адресу 192.168.1.0 (за замовчуванням) то для додаткової задаємо, наприклад, 192.168.2.0/255.255.255.0.
Apply Settings.
Прив’яжемо створену підмережу до гостьового Wi-Fi. У розділі Assign to Bridge вкажіть що br1 належить до wl0.1.
Apply Settings.
Для роздавання IP-адрес з нового діапазану створимо додатковий DHCP-сервер. У розділі Multiple DHCP Server вкажіть br1. Параметри мережі підтягнуться автоматично.
Тепер, основна Wi-Fi мережа та локальні комп’ютери (що під’єднані кабелем) автоматично отримуватимуть IP-адреси 192.168.1.x, а гостьова мережа — 192.168.2.x.
Apply Settings.
Обмеження доступу
Потрібно зробити так, щоб гостьова мережа могла користуватись лише інтернетом, без доступу до ресурсів приватної мережі чи налаштувань роутера.
Administration -> Commands page, у текстовому полі Commands скопіюйте та вставте:
iptables -t nat -I POSTROUTING -o `get_wanface` -j SNAT --to `nvram get wan_ipaddr`
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 -o br0 -m state --state NEW -j DROP
iptables -I FORWARD -i br0 -o br1 -m state --state NEW -j DROP
iptables -I FORWARD -i br1 -d `nvram get wan_ipaddr`/`nvram get wan_netmask` -m state --state NEW -j DROP
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`
iptables -I INPUT -i br1 -m state --state NEW -j DROP
iptables -I INPUT -i br1 -p udp --dport 67 -j ACCEPT
iptables -I INPUT -i br1 -p udp --dport 53 -j ACCEPT
iptables -I INPUT -i br1 -p tcp --dport 53 -j ACCEPT
(доповнено 11.11.14) або ще й зробити так, щоб гості могли відкривати лише веб-сторінки (TCP порти 80 та 443, а не торенти/FTP тощо):
iptables -t nat -I POSTROUTING -o `get_wanface` -j SNAT --to `nvram get wan_ipaddr`
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 -o br0 -m state --state NEW -j DROP
iptables -I FORWARD -i br0 -o br1 -m state --state NEW -j DROP
iptables -I FORWARD -i br1 -d `nvram get wan_ipaddr`/`nvram get wan_netmask` -m state --state NEW -j DROP
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`
iptables -I INPUT -i br1 -m state --state NEW -j DROP
iptables -I INPUT -i br1 -p udp --dport 67 -j ACCEPT
iptables -I INPUT -i br1 -p udp --dport 53 -j ACCEPT
iptables -I INPUT -i br1 -p tcp --dport 53 -j ACCEPT
iptables -I FORWARD -i br1 -j DROP
iptables -I FORWARD -i br1 -p udp --dport 53 -j ACCEPT
iptables -I FORWARD -i br1 -p tcp --dport 53 -j ACCEPT
iptables -I FORWARD -i br1 -p tcp --dport 80 -j ACCEPT
iptables -I FORWARD -i br1 -p tcp --dport 443 -j ACCEPT
Натисніть Save Firewall.
Встановлення пріоритетів трафіку
Нехай гості користуються інтернетом без обмежень, але якщо інтернетом користуються з основної мережі — швидкість для гостей автоматично знижується, щоб не заважали.
NAT/QoS -> QoS. Параметри — як на малюнку.
У полях "швидкість" вкажіть приблизно 90% від реальної швидкості що надається провайдером! Наприклад для швидкості 2Мб/с (~2000 Кб/с) вкажіть 1800.
У розіділі Netmask Priority додайте, по черзі, дві наших IP-мережі. Для основної виберіть пріоритет Premium (пріоритетна швидкість), для гостьової — Bulk (що залишиться). На малюнку, 1-ша мережа має діапазон 192.168.0.0, бо це мої власні налаштування. Стандартні — 192.168.1.0.
Пріоритет трафіку працює не супер-гладенько, але прийнятно.
Перевантажте роутер щоб переконатись що все збереглося та працює як треба.
На цьому — дякую за увагу. Нехай Ваші клієнти будуть задоволені, а сусіди вдячні за халяву. ;)
P.S.
Тестувалося на Linksys WR54g, DD-WRT v24-sp2 (10/10/09) micro. Частину ілюстрацій використано з Wiki-сайту DD-WRT.