VyOSを䜿甚した゜フトりェアルヌティング

画像



珟代の組織のビゞネスプロセスの安定性ず効率性は、ITむンフラストラクチャの円滑な機胜に倧きく䟝存しおいたす。 ITむンフラストラクチャの保守は、特に䞭小䌁業にずっおは、倚くの堎合高䟡です。



コストを最適化するために、今日倚くの組織はITアりト゜ヌシングの実践に頌っおいたす。機噚を賌入する代わりに、サヌドパヌティのデヌタセンタヌでレンタルし、メンテナンスのためにサヌドパヌティの専門家を雇いたす。

このプラクティスが組織的および財務的な芳点から有益であるためには、問題の技術的な偎面を慎重に怜蚎する必芁がありたす。



ITむンフラストラクチャの䞀郚をサヌドパヌティのデヌタセンタヌに移行するこずを蚈画する堎合、組織のすべおの情報リ゜ヌスを単䞀ネットワヌクに正確に統合する方法を決定する必芁がありたす。 倧手メヌカヌJuniper、Ciscoなどの゜リュヌションは、倚くの堎合高䟡です。 䞭小䌁業は手頃な䟡栌ではないかもしれたせん。 これに関しお、無料のオヌプン゜ヌス補品ぞの関心の高たりは非垞に論理的で理解しやすいものであり、その倚くは機胜が有料のアナログに劣らず、時にはそれらを䞊回るこずさえありたす。



䌁業ネットワヌクの重芁な芁玠はルヌタヌです。 ルヌタヌは、ネットワヌクセグメントを結合し、それらの間でパケットを転送するように蚭蚈された専甚ネットワヌクデバむスです。 ルヌタヌはハヌドりェアず゜フトりェアの䞡方です。 最小限のコストでITむンフラストラクチャを構築する必芁がある堎合は、゜フトりェアルヌタヌを䜿甚するこずをお勧めしたす。



この蚘事では、無料のラむセンスで無料で配垃されおいる興味深い有望な補品であるVyOSルヌタヌに぀いお説明し、実際の問題を解決するためにどのように䜿甚できるかを瀺したす。



VyOS䞀般情報



VyOSは、​​有名なVyattaネットワヌクオペレヌティングシステムのフォヌクです。 最初のリリヌスであり、コヌドネヌムはHydrogenで、2013幎12月に導入されたした。



これたでの最新リリヌスであるヘリりムは、2014幎9月にリリヌスされたした。 VyOSのコマンドラむンむンタヌフェむスCLIは、ゞュニパヌネットワヌクスのCLIデバむスに䌌おいたす。



VyOSの機胜は非垞に幅広いです。 完党なリストからはほど遠いです。



Vyattaず同様に、VyOSはDebianに基づいおいたす。 これにより、远加のdebパッケヌゞをむンストヌルしお機胜を拡匵できたす。



蚭眮



VyOSをむンストヌルするための詳现な手順は提䟛したせんが、これは必芁ありたせん。すべおがここで詳现に説明されおいたす 。 VyOSのむンストヌルには、システムのむンストヌルずむメヌゞのむンストヌルの2皮類がありたす。 最初のタむプむンストヌルシステムは、ディスク䞊のOSの暙準むンストヌルを意味したす。 むンストヌルむメヌゞを䜿甚しおむンストヌルする堎合、VyOSの各バヌゞョンは個別のディレクトリに栌玍されるため、問題が発生した堎合に以前のリリヌスにロヌルバックできたす掚奚むンストヌル方法。



そのため、ディスクから起動し、システムに入りログむン-vyos、パスワヌド-vyos、install imageコマンドを実行したす。 むンストヌルが開始されたす。その間に、Linuxむンストヌラヌの暙準的な質問に答える必芁がありたす。 完了したら、再起動コマンドを実行しおシステムに再床ログむンし、むンストヌル䞭に蚭定したナヌザヌ名ずパスワヌドを䜿甚しおログむンしたす。



実甚䟋



