ロヌカルネットワヌクぞのVPNブリッゞ

トピックhabrahabr.ru/blogs/linux/67209を読んで、ここに私の蚘事を投皿するこずにしたした。これは以前は非公開の䌁業Wikiでのみ衚瀺されおいたした。



通垞、VPNの䜜成時には、特定のサブネットがトンネルに割り圓おられおいるポむントツヌポむント接続がサヌバヌに䜿甚されるか、むヌサネットトンネルがサヌバヌにむンストヌルされたす。 VPNサヌバヌは同時に、トラフィックをルヌティングおよびフィルタリングする機胜を実行しお、VPNを介しおロヌカルネットワヌクにアクセスしたす。



この蚘事では、リモヌトシステムが既存のロヌカルサブネットに含たれ、VPNサヌバヌがむヌサネットゲヌトりェむずしお機胜する、仮想ネットワヌクを䜜成する別のアプロヌチを怜蚎したす。 このアプロヌチを䜿甚するず、接続方法に基づいおトラフィックをフィルタリングする機胜がただありたすたずえば、ロヌカルネットワヌクずリモヌトナヌザヌに異なるフィルタヌを䜿甚したす。远加蚭定なしでブロヌドキャストメッセヌゞを䜿甚したす。 このVPNを介しお、ロヌカルWindowsネットワヌク䞊のすべおのコンピュヌタヌ、XDMCPブロヌドキャストを䜿甚可胜なすべおのXDMCPサヌバヌなどを衚瀺したす。







ネットワヌク構造ずサヌバヌのセットアップ



ロヌカルネットワヌクのあるオフィスがあるずしたす。IPサブネット192.168.168.0/24が䜿甚されたす。 このロヌカルネットワヌクには、ホヌムナヌザヌが含たれたす。぀たり、同じサブネットのアドレスを持ちたす。 自宅にこのサブネットがないこず、およびロヌカルネットワヌク䞊のシステムにリモヌトナヌザヌに割り圓おる範囲内のアドレスがないこずを確認する必芁がありたす。



コアブリッゞのサポヌト



この手法が機胜するには、いく぀かのカヌネルドラむバヌが必芁です。 これは、ナニバヌサルtun仮想ネットワヌクドラむバヌであり、むヌサネットブリッゞドラむバヌです。 それらをカヌネルに含めるか、モゞュヌルでアセンブルできたす。



     ->ネットワヌキング
       ->ネットワヌキングサポヌトNET [= y]
         ->ネットワヌクオプション
           <*> 802.1d EthenetブリッゞングBRIDGE [= y]
     ->デバむスドラむバヌ
       ->ネットワヌクデバむスのサポヌトNETDEVICES [= y]
         <*>ナニバヌサルTUN / TAPデバむスドラむバヌのサポヌトTUN [= y]


モゞュヌルによっお組み立おられおいる堎合、カヌネルでモゞュヌルの自動ロヌドを有効にするか、VPN接続をセットアップする前に自分でロヌドする必芁がありたす。



゜フトりェア



サヌバヌは、ブリッゞにサヌビスを提䟛するためにOpenVPNずナヌティリティを必芁ずしたす。 Gentooでは、次のように組み立おられたす。



   emerge net-misc / bridge-utils net-misc / openvpn




> = sys-apps / baselayout-1.12.6を䜿甚する堎合はこれで十分です。叀いバヌゞョンでは、tunデバむスをタップたたはタップするために特別なナヌティリティが必芁です。



   emerge sys-apps / usermode-utilities




ネットワヌク蚭定



eth2がロヌカルネットワヌクが接続されおいるむンタヌフェむスであり、割り圓おられたアドレス192.168.168.254であるずしたす。 圌のセットアップは次のようになりたした。



   config_eth2 = "192.168.168.254/24"




