web-dev-qa-db-ja.com

WiFi経由でVPN接続を共有する

同じルーターに2台のコンピューターを接続しています10.9.8.1

  • コンピューターA10.9.8.2 Windows 10 InsiderPreviewを実行します。 Insider PreviewのVPNが壊れているため、ロールバックできません。 :(
  • コンピューターB10.9.8.3 Linux Mintを実行し、openconnectを介してVPN接続をセットアップします。

ipconfigがB(フラグメント)について報告する内容は次のとおりです。

tun0      Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00  
          inet addr:10.23.8.183  P-t-P:10.23.8.183  Mask:255.255.255.255
          inet6 addr: fe80::7fb2:5598:b02e:e541/64 Scope:Link
          UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1410  Metric:1
          RX packets:24 errors:0 dropped:0 overruns:0 frame:0
          TX packets:42 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:500 
          RX bytes:7005 (7.0 KB)  TX bytes:3243 (3.2 KB)

wlp3s0    Link encap:Ethernet  HWaddr 60:67:20:36:6f:a4  
          inet addr:10.9.8.3  Bcast:10.9.8.255  Mask:255.255.255.0
          inet6 addr: fe80::8e96:7526:ff54:d1be/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:22511502 errors:0 dropped:0 overruns:0 frame:0
          TX packets:16052631 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:24451442281 (24.4 GB)  TX bytes:6038264731 (6.0 GB)

コンピューターAからVPNの背後にあるリソースにアクセスする必要があります。

私は、ルーターを他のすべてに直接使用しながら、Bを介してVPNリソースにアクセスするようにAのルートを構成することを考えています。

最悪の場合、2台のコンピューターを直接接続できますが、可能であればそれを避けたいと思います。

Windowsでは、任意のアダプターを共有としてマークするだけです。しかし、Linuxで同じことをすると、アダプターは接続を失います。それを正しく行う方法がわからない。

ルーティング

ホストAでは、宛先ネットワークのすべてのトラフィックをホストBにルーティングする必要があります。これは192.168.0.0/24のようなものだと思います

linuxの場合(ホストA上):

ip r a 192.168.0.0/24 via 10.9.8.3 dev eth0

windowsの場合(ホストA上):

route ADD 192.168.0.0 MASK 255.255.255.0 10.9.8.3

転送

ルーティングが行われると、ネットワーク192.168.0.0/24のすべてのパッケージがホストBに送信されます。

ホストBでパッケージをwlp3s0からtun0に転送できるようにするには、IP転送を有効にする必要があります。

すべてのインターフェースのIP転送を一時的に有効にするには:

sysctl net.ipv4.conf.all.forwarding=1

この変更を永続的に有効にするには、/etc/sysctl.confに新しい行を追加します。

net.ipv4.conf.all.forwarding = 1

インターフェース設定に加えて、iptablesがアクティブであり、パッケージ転送を許可する必要がある場合があります。

iptablesがアクティブかどうかを確認するには(少なくともFORWARDチェーンの場合):

iptables -L FORWARD -nv

チェーンにルールがなく、ポリシーにACCEPTと記載されている場合は、問題ありません。そうでない場合は、192.168.0.0/24の転送を許可するために関連するルールを追加する必要があります。

192.168.0.0/24wlp3s0へのすべてのパッケージの転送を許可します。

iptables -I FORWARD -i wlp3s0 -d 192.168.0.0/24 -j ACCEPT
iptables -I FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT

RELATED,ESTABLISHEDは、返品パッケージを自動的に許可します。


NAT

これで、転送が設定された後、パッケージがトンネルに送信されます。しかし、VPNの背後にあるリモートネットワークがローカルネットワークを認識していない限り(通常はそうです)、ローカルネットワークから来てVPNにアドレスに入るすべてのパッケージをNATする必要があります。 VPNサーバー(tun0のIP)から取得しました。

これを行うには、MASQUERADEテーブルにPOSTROUTINGルールを作成する必要があります。

iptables -t nat -I POSTROUTING -o tun0 -j MASQUERADE

これにより、tun0上のすべての送信パッケージがインターフェースのIPに変換されます。

2
xx4h