Mac OSXでOpenVPNブリッジを構築する

かつて、遠隔地からローカルエリアネットワークにアクセスする必要がありました。 このタスクを実行するために、リモートVPNアクセスが構成されたiMacにOSXサーバーがインストールされました。 mDNS(Bonjour)を除いて、すべてがうまく機能しました。 結局のところ、このVPN実装はマルチキャストをサポートしていません。 また、ローカルネットワークでのみ動作するいくつかの特別なアプリケーションが存在するため、非常に重要でした。



短い検索の後、この問題に対するいくつかの解決策がありました。 そのうちの1つは、無料でNetwork Beaconプログラムをインストールし、それを使用してBonjourサービスへのパスを作成しました。 別のソリューションが支払われ、特別なShareToolアプリケーションのインストールが含まれました。これは、まず独自のSSHトンネルを構築し、次にトンネルを介してサーバー側のサービスに関する情報を送信できます。



この決定には2つの欠点があります。 1つ目は、各車のライセンスを購入する必要があることです。 第二に、この解決策はまだ松葉杖であるということです。 そして、私は可能な限りすべてをきれいにしたかった。



解決策は、仮想「タップ」アダプターを備えたOpenVPNベースのVPNブリッジを構築することでした。

しかし、それを行う方法は? ネットワーク上で、このような構成をセットアップするためのさまざまな指示を見つけましたが、OSXのブリッジを構築するための単一のオプションは見つかりませんでした。



そして、ワイヤレスネットワークを拡張するためにブリッジをどのように設定したかを思い出し、すべてを同様の方法で行うことにしました。



ステップ1-OpenVPNを構成する


以降のすべての手順には、スーパーユーザー権限が必要です。 したがって、ターミナルを開いて、すぐに無制限の可能性に入ります。



sudo -s
      
      







まず、TunTapドライバーをインストールします

次のリンクからダウンロードできます: tuntap_20111101.tar.gz

解凍してインストーラーを実行します。 インストールが完了したら、モジュールをカーネルにロードします。



 kextload /Library/Extensions/tun.kext kextload /Library/Extensions/tap.kext
      
      







次に、MacPortsを介してOpenVPN自体をインストールします。



 port install openvpn2
      
      







まだ知らない人のために-Easy-RSAはOpenVPNパッケージの一部ではなくなったので、ここから個別にダウンロードしてください:

easy-rsa-release-2.x.zip



利便性を高めるため、「openvpn2」フォルダーの内容を「/ etc / openvpn」にコピーします。



 cp -r /opt/local/share/doc/openvpn2 /etc/openvpn
      
      







Easy-RSA 2に解凍します。



 mkdir /etc/openvpn/easy-rsa unzip –j easy-rsa-release-2.x.zip easy-rsa-release-2.x/easy-rsa/2.0/\* -d /etc/openvpn/easy-rsa/2.0/
      
      







varsを自分でルールし、キーを生成します。 「vars」の編集では、証明書とキーホルダーに関する情報を修正し、(必要に応じて)Diffie-Hellmanパラメーターの長さを変更します。



 cd /etc/openvpn/easy-rsa/2.0 nano vars source vars ./clean-all ./build-ca
      
      







サーバー用。

 ./build-key-server server
      
      







そして顧客。

 ./build-key client
      
      







結論として、Diffie-Hellmanパラメーターを生成します。

 ./build-dh
      
      







「/ etc / openvpn / sample-config-files /」からサンプルを編集するか、新しい「server.conf」を作成します。

たとえば、私のオプション



 #   port 1194 #  proto udp #   .  . dev tap #      ca /etc/openvpn/easy-rsa/2.0/keys/ca.crt cert /etc/openvpn/easy-rsa/2.0/keys/server.crt key /etc/openvpn/easy-rsa/2.0/keys/server.key #          vars. "dh1024.pem"  "dh2048.pem" dh /etc/openvpn/easy-rsa/2.0/keys/dh1024.pem #      ifconfig-pool-persist /etc/openvpn/ipp.txt #      . server-bridge 192.168.2.2 255.255.255.0 192.168.2.224 192.168.2.254 #       push "route 192.168.2.0 255.255.255.0" #          script-security 2 up /etc/openvpn/scripts/up.sh #         . #          . learn-address /etc/openvpn/scripts/routes.sh #       . client-to-client #           duplicate-cn #    10        60    . keepalive 10 60 #   comp-lzo #        persist-key #       OpenVPN persist-tun #   .        1   0 verb 3
      
      







次の段階に進み、MacOS自体を使用してブリッジを作成します。



ステップ2-橋の建設


システム環境設定を起動し、ネットワークを選択します。

画像



歯車をクリックして、[仮想インターフェイスの管理]を選択します。





次に、プラス記号をクリックして、「新しいブリッジ...」を選択します。