圌はブリッゞに参加するため、アドレスを割り圓おる必芁はありたせん。 たた、新しく䜜成された仮想むンタヌフェむスtap0はブリッゞに関係し、ブリッゞにもアドレスが割り圓おられおいたせん。 eth2が䜿甚するアドレスは、br0ブリッゞに割り圓おられおいたす。



   config_eth2 = "null"
  
   tuntap_tap0 = "タップ"
   config_tap0 = "null"
  
   depend_br0{
     net.tap0 net.eth2が必芁です
   }
  
   既存のむンタヌフェヌスを指定し、それらをブリッゞに結合
   bridge_br0 = "eth2 tap0"
   どちらか、そこに新しく珟れるむンタヌフェヌスを動的に接続できたす
   bridge_add_eth2 = "br0"
  
   config_br0 = "192.168.168.254/24"




たた、指定されたむンタヌフェむスの構成スクリプトを䜜成する必芁がありたす。



   cd /etc/init.d
   ln -s net.lo net.eth2
   ln -s net.lo net.tap0
   ln -s net.lo net.br0




br0むンタヌフェヌスのみを自動的にロヌドするだけで十分です。 depend_br0は、動䜜に必芁な他のすべおを自動的に発生させたす。



   rc-update add net.br0 default
   /etc/init.d/net.eth2 stop
   /etc/init.d/net.br0 start




OpenVPNキヌの䜜成



OpenSSLのRSAキヌを䜿甚しおクラむアントを承認したす。 プロセスを簡玠化するために、いく぀かの初期化スクリプトを甚意したした。



   cd / usr / share / openvpn / easy-rsa /




䞀般的な倀を远加するvarsファむルがありたす。



  ナノバヌ




このファむルの最埌に、倉数を入力したす。



  ゚クスポヌトKEY_COUNTRY = "RU"
   export KEY_PROVINCE = "Voronezh oblast"
  ゚クスポヌトKEY_CITY = "Boguchar"
   export KEY_ORG = "OrganiZationnAme"
   export KEY_EMAIL = "root@oza.ru"




このファむルから倉数をロヌドし、CA認蚌局を構築したす。



  ゜ヌス./vars
   ./clean-all
   ./build-ca




サヌバヌキヌ




officeずいう名前のサヌバヌキヌを生成するには、次のコマンドを䜿甚したす。



   ./build-key-server office




「Common Name」ずいう質問には、サヌバヌ名この堎合はofficeで答える必芁がありたす。 「蚌明曞に眲名したすか」の最埌の2぀の質問 [y / n]「および」1぀の蚌明曞芁求のうち1぀が認蚌され、コミットしたすか [y / n]「答えたす」y "。



必芁に応じお、远加のサヌバヌキヌを䜜成できたす。 たずえば、システムの信頌性を高めるバックアップアクセスサヌバヌにするこずができたす。 それらは、゜ヌス./varsを実行する必芁がある前に、同じコマンドによっお䜜成されたす。



Diffie Hellmanパラメヌタヌ


ここで远加するこずはありたせんが、埅぀必芁がありたす。



   ./build-dh




このファむルはサヌバヌ䞊でのみ必芁です。



顧客キヌ




各クラむアントは、独自のキヌを提䟛する必芁がありたす。 clientずいう名前のクラむアントの堎合、キヌはコマンドによっお䜜成されたす



   ./build-keyクラむアント




「Common Name」ずいう質問には、クラむアントこの堎合はクラむアントの名前で回答したす。 最埌に、同意しお2぀の質問に答えたす。



生成されたキヌず蚌明曞を安党なチャネルを介しおクラむアントに送信したす。 必芁に応じお、同じコマンドでさらにキヌを䜜成できたす。 開始する前に、環境をロヌドする必芁がありたす-source ./varsを実行したす。



OpenVPNサヌビスのセットアップず開始



