イーサネット経由でVPN接続を共有する

イーサネット経由でVPN接続を共有する

Linux 初心者ですが、Ubuntu 18.04 LTS を実行しています。

私は、macOS のハードウェアと OS で実行できる機能を再現したいと考えています。つまり、OS レベルの VPN 接続をハードウェア インターフェイスと共有します。

この特定のケースでは、ラップトップが安全でない Wi-Fi に接続し、VPN トンネルを確立し、VPN がイーサネット インターフェイスと共有され、そのインターフェイスで、クライアントに安全な Wi-Fi/イーサネットを提供する DD-WRT ルーター (当然ダブル NAT) を接続します。ゲートウェイに実際の OS を搭載したラップトップを使用する理由は、ブラウザー経由でキャプティブ ポータルを処理するためです (多くのホテルがそうしています)。

この設定では、VPN 接続のみが共有されるため、クライアントのトラフィックがゲートウェイの WiFi 経由で漏洩することは不可能です。VPN が切断されると、クライアントはまったく接続できなくなります。macOS で l2tp を使用すると簡単に実行できます。

gnome GUI からこれを行う比較的簡単な方法はありますか? L2TP+IPsec トンネルを機能させるのに何時間もかかり、ついに諦めました。現在は OpenVPN を使用しています。しかし、トンネルが切断された場合に安全でなくなり、クライアント トラフィックが公開されることになる Wi-Fi だけを具体的に OpenVPN 接続を共有する簡単な方法が見つかりません。

ありがとう!

答え1

試行錯誤と別のフォーラムの助けを借りて、なんとかこれを機能させることができました。注: Linux でのサポートが優れており、全体的なスループットが優れているため、OpenVPN プロトコルに切り替えました。

GUI で実行できる唯一の部分は、OpenVPN 接続と、2 番目のインターフェイス上のクライアント ネットワークの設定です (これはネットワーク マネージャーで実行されます)。私の場合、ens9 は、一意のローカル サブネット上の静的 IP で構成したセカンダリ イーサネット インターフェイスです。クライアント デバイスは、この IP をゲートウェイとして使用するように事前に構成されていました。

私の解決策の詳細な詳細はここにあります:https://www.linuxquestions.org/questions/linux-networking-3/share-vpn-with-ethernet-interface-4175655027/

ゲートウェイ デバイス自体の VPN キル スイッチは次のようになります。

/etc/sysctl.confで以下の変更を加えます

#disable ipv6
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
net.ipv6.conf.lo.disable_ipv6 = 1
#enable packet forwarding
net.ipv4.ip_forward=1

UFW のデフォルト設定ファイル (/etc/default/ufw) で、次の変更を加えます。

DEFAULT_FORWARD_POLICY=“ACCEPT”

コマンドラインから、ufw ルールを次のように編集します。

sudo ufw default deny incoming
sudo ufw default deny outgoing
sudo ufw allow out on tun0
sudo ufw allow out on wlp2s0 to XXX.YYY.ZZZ.AAA port 1194 proto udp

最後の行では、WAN 接続に使用しているインターフェースの名前 (すべてのインターフェースを表示するには、ifconfig コマンドを使用します) を使用し、OpenVPN サーバーの IP アドレスとポート番号を使用します。これは、提供されている ovpn.config ファイルから取得できます。

ここまでで、ゲートウェイ デバイス上で動作する VPN キル スイッチが完成します。最後の手順は、セカンダリ インターフェイス (私の場合は、ens9 というイーサネット デバイス) で VPN 接続をマスカレードすることです。

共有を有効にするために nm-connection-editor の GUI メソッドを使用しないでください。キル スイッチがバイパスされます。代わりに、/etc/ufw/before.rules ファイルを編集して、*filter 見出しのすぐ上に nat セクションを追加します。

### Start OpenVPN Share rules
### NAT table rules
*nat
:POSTROUTING ACCEPT [0:0]
-A POSTROUTING -s 192.168.10.0/24 -o tun0 -j MASQUERADE   
COMMIT

ここで、192.168.10.0/24 はクライアント ネットワークの IP アドレス範囲を表します。私の場合は、その範囲内で静的に定義しました。

これでほぼ完了です。次のような ufw ルールが必要になると予想しました。

sudo ufw allow out on ens9 to 192.168.10.0/24

しかし、それがなくても問題なく動作します。

関連情報