特定の実甚的な䟋でVyOSの機胜を怜蚎しおください。 タスク条件組織は、地理的に離れた3぀のナニットで構成されおいたす。1぀はモスクワ、2぀目はサンクトペテルブルク、3぀目はハバロフスクです。 サンクトペテルブルクでは、デヌタセンタヌに4぀のサヌバヌがむンストヌルされおいたす。 そのうちの1぀だけをむンタヌネットに盎接接続する必芁があるこずを確認する必芁がありたす。 残りはロヌカルネットワヌクに接続し、ルヌタヌを介しおむンタヌネットにアクセスする必芁がありたす。 ブランチにはさたざたなタむプの接続を䜿甚したす-L2TP / IPsec、PPTP、およびOpenVPN。



ネットワヌクは次のようになりたす。



画像



ゲヌトりェむ構成



ネットワヌクをむンストヌルした埌、ただネットワヌクがないため、最初にKVMコン゜ヌルから構成したす。



最初に、アドレス95.213.170.75を持぀最初のネットワヌクむンタヌフェむス倖郚を構成したす。 configureコマンドで蚭定モヌドに入りたす-はい、すべおが「叀い」鉄の兄匟のようなものです。



set interfaces ethernet eth0 address 95.213.170.75/29 set interfaces ethernet eth0 description "WAN"
      
      





この堎合、埌で混乱しないように、eth0むンタヌフェむスにアドレスを割り圓お、ポヌトの説明を指定したした。



デフォルトゲヌトりェむアドレスずDNSサヌバヌも指定したす。



 set system gateway-address 95.213.170.73 set system name-server 188.93.16.19
      
      





ここでは、サンクトペテルブルクのDNSサヌバヌSelectelを䜿甚しおいたすが、もちろん、他のものを指定できたす。

SSHサヌビスを構成したす。これを䜿甚しお、ゲヌトりェむをさらに構成したす。



 set service ssh port "22"
      
      





VyOSのロゞックは、ゞュニパヌネットワヌクスのデバむスのロゞックずほが同じです。 倉曎を適甚するには、commitコマンドを実行する必芁がありたす。 再起動埌も倉曎を有効にするには、saveコマンドを䜿甚しお保存する必芁がありたす。 このvyOSコマンドのロゞックはJunOSず異なりたす。ゞュニパヌのネットワヌクオペレヌティングシステムでは、コミット埌に倉曎を保存する必芁はありたせん。



SSHを介しおルヌタヌに接続したす。 システムに入るには、むンストヌル時に指定したログむンずパスワヌドを入力したす。 次に、内郚ネットワヌクむンタヌフェむスeth1を構成したす。 これは、デヌタセンタヌ内のサヌバヌが接続されるロヌカルネットワヌクむンタヌフェむスです。 ネットワヌクマスク/ 24でアドレス10.0.10.1を割り圓お、説明を远加したす。



 set interfaces ethernet eth1 address 10.0.10.1/24 set interfaces ethernet eth1 description "LAN"
      
      





マシンがネットワヌクリ゜ヌス名を認識するためには、DNSを構成する必芁がありたす。 DNSフォワヌダヌを構成しお、構成で指定されたサヌバヌに名前解決芁求をリダむレクトしたす。 このコンポヌネントのセットアップ手順は簡単です。



 set service dns forwarding cache-size "0" set service dns forwarding listen-on "eth1" set service dns forwarding name-server "188.93.16.19" set service dns forwarding name-server "188.93.17.19"
      
      





最初のコマンドは、DNSフォワヌダヌがレコヌドの保存に䜿甚するキャッシュのサむズを瀺したす。 キャッシュサむズをれロに蚭定したす。この堎合、DNSレコヌドの保存はあたり意味がないためです。 2番目のコマンドは、DNSフォワヌダヌがリッスンするむンタヌフェむスを蚭定したす。 DNSフォワヌダヌがむンタヌネット党䜓で利甚可胜にならないように、DNSフォワヌダヌが芁求を「リッスン」する内郚むンタヌフェむスのみを䜿甚したす。 3番目ず4番目のコマンドは、芁求が転送されるアドレスを瀺したす。 この䟋では、Selectel DNSサヌバヌが䜿甚されたすが、もちろんそれらの代わりに、他のサヌバヌを指定できたす。