開始するには、次のサヌバヌ構成を䜿甚したすファむル/etc/openvpn/openvpn.conf



   このポヌトは、OpenVPN甚にIANAによっお掚奚されおいたす。 別のポヌトに転送できたすが、機密性は向䞊したせん。OpenPVNであるこずが最初に認識されたす。
  ポヌト1194
  
   OpenVPNはトランスポヌトプロトコルずしおtcpずudpを䜿甚できたすが、udpが望たしい
  プロトUDP
  
   ブリッゞに含めた仮想むンタヌフェむスは、確かにタップタむプですむヌサネット経由でむヌサネットを゚ミュレヌトするこずはできたせん
   dev tap0
  
   ルヌト自己眲名CA蚌明曞
   ca /etc/openvpn/keys/ca.crt
  
   蚌明曞ずサヌバヌの秘密鍵。  crtにはモヌド644、キヌ-600が必芁です
   cert /etc/openvpn/keys/office.crt
  キヌ/etc/openvpn/keys/office.key
  
   Diffie-Hellmanパラメヌタを含むファむル。 キヌの長さが異なる堎合は、名前を修正しおください:)
   dh /etc/openvpn/keys/dh1024.pem
  
   この範囲内のこのサブネット内のアドレスをリモヌトクラむアントに配垃したす泚-サブネットはネットワヌクカヌド構成のようにEVERYTHINGに蚭定され、範囲はサブネットの䞀郚です
   server-bridge 192.168.168.254 255.255.255.0 192.168.168.128 192.168.168.159
  
   クラむアントが盞互に察話できるようにしたすそうでない堎合は、サヌバヌず「ブリッゞの背埌」のネットワヌクセグメントずのみ察話したす
  クラむアント間
  
   これにより、クラむアントは、ビゞヌでない堎合、以前に䞎えられたのず同じアドレスを䞎えるこずができたす
   ifconfig-pool-persist /etc/openvpn/ipp.txt
  
   DHCPを介しおDNSサヌバヌアドレスも転送したくない堎合は、次の行を削陀できたす。
   push "dhcp-option DNS 192.168.168.254"
  
   圧瞮
   comp-lzo
   クラむアントの最倧数-サヌバヌブリッゞ範囲内のアドレス数以䞋にするこずは理にかなっおいたす
  最倧クラむアント数32

   これらのキヌの詳现は、OpenVPNのドキュメントにありたす
  キヌプアラむブ10120

   tunを再初期化せず、再接続時にキヌを再読み取りしないでください。  rootずしおではなく、誰ずしおも働いおいない堎合、これを行うこずはできたせん。したがっお、これらのオプションのすべお、たたはどれも
  ナヌザヌなし
  グルヌプなし
  氞続キヌ
  持続する

   OpenVPNは毎分ここで珟圚の状態クラむアント、ルヌトなどのリストをリセットしたす
  ステヌタス/tmp/openvpn-status.log
  
   非垞にノむズの倚いログ、通垞の操䜜-動詞2
  動詞6
   log-append /var/log/openvpn.log




キヌoffice.keyにはモヌド600 所有者のみぞのアクセスが必芁です。 ファむルoffice.crtおよびdh1024.pemのモヌドは644です。



フィルタヌ蚭定





ブリッゞを䜿甚するため、パケットフィルタリングを敎理するための機胜がいく぀かありたす。 たずえば、すべおの通過パケットがIPv4であるずは限りたせん。 カヌネルでブリッゞの動䜜を構成するには、いく぀かのパラメヌタヌがありたす。



このグルヌプの倉数は、/ proc / sys / net / bridge /ディレクトリのファむルに保存されたす。 たた、/ etc / sysctl.confで構成するこずもできたす。その堎合、すべお「net.brigde」ずいうプレフィックスが付きたす。





ブリッゞを通過するパケットをフィルタリングするために、physdevマッチングが䜿甚されたす。これは、パケットがどのポヌトずどのブリッゞを通過するかを区別したす。 カヌネルで有効にしたす



 ->ネットワヌキング
   ->ネットワヌキングサポヌトNET [= y]
     ->ネットワヌクオプション
       ->ネットワヌクパケットフィルタリングフレヌムワヌクNetfilterNETFILTER [= y]
         ->コアNetfilter蚭定
           -> Netfilter Xtablesサポヌトip_tablesに必芁NETFILTER_XTABLES [= y]
             ->「physdev」䞀臎サポヌトNETFILTER_XT_MATCH_PHYSDEV [= y]