ここでは、OpenVPNサーバーが実行されていても、タップインターフェイスは表示されません。 しかし、判明したように、すべての「使いやすさ」により、MacOは1つのインターフェイスでネットワークブリッジを作成できます。 そして、これはまさに私たちが必要とするものです。 ネットワークに接続しているアダプタを選択し、裁量でブリッジを呼び出します。 [作成]と[準備完了]をクリックします。



次に、ネットワークインターフェイスの設定と同じ方法でブリッジ接続を設定し、[適用]をクリックします。





これで、ネットワークが構成され、ウィンドウを閉じることができます。 もはや必要ありません。

これで、1人のメンバーがいるブリッジの存在をターミナルで確認できます。 ifconfigコマンドを起動して、作成時に選択したインターフェイスである1つのメンバーを持つbridge0ブリッジがあることを確認します。





次のステップは、2つの機能を実行するスクリプトを作成することです。 まず、カーネルにパケットを渡すように説得し、次にブリッジにタップインターフェイスを追加します。



ステップ3-起動


ファイル「/etc/openvpn/scripts/up.sh」を作成します。

 #!/bin/bash #    ARP    /usr/sbin/sysctl -w net.link.ether.inet.proxyall=1 #          /usr/sbin/sysctl -w net.inet.ip.forwarding=1 #   tap   /sbin/ifconfig bridge0 addm tap0
      
      







保存して実行可能にします。

 chmod +x /etc/openvpn/scripts/up.sh
      
      





このスクリプトへのパスはサーバー構成に書き込まれ、仮想インターフェースの作成後に開始されます。



構成の確認

 /opt/local/sbin/openvpn2 –config /etc/openvpn/server.conf
      
      





サーバーは起動しましたか? もしそうなら、「Control + C」で彼を殺します。 エラーでクラッシュした場合は、どれを調べて修正します。



次に、サーバーの起動に進みます。



次の内容のファイル「/Library/LaunchDaemons/org.openvpn.bridge.plist」を作成します。

 <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>KeepAlive</key> <true/> <key>Label</key> <string>org.openvpn.bridge</string> <key>ProgramArguments</key> <array> <string>/opt/local/sbin/openvpn2</string> <string>--config</string> <string>/etc/openvpn/server.conf</string> </array> <key>RunAtLoad</key> <true/> </dict> </plist>
      
      







サーバーを保存して起動します。

 launchctl load /Library/LaunchDaemons/org.openvpn.bridge.plist
      
      







サーバーが起動した状態ですべて。 クライアントに渡します。



ステップ4-顧客


MacOSからクライアントを実行するオプションのみを簡単に説明します。 MacBookからこのサーバーに接続し、XcodeとMacPortsをインストールする必要がないため、 Tunnelblickなどの包括的なソリューションを使用することにしました



構成フォルダーを作成します。 たとえば、デスクトップ上。 サーバー上でそれを簡単にします。 さらに、その理由は明らかです。

フォルダーに「config.ovpn」ファイルを作成し、構成を規定します。



例。

 client dev tap proto udp #       #       IP. remote my.server.tld 1194 resolv-retry infinite nobind persist-key persist-tun ca ca.crt cert client.crt key client.key comp-lzo verb 3
      
      







最初に作成したキーと証明書を同じフォルダーに保存してコピーします。



 cp /etc/openvpn/easy-rsa/2.0/keys/ca.crt /Users/username/Desktop/MyVpnConfig/ cp /etc/openvpn/easy-rsa/2.0/keys/client.crt /Users/username/Desktop/MyVpnConfig/ cp /etc/openvpn/easy-rsa/2.0/keys/client.key /Users/username/Desktop/MyVpnConfig/
      
      







キーと証明書をコピーした後、それらの所有者を変更する必要があります。 構成を作成するユーザーと一致する必要があります。 1つは、スーパーユーザーの楽園を離れることです。



 chown -R username:staff /Users/username/Desktop/MyVpnConfig exit
      
      







次に、構成とキーでフォルダーの名前を変更し(フォルダー名は「Tunnelblick」の構成の名前になります)、拡張子「.tblk」を追加します



 mv /Users/username/Desktop/MyVpnConfig /Users/username/Desktop/MyVpnConfig.tblk
      
      







その後、任意の便利な方法でTunnelblickがインストールされたクライアントに構成を転送します。 その後、「Finder」を開き、構成の場所を見つけて、それを2回クリックします。 構成に自動的に追加されます。

「Tunnelblick」を実行し、リストから設定を選択して、「接続」ボタンをクリックします。 そして、すべてが正しく行われていれば、数秒後に、すべてのマルチキャストプロトコルを含むリモートLANへの完全なアクセスが可能になります。



参照資料
provideotech.org/bonjour-and-vpn-or-how-i-learned-to-stop-googling-and-love-simplicity

www.yazsoft.com/products/sharetool

tuntaposx.sourceforge.net

code.google.com/p/tunnelblick




All Articles