web-dev-qa-db-ja.com

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

Ubuntu 18.04 LTSを実行するLinuxのかなり新しいもの。

MacosハードウェアとOSで実行できる機能を複製したいと考えています。OSレベルのVPN接続をハードウェアインターフェイスと共有します。

この特定のケースでは、ラップトップはunsercure wifiに接続し、VPNトンネルを確立します。VPNはイーサネットインターフェイスと共有され、その上でクライアントに安全なwifi /イーサネットを提供するDD-WRTルーター(double-nat、明らかに)を接続します。ゲートウェイに実際のOSを備えたラップトップを使用する理由は、ブラウザーを介してキャプティブポータルを処理するためです(多くのホテルがそうです)。

この設定では、VPN接続のみが共有されるため、クライアントのトラフィックがゲートウェイwifiを介して漏洩することは不可能になります。 VPNがドロップすると、クライアントはまったく接続できなくなります。 macOSでl2tpを実行するのに十分簡単です。

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

ありがとうございました!

3
Hresna

試行錯誤を繰り返し、別のフォーラムからの助けを得て、なんとかこれを機能させることができました。 Linuxでのサポートの向上と全体的なスループットの向上を考慮して、OpenVPNプロトコルに切り替えました。

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

ここに私のソリューションの完全な詳細: https://www.linuxquestions.org/questions/linux-networking-3/share-vpn-with-ethernet-interface-4175655027/

ゲートウェイデバイス自体のVPN kill-switchは次のようになります。

/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メソッドを使用しないでください。キルスイッチがバイパスされます。代わりに、* filter見出しのすぐ上にnatセクションを追加して、ファイル/etc/ufw/before.rulesを編集します。

### 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

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

1
Hresna