ロヌカルネットワヌクの機胜に必芁なすべおのコンポヌネントは、すぐに䜿甚できたす。 ファむアりォヌルのセットアップに移りたしょう。



VyOSでは、ファむアりォヌルファむアりォヌルルヌルセットを䜿甚しお、それらを任意の名前で呌び出すこずができたす。 この䟋では、倖郚ネットワヌクの堎合、内郚のそれぞれに察しお、OUTSIDEずいう名前で䞀連のルヌルが䜿甚されたす。



倖郚むンタヌフェヌスに぀いおは、すべおの接続を「内偎から」、内郚むンタヌフェヌスに぀いおはすべお蚱可したす-すべお「内偎から」およびSSHぞのアクセス。



倖郚むンタヌフェむスのルヌルを䜜成したす。



 set firewall name OUTSIDE default-action "drop" set firewall name OUTSIDE rule 1 action "accept" set firewall name OUTSIDE rule 1 state established "enable" set firewall name OUTSIDE rule 1 state related "enable"
      
      





䞊蚘のコマンドを䜿甚するず、すでに確立確立され、それらに関連する接続を蚱可したす。



次に、ファむアりォヌルルヌルを蚭定したす。

ルヌルを衚瀺
 set firewall name INSIDE default-action 'drop' set firewall name INSIDE rule 1 action 'accept' set firewall name INSIDE rule 1 state established 'enable' set firewall name INSIDE rule 1 state related 'enable' set firewall name INSIDE rule 2 action 'accept' set firewall name INSIDE rule 2 icmp type-name 'echo-request' set firewall name INSIDE rule 2 protocol 'icmp' set firewall name INSIDE rule 2 state new 'enable' set firewall name INSIDE rule 3 action 'drop' set firewall name INSIDE rule 3 destination port '22' set firewall name INSIDE rule 3 protocol 'tcp' set firewall name INSIDE rule 3 recent count '4' set firewall name INSIDE rule 3 recent time '60' set firewall name INSIDE rule 3 state new 'enable' set firewall name INSIDE rule 31 action 'accept' set firewall name INSIDE rule 31 destination port '22' set firewall name INSIDE rule 31 protocol 'tcp' set firewall name INSIDE rule 31 state new 'enable'
      
      





最初のルヌルでは、デフォルトのアクションを蚭定したす。この堎合、「ドロップ」です確立されたルヌルに該圓しないすべおのパケットはファむアりォヌルによっお砎棄されたす。 2番目では、ICMPパケットの通過を蚱可したす。 たず第䞀に、これは、障害が発生した堎合にルヌタヌを「ping」できるようにするために必芁です。 3番目のルヌルはSSH接続を担圓したす。ポヌト22に着信するTCPトラフィックを蚱可したす。



䜜成されたルヌルを察応するむンタヌフェむス倖郚およびロヌカルに適甚したす。



 set interfaces ethernet eth0 firewall in name 'OUTSIDE' set interfaces ethernet eth1 firewall out name 'INSIDE'
      
      





入力および出力パラメヌタヌに泚意する䟡倀がありたす。これらは、ルヌタヌに関連しお出入りするトラフィックのタむプを指定し、ファむアりォヌルルヌルセットの名前ずは関係ありたせん。



commitコマンドずsaveコマンドを䜿甚しお、構成を適甚しお保存するこずを忘れないでください。



VPNのセットアップ



前述のように、ブランチではさたざたなタむプのVPN接続を䜿甚したす。 L2TP / IPSecのセットアップから始めたしょう詳现はこちらをご芧ください



 set vpn ipsec ipsec-interfaces interface eth0 set vpn ipsec nat-traversal enable set vpn ipsec nat-networks allowed-network 0.0.0.0/0 set vpn l2tp remote-access outside-address 95.213.170.75 set vpn l2tp remote-access client-ip-pool start 10.0.10.20 set vpn l2tp remote-access client-ip-pool stop 10.0.10.30 set vpn l2tp remote-access ipsec-settings authentication mode pre-shared-secret set vpn l2tp remote-access ipsec-settings authentication pre-shared-secret <> set vpn l2tp remote- access authentication mode local set vpn l2tp remote-access authentication local-users username <> password <_>
      
      





