Tomato Dual VLAN (где один из них туннелируется через VPN)

Tomato Dual VLAN (где один из них туннелируется через VPN)

Я работаю над настройкой домашней сети с Tomato для работы с двумя SSID Wi-Fi. Мой маршрутизатор — двухдиапазонный маршрутизатор NETGEAR NIGHTHAWK, и пока Tomato отлично работает на нем, как и функция VPN. Единственным недостатком является то, что когда VPN активен (когда вы выбираете запуск через интерфейс Tomato), он применяет туннель VPN к обоим настроенным мной SSID. Нет ли способа применить VPN только к одному из этих SSID? Таким образом, изменив свою беспроводную сеть, я могу быть частью туннеля VPN, работающего на моем маршрутизаторе.

Это возможно?

решение1

Я недавно реализовал нечто подобное в своей домашней сети на Tomato (shibby) v138. Вот схема: Схема локальной сети Tomato

До настройки VPN у меня изначально были сети 2,4 ГГц и 5 ГГц на одном и том же SSID, назовем его "публичным". Внутренняя сеть назначала устройствам адреса в диапазоне 192.168.1.2-254. Это то, что вы видите в верхней половине диаграммы.

Вот изменения, которые я внес для добавления новой подсети, маршрутизируемой через VPN:

  1. ПодБазовый/Сетевой/LAN, я добавил новый мост с именем "br1". Я дал ему IP-адрес 192.168.2.1, маску сети 255.255.255.0, включил DHCP и диапазон IP-адресов 192.168.2.2-254.
  2. ПодРасширенный/виртуальный беспроводной доступ, я добавил два новых виртуальных беспроводных интерфейса, wl0.1 и wl1.1, для интерфейсов 2,4 ГГц и 5 ГГц соответственно. Оба назначены новому мосту "LAN1 (br1)". Я дал обоим одинаковый новый SSID, например "private". Вы также можете дать им другой пароль от публичной сети, если хотите.
  3. ПодVPN-туннелирование/клиент OpenVPN/базовый, я настроил VPN-клиент (мой VPN-провайдер — Private Internet Access, поэтому я следовалэто руководство). Я также включил «Запуск с WAN», чтобы он запускался автоматически.
  4. ПодVPN-туннелирование/Клиент OpenVPN/РасширенныйЯ установил опцию «Игнорировать шлюз перенаправления», чтобы клиент не перенаправлял все данные в VPN.
  5. ПодVPN-туннелирование/клиент OpenVPN/политика маршрутизацииЯ установил флажок «Перенаправить через VPN» и добавил строку с типом «С исходного 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

в скрипт брандмауэра tomato. Он помечает каждый пакет, исходящий из сети 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

кАдминистрирование/Скрипты/Брандмауэр. Вы можете добавить аналогичное правило для любых портов, которые вы собираетесь перенаправлять на маршрутизатор из частной сети.

Отказоустойчивый: Также известный как «аварийный выключатель», я добавил пару дополнительных правилАдминистрирование/Скрипты/Брандмауэркоторые предназначены для предотвращения передачи чего-либо из частной сети в незащищенный WAN (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

Связанный контент