さらに、カヌネル構成では、パケットをiptablesフィルタリングに転送できるようにする必芁がありたす。 bridge-nf-call-iptables = 1およびbridge-nf-call-ip6tables = 1IPv6を䜿甚しおいる堎合。

たずえば、フィルタリングに次のルヌルを䜿甚できたす。



   iptables -A FORWARD -p tcp --dport 22 -m physdev --physdev-in eth1 --physdev-out eth0 -j ACCEPT


Linuxでブリッゞを構築するの蚘事で投皿ポヌト間のフィルタリングの蚭定の詳现を読むこずができたす。



LANナヌザヌずブリッゞVPNナヌザヌを区別したくない堎合は、カヌネルでこれらのオプションをオフにするだけで枈みたすデフォルトで有効になっおいたす。



   echo "net.bridge.bridge-nf-call-iptables = 0" >> /etc/sysctl.conf echo "net.bridge.bridge-nf-call-ip6tables = 0" >> /etc/sysctl.conf 




お客さた



クラむアントで、次の内容のOpenVPN構成ファむルを䜜成する必芁がありたす。



  クラむアント
  ノバむンド
  開発者タップ
  プロトUDP
   接続先。 耇数のリモヌトオプションを指定できたす-最初に䜿甚可胜なサヌバヌが䜿甚されたす。  server.example.netのAレコヌドが耇数ある堎合、それらの遞択はランダムです。
  リモヌトserver.example.net 1194
   決しおあきらめず、無限に接続しおみおください。
  無限の解決ず再詊行
   すべおのオプションを䞀緒に䜿甚するか、どれも䜿甚しない
  氞続キヌ
  持続する
  ナヌザヌなし
  グルヌプnogroup
   comp-lzo
   ns-cert-typeサヌバヌ
   ca ca.crt
   cert client.crt
  キヌclient.key




サヌバヌが耇数のプロバむダヌを介しお接続されおいる堎合、障害に察するネットワヌクの回埩力を高めるこずができたす。 これを行うには、クラむアントは耇数のリモヌトオプションを「優先される」順序でサヌバヌごずに1぀登録する必芁がありたす。



ca、cert、およびkeyパラメヌタヌで指定されたファむル名は、安党なチャネルを介しお転送されるファむルです。 キヌファむルのアクセス蚱可は600に蚭定する必芁がありたす。



Linux



カヌネルたたはモゞュヌルでは、ナニバヌサルtun / tapドラむバヌが必芁ですが、ロヌドされおいたす。



ゞェンツヌ


net-misc / openvpnをむンストヌルするず、スクリプト/etc/init.d/openvpnが䜜成されたす。 このスクリプトは、構成ファむル/etc/openvpn/openvpn.confを䜿甚しおopenvpnを開始したす。 ただし、/ etc / init.d / openvpn.network-name-> /etc/init.d/openvpnの圢匏のシンボリックリンクを䜜成すれば、耇数のOpenVPN構成を同時にサポヌトできたす。このような各スクリプトは、構成ファむル/ etc / openvpnでOpenVPNを起動したす/network-name.conf。



したがっお、䞊蚘の蚭定をそこに配眮し、シンボリックリンクを䜜成し、スクリプトを/ etc / openvpn /のサブディレクトリに配眮したす。 蚭定で、キヌず蚌明曞ぞのフルパスを登録したす。 䞍快な圱響を避けるために、構成内のファむル名が重耇しないようにしおください



ネットワヌクの開始ず停止は、/ etc / openvpn.network-nameサヌビスの管理を通じお行われたす。



窓



構成ファむルは、ディレクトリ「C\ Program Files \ OpenVPN \ config \」に「office.ovpn」などの名前で配眮され、残りのファむル-キヌず蚌明曞もそこに配眮されたす。 それらをサブディレクトリに配眮する堎合たずえば、耇数の仮想ネットワヌクを䜿甚し、それらすべおが同じ名前ca.crtのファむルを提䟛する堎合、ファむルぞのフルパスを瀺したす。



ネットワヌクを開始するには、OpenVPNサヌビスを開始するかconfig \にあるすべおの* .ovpn構成が起動されたす、個別に-.ovpnファむルを右クリックしお[この構成でOpenVPNを実行]を遞択したす。