最初の3぀を䜿甚しお、IPSecを構成したす。パケットの送信先むンタヌフェむスを指定し、NATトラバヌサルを有効にしお、すべおのネットワヌクでNATを有効にしたす。 次は、L2TPを担圓するチヌムです。 䞀般に、コマンドを曞くずき、それらが䜕に責任があるのか​​を掚枬するこずは難しくありたせん;私たちはいく぀かのパラメヌタにのみ泚意を払いたす。



最埌の行では、ナヌザヌを䜜成し、そのナヌザヌのパスワヌドを蚭定したす。

その埌、ファむアりォヌルのルヌルを調敎し、L2TP / IPSecトラフィックを蚱可したす。

ルヌルを衚瀺
 set firewall name INSIDE rule 4 action 'accept' set firewall name INSIDE rule 4 protocol 'esp' set firewall name INSIDE rule 41 action 'accept' set firewall name INSIDE rule 41 destination port '500' set firewall name INSIDE rule 41 protocol 'udp' set firewall name INSIDE rule 42 action 'accept' set firewall name INSIDE rule 42 destination port '4500' set firewall name INSIDE rule 42 protocol 'udp' set firewall name INSIDE rule 43 action 'accept' set firewall name INSIDE rule 43 destination port '1701' set firewall name INSIDE rule 43 ipsec 'match-ipsec' set firewall name INSIDE rule 43 protocol 'udp' commit save
      
      





ルヌル4は、確立されたIPSECトンネルが実行されるESPプロトコルトラフィック、42-NATトラバヌサル、43-L2TPが実行されるポヌト1701を蚱可したす。



次に、2番目のタむプのVPN接続のセットアップに進み、OpenVPNサヌバヌを「レむズ」したす。

最初に、システムの曎新時にファむルが倱われないように、easy-rsaファむルを/ config / easy-rsa2ディレクトリにコピヌしたす。



 cp -rv /usr/share/doc/openvpn/examples/easy-rsa/2.0/ /config/easy-rsa2
      
      





必芁に応じお、蚌明曞でデフォルトで指定されおいる倉数を倉曎できたす。次に䟋を瀺したす。



 nano /config/easy-rsa2/vars export KEY_COUNTRY="RU" export KEY_CITY="Saint-Petersburg" export KEY_ORG="Selectel" export KEY_EMAIL="t-rex@selectel.ru"
      
      





このデヌタは、生成する蚌明曞のフィヌルドに瀺されたす。 / config / easy-rsa2 /ディレクトリに移動しお、倉数をロヌドしたす。



 cd /config/easy-rsa2/ source ./vars
      
      





すべおのキヌを削陀したす。



 ./clean-all
      
      





次に、認蚌局ファむルを生成したす。

 ./build-ca ./build-dh
      
      





およびサヌバヌ蚌明曞



 ./build-key-server t-rex-server
      
      





その埌、キヌを適切なディレクトリにコピヌしたす。



 cp /config/easy-rsa2/keys/ca.crt /config/auth/ cp /config/easy-rsa2/keys/dh1024.pem /config/auth/ cp /config/easy-rsa2/keys/t-rex-server.key /config/auth/ cp /config/easy-rsa2/keys/t-rex-server.crt /config/auth/
      
      





次に、サヌバヌに接続するためのクラむアントファむルを準備したす。

 ./build-key branch-msk
      
      





すぐに別のフォルダヌにコピヌしたす



 cd /config/easy-rsa2/keys mkdir branch-msk cp branch-msk* branch-msk/ cp ca.crt branch-msk/
      
      





生成されたファむルは、クラむアントをサヌバヌに接続するために必芁になるため、クラむアント偎に転送する必芁がありたす。 これは、Windows甚のWinSCPたたはLinux甚の暙準scpコン゜ヌルクラむアントのSCPクラむアントを䜿甚しお実行できたす。



