Недавно я реализовал что-то подобное в моей домашней сети, на Tomato (shibby) v138. Вот схема:
Прежде чем приступить к настройке VPN, у меня изначально были сети с частотой 2,4 ГГц и 5 ГГц на одном SSID, назовем его "общедоступным". Внутренняя сеть назначает устройства адресам в диапазоне 192.168.1.2-254. Это то, что вы видите в верхней половине диаграммы.
Вот изменения, которые я сделал, чтобы добавить новую подсеть, которая была маршрутизирована через VPN:
- В разделе Basic/Network/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-клиентом /Basic я настроил VPN-клиента (мой провайдер VPN - Частный доступ в Интернет, поэтому я следовал этому руководству). Я также включил "Начать с WAN", чтобы он запускался автоматически.
- Под VPN Tunneling /OpenVPN Client /Advanced я установил опцию "Игнорировать перенаправление перенаправления", чтобы клиент не перенаправлял все в VPN.
- В разделе VPN Tunneling /OpenVPN Client /Routing Policy я проверил "Redirect via VPN" и добавил строку с типом "From Source IP" и значением «192.168.2.0/24», чтобы все узлы в новой подсети маршрутизировались через VPN.
В этот момент я могу запустить VPN-клиент, затем выбрать беспроводное устройство, подключиться к "частной" сети и подтвердить, что мой IP-адрес, подключенный к Интернету, находится за VPN, подключиться к "общедоступному" и транслировать Netflix/Amazon Prime. видео без получения ошибок географического ограничения.
Теперь вы можете настроить каждое устройство для подключения к любому SSID в соответствии с их потребностями. В нашем доме медиа-стример, который передает потоки Netflix на телевизор, остается в сети общего пользования. Мой телефон и ноутбук подключены к частной сети. В большинстве случаев вы должны выбрать одно или другое - вы не хотите, чтобы устройство автоматически подключалось к одному из них произвольно.
Дополнительные опции
Начало проводной: Если вы хотите физический порт Ethernet для подключения через VPN, вы можете добавить новую VLAN под Advanced/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
Администрирование / Скрипты / Брандмауэр. Вы можете добавить аналогичное правило для любых портов, которые вы собираетесь перенаправлять на маршрутизатор из частной сети.
Отказоустойчивость: также известный как «переключатель уничтожения», я добавил пару дополнительных правил в Администрирование / Сценарии / Брандмауэр , которые предназначены для предотвращения попадания чего-либо из частной сети в незащищенную глобальную сеть (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