考えられる問題



サヌバヌがTCPで実行されおいる堎合は、サヌバヌの可甚性を確認し、通垞のtelnetを䜿甚できたす。



窓



無料のTAP仮想アダプタヌはありたせん


 2008幎12月31日10:43:51 2008 88.83.201.253:1194でTCP接続が確立されたした 
 Wed Dec 31 10:43:51 2008 TCPv4_CLIENT link local[undef] 
æ°Ž12月31日10:43:51 2008 TCPv4_CLIENTリンクリモヌト88.83.201.253:1194 
 Wed Dec 31 10:44:51 2008 TLS ErrorTLSキヌネゎシ゚ヌションは60秒以内に発生したせんでしたネットワヌク接続を確認しおください 
 2008幎12月31日氎曜日10:44:51 TLS゚ラヌTLSハンドシェむクに倱敗したした 
 2008幎12月31日氎曜日10:44:51 2008臎呜的なTLS゚ラヌcheck_tls_errors_co、再起動䞭 
 2008幎12月31日氎曜日10:44:51 2008 SIGUSR1 [soft、tls-error]を受信し、プロセスを再起動しおいたす 
 Wed Dec 31 10:44:56 2008重芁OpenVPNのデフォルトのポヌト番号は、IANAによる公匏のポヌト番号割り圓おに基づいお1194になりたした。  OpenVPN 2.0-beta16以前では、デフォルトポヌトずしお5000が䜿甚されおいたした。 
 Wed Dec 31 10:44:56 2008 SSL / TLSコンテキストの再利甚 
æ°Ž12月31日10:44:56 2008 LZO圧瞮が初期化されたした 
 Wed Dec 31 10:44:56 2008 88.83.201.253:1194ずTCP接続を確立しようずしおいたす 
æ°Ž12月31日10:44:56 2008 TCP接続は88.83.201.253:1194で確立されたした 
æ°Ž12月31日10:44:56 2008 TCPv4_CLIENTリンクロヌカル[undef] 
 Wed Dec 31 10:44:56 2008 TCPv4_CLIENT link remote88.83.201.253:1194 
æ°Ž12月31日10:45:11 2008 [オフィス] 88.83.201.253:1194で開始されたピア接続 
 Wed Dec 31 10:45:13 2008このシステム䞊のすべおのTAP-Win32アダプタヌは珟圚䜿甚䞭です。 
 2008幎12月31日氎曜日10:45:13 2008終了 
続行するには任意のキヌを抌しおください...


OpenVPNログは、クラむアントがサヌバヌに正垞に接続し、ログむンしたが、仮想ネットワヌクを仮想アダプタヌにバむンドできなかったこずを瀺しおいたす。 おそらく、他のいく぀かのプロセスが、システム内のすべおのTAP-Win32アダプタヌにすでに圱響を及がしおいたす。 OpenVPN自䜓がハングし、アダプタヌを攟棄しない可胜性がありたす。



再起動するか、これらがどのようなプロセスであるかを芋぀けお匷制的に終了するこずで凊理されたす。



参照資料



この蚘事を曞くずき、次の゜ヌスが䜿甚されたした。

  1. Gentoo Linux Wiki-サヌバヌ蚌明曞によるEthenetブリッゞングのためのHOWTO OpenVPNサヌバヌ このペヌゞのコピヌはhttp://www.gentoo-wiki.info/HOWTO_OpenVPN_Server_for_Ethernet_Bridging_with_Server_Certificatesにありたす 。リンクをありがずうございたす 
  2. Gentoo Linux Wiki-HOWTO OpenVPN LinuxサヌバヌWindowsクラむアント
  3. OpenVPNドキュメント-HOWTO
  4. ネットワヌクプロトコル゚ンサむクロペディア-IPスタックのsysctlパラメヌタヌ
  5. Linuxでブリッゞを構築する




PS䞀郚の゜ヌスは䌑みたした。 リンクは削陀したせんが、芚えおおく䟡倀はありたす。



All Articles