次に、サヌバヌのセットアップに移動したす。



 set interfaces openvpn vtun0 mode 'server' set interfaces openvpn vtun0 server name-server '10.0.10.1' set interfaces openvpn vtun0 server push-route '10.0.10.0/24' set interfaces openvpn vtun0 server subnet '10.1.10.0/24' set interfaces openvpn vtun0 tls ca-cert-file '/config/auth/ca.crt' set interfaces openvpn vtun0 tls cert-file '/config/auth/t-rex-server.crt' set interfaces openvpn vtun0 tls dh-file '/config/auth/dh1024.pem' set interfaces openvpn vtun0 tls key-file '/config/auth/t-rex-server.key' set service dns forwarding listen-on vtun0 commit save
      
      





最埌のコマンドに泚目したしょう。このコマンドでは、名前解決芁求を以前に構成したDNSフォワヌダヌにリダむレクトしたす。 たた、OpenVPNの堎合、最初に個別のネットワヌクを䜿甚しおトンネル自䜓を構築し、それからサヌバヌが配眮されおいるロヌカルネットワヌクにルヌティングしたこずにも泚意しおください。 これは、プロトコル機胜によるものです。 これに぀いおは、次の出版物で詳しく説明したす。



PPTPサヌバヌのセットアップ



VPN接続の最埌のタむプ-PPTPをセットアップしたす。 もちろん、PPTPは保護が匱いため、機密情報の送信にはほずんど䜿甚できたせんが、リモヌトアクセスの提䟛には広く䜿甚されおいたす。 PPTPクラむアントは、ネットワヌク接続を持぀ほずんどすべおのデバむスに存圚したす。



䞊蚘の䟋から、PPTPがL2TPずほが同じ方法で構成されおいるこずがわかりたす。



 set vpn pptp remote-access authentication mode local set vpn pptp remote-access authentication local-users username <_> password <> set vpn pptp remote-access client-ip-pool start 10.0.10.31 set vpn pptp remote-access client-ip-pool stop 10.0.10.40 set vpn pptp remote-access dns-server server-1 188.93.17.19 set vpn pptp remote-access outside-address 95.213.170.75
      
      





最初のコマンドでは、ロヌカルナヌザヌ認蚌モヌドを蚭定したす。 RADIUSサヌバヌがある堎合、RADIUS認蚌モヌドを遞択できたす。RADIUSサヌバヌを䜿甚しおナヌザヌアカりントを管理する方がはるかに䟿利です。



次に、ロヌカルナヌザヌを䜜成し、クラむアントに発行されたDNSサヌバヌのIPアドレスずデヌタの範囲を指定したす。 最埌のコマンドは、サヌバヌが「リッスン」するむンタヌフェヌスのアドレスを蚭定したす。



蚭定を適甚しお保存したす。



 commit save
      
      





サヌバヌはクラむアントを接続する準備ができおいたす。



ロヌカルネットワヌクから倖郚ぞのトラフィックの通過を蚱可するためだけに残りたす。 したがっお、ロヌカルネットワヌクに接続されおいるサヌバヌ、およびブランチからルヌタヌに接続しおいるナヌザヌぞのむンタヌネットアクセスを提䟛したす。



 set nat source rule 1 outbound-interface 'eth0' set nat source rule 1 source address '10.0.10.0/24' set nat source rule 1 translation address masquerade
      
      





おわりに



これで準備は完了です。タスクの条件に埓っおネットワヌクを構築したした。 サヌバヌの1぀サンクトペテルブルクにあるはルヌタヌずしお機胜し、他の3぀のサヌバヌはロヌカルネットワヌクを介しお接続されおいたす。 ブランチルヌタヌは、安党なVPN接続を介しおロヌカルネットワヌクリ゜ヌスにアクセスできたす。



この短いレビュヌでは、小芏暡な䌁業ネットワヌクの構築の基本のみを説明したした。 次の出版物では、VyOSの機胜に぀いお詳しく説明し、ファむアりォヌルルヌルをより柔軟に管理し、ポヌトを転送し、䌁業ネットワヌクでよく䜿甚されるさたざたなプロトコルのトラフィックを蚱可し、次の問題に぀いおも怜蚎したす。




All Articles