web-dev-qa-db-ja.com

Tomato Dual VLAN(そのうちの1つはVPNトンネリングされています)

Tomatoを使用してホームネットワークをセットアップし、2つのWi-FiSSIDで動作するように取り組んでいます。私のルーターはデュアルバンドNETGEARNIGHTHAWKルーターであり、これまでのところTomatoはこのルーターでうまく機能し、VPN機能もうまく機能します。唯一の欠点は、VPNがアクティブな場合(Tomatoインターフェイス経由で開始を選択した場合)、設定した両方のSSIDにVPNトンネルが適用されることです。 VPNをそれらのSSIDの1つだけに適用する方法はありませんか?そうすれば、ワイヤレスネットワークを変更することで、ルーターで実行されているVPNトンネルから離れることができます。

これは可能ですか?

5
matsko

私は最近、このようなものをホームネットワークのTomato(shibby)v138に実装しました。これが図です: Tomato LAN diagram

VPNのセットアップに入る前は、最初は同じSSIDに2.4GHzと5GHzの両方のネットワークがありました。これを「パブリック」と呼びましょう。内部ネットワークは、192.168.1.2〜254の範囲のアドレスにデバイスを割り当てました。これは、図の上半分に表示されているものです。

VPN経由でルーティングされた新しいサブネットを追加するために行った変更は次のとおりです。

  1. Basic/Network/LANの下に、「br1」という名前の新しいブリッジを追加しました。 IPアドレス192.168.2.1、ネットマスク255.255.255.0、DHCP有効、IP範囲192.168。2。2-254を指定しました。
  2. Advanced/Virtual Wirelessの下に、2.4GHzと5GHzのインターフェイス用にそれぞれ2つの新しい仮想ワイヤレスインターフェイスwl0.1とwl1.1を追加しました。両方とも新しいブリッジ「LAN1(br1)」に割り当てられます。私は両方に同じ新しいSSIDを与えました。 "民間"。必要に応じて、パブリックネットワークとは異なるパスワードを与えることもできます。
  3. VPNトンネリング/ OpenVPNクライアント/基本の下で、VPNクライアントを構成しました(私のVPNプロバイダーはプライベートインターネットアクセスなので、 このガイド )。また、「WANで開始」を有効にして、自動的に起動するようにしました。
  4. VPNトンネリング/ OpenVPNクライアント/詳細で、「リダイレクトゲートウェイを無視する」オプションを設定して、クライアントがすべてをVPNにルーティングしないようにしました。
  5. VPNトンネリング/ OpenVPNクライアント/ルーティングポリシーの下で、[VPN経由でリダイレクト]をオンにし、タイプが「FromSourceIP」で値が「192.168」の行を追加しました。 .2.0/24 "なので、新しいサブネット上のすべてのホストがVPN経由でルーティングされます。

その時点で、VPNクライアントを起動し、ワイヤレスデバイスを取得し、「プライベート」ネットワークに接続して、インターネットに直接接続されたIPがVPNの背後にあることを確認し、「パブリック」に接続してNetflix/AmazonPrimeをストリーミングできます。地理的制限エラーが発生しないビデオ。

これで、必要に応じていずれかのSSIDに接続するように各デバイスを設定できます。私たちの家では、Netflixストリームをテレビに配信するメディアストリーマーはパブリックネットワーク上にあります。私の電話とラップトップはプライベートネットワークに接続します。ほとんどの場合、どちらか一方を選択する必要があります。デバイスがどちらかに任意に自動接続することは望ましくありません。

オプションのエクストラ

有線接続:物理イーサネットポートをVPN経由で接続する場合は、新しいVLAN Advanced/VLANそしてそれを新しいブリッジ(br1)に割り当てます。この時点で、ルーター上の1つ以上の物理イーサネットポートをセキュアに移動できます。 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

toAdministration/Scripts/Firewall。プライベートネットワークからルーターに転送する予定のポートには、同様のルールを追加できます。

フェイルセーフ:「キルスイッチ」とも呼ばれ、管理/スクリプトにいくつかのルールを追加しました/ Firewallこれはプライベートネットワークから保護されていない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
6
Matt