Недавно я реализовал что-то подобное в моей домашней сети, на Tomato (shibby) v138. Вот схема:
Прежде чем перейти к настройке VPN, у меня изначально были сети с частотой 2,4 ГГц и 5 ГГц с одним SSID, назовем его «общедоступным». Внутренняя сеть назначает устройства адресам в диапазоне 192.168.1.2-254. Это то, что вы видите в верхней половине диаграммы.
Вот изменения, которые я сделал, чтобы добавить новую подсеть, которая была маршрутизирована через VPN:
- Под Основные / Сеть / LAN Я добавил новый мост с именем "br1". Я дал ему IP-адрес 192.168.2.1, маску сети 255.255.255.0, DHCP включен и диапазон IP-адресов 192.168. 2 .2-254.
- Под Advanced / Virtual Wireless Я добавил два новых виртуальных беспроводных интерфейса, wl0.1 и wl1.1, для интерфейсов 2,4 ГГц и 5 ГГц соответственно. Оба назначены новому мосту "LAN1 (br1)". Я дал оба одинаковых новых SSID, например, "частный". Вы также можете дать им другой пароль из публичной сети, если хотите.
- Под VPN-туннелирование / OpenVPN-клиент / Базовый , Я настроил VPN-клиент (мой VPN-провайдер - Private Internet Access, поэтому я следовал это руководство ). Я также включил «Начать с WAN», чтобы он запускался автоматически.
- Под VPN-туннелирование / OpenVPN-клиент / Advanced Я установил опцию «Игнорировать перенаправление перенаправления», чтобы клиент не перенаправлял все в VPN.
- Под VPN-туннелирование / OpenVPN-клиент / Политика маршрутизации Я проверил «Redirect via VPN» и добавил строку с типом «From Source IP» и значением «192.168.2.0/24», чтобы все узлы в новой подсети маршрутизировались через VPN.
В этот момент я могу запустить VPN-клиент, затем выбрать беспроводное устройство, подключиться к «частной» сети и подтвердить, что мой IP-адрес, выходящий в Интернет, находится за VPN, подключиться к «общедоступному» и транслировать Netflix / Amazon Prime видео без получения ошибок географического ограничения.
Теперь вы можете настроить каждое устройство для подключения к любому SSID в соответствии с их потребностями. В нашем доме медиа-стример, который передает потоки Netflix на телевизор, остается в сети общего пользования. Мой телефон и ноутбук подключены к частной сети. В большинстве случаев вы должны выбрать одно или другое - вы не хотите, чтобы устройство автоматически подключалось к одному из них произвольно.
Дополнительные опции
Получать проводной : Если вы хотите, чтобы физический порт Ethernet подключался через VPN, вы можете добавить новую VLAN в Дополнительно / VLAN и назначьте его новому мосту (br1). На этом этапе вы можете переместить один или несколько физических портов Ethernet на маршрутизаторе в вашу защищенную VLAN, если хотите. Я не сделал, поэтому только беспроводные клиенты смогут присоединиться к моей частной подсети.
Внутренняя маршрутизация После выполнения описанных выше действий вы можете обнаружить, что клиенты в общедоступных и частных сетях не могут общаться друг с другом. Настройка политики маршрутизации VPN-клиента, как я делал выше, добавляет это правило:
iptables -t mangle -A PREROUTING -s 192.168.2.0/24 -j MARK --set-mark 311
к сценарию брандмауэра томата. Это помечает каждый пакет, исходящий из сети 192.168.2.0/24, и все с пометкой 311 маршрутизируется через VPN. Это означало, что никакие устройства в «общедоступной» подсети (192.168.1.0/24) не могли общаться с устройствами в «частной» подсети через внутреннюю сеть, потому что, хотя запрос проходил, ответ перенаправлялся на VPN и потерял. В моем случае я хотел иметь возможность доступа к общим файлам с сервера в частной сети, поэтому я решил снять отметку для всего, что должно быть отправлено в общедоступную сеть. Я сделал это, добавив строку:
iptables -t mangle -A PREROUTING -s 192.168.2.0/24 -d 192.168.1.0/24 -j MARK --set-mark 0
в Администрирование / Scripts / Firewall , Вы можете добавить аналогичное правило для любых портов, которые вы собираетесь перенаправлять на маршрутизатор из частной сети.
Безотказный : Также известный как «переключатель уничтожения», я добавил пару дополнительных правил Администрирование / Scripts / Firewall которые предназначены для предотвращения попадания чего-либо из частной сети в незащищенную глобальную сеть (vlan2). Это означает, что если VPN по какой-то причине отключается, клиенты, подключающиеся к частной сети, не могут случайно установить связь через незащищенный интерфейс WAN.
iptables -I FORWARD -s 192.168.2.0/24 -o vlan2 -m state --state NEW -j REJECT --reject-with icmp-host-prohibited
iptables -I FORWARD -p tcp -s 192.168.2.0/24 -o vlan2 -m state --state NEW -j REJECT --reject-with tcp-reset
iptables
командная строка. Например, вызов этого приведет к удалению правила, направляющего весь трафик из вторичной сети (той, что на 192.168.2.xxx), в туннель. tun11 это мой openvpn ... но мне нужно добавить маскировку интерфейса ...iptables -t nat -D POSTROUTING -s 192.168.2.0/24 -o tun11 -j MASQUERADE