GNU/Linux >> Linux の 問題 >  >> Ubuntu

Ubuntu16.04LTSへのTincを使用したVPNのインストール

仮想プライベートネットワーク(VPN)は、インターネットなどのより大規模なパブリックネットワーク上で動作する安全なプライベートネットワークです。 VPNは、高価で複雑な新しいハードウェアをセットアップする必要なしにセキュリティとプライバシーを向上させることが主な理由で、近年ますます人気が高まっています。また、ネットワーキングやサポートのコストの削減など、他にもいくつかの利点があります。

VPNは、パブリックネットワークを介して暗号化されたトンネルを作成し、これを使用してサーバーと端末間でデータを安全に送信することで機能します。これらの接続はさまざまな方法で暗号化でき、アーキテクチャ、予算、および経験のレベルに合わせて、さまざまなVPNクライアントとデーモンがあります。

Tincはそのようなソリューションの1つです(1)。オープンソースのVPNデーモンであり、現在ではさまざまなプラットフォームで利用可能であり、同様のVPNクライアントに比べていくつかの利点があります。安全で信頼性の高い暗号化、オプションの圧縮を提供し、ネットワークの成長に合わせて簡単に拡張できます。自動フルメッシュルーティングは、VPNトラフィックが常に(可能な場合は)宛先マシンに直接送信され、中間転送を行わないことを意味します。これにより、データの盗難の可能性が制限され、セキュリティが大幅に向上します(3)。さらに、Tinc VPNは通常のネットワークデバイスとしてIPレベルのネットワークコードに表示されるため、Tinc VPNを設定した後、既存のソフトウェアを適応させる必要はありません。これにより、TincVPNは本質的にスケーラブルになります。

Tincの唯一の小さな問題は、設定が少し難しいと感じる人がいることです。それがあなたのように聞こえる場合は、恐れることはありません。今日は、サーバーでTinc VPNを起動して実行するための(多かれ少なかれ)手間のかからない方法を紹介します。

前提条件

このチュートリアルを完全に実行するには、少なくとも3台のUbuntu 16.04サーバーと、各マシンでのrootアクセスが必要です。これがない場合、またはこれが何を意味するのかわからない場合は、このチュートリアルは適していません。まず、Ubuntu(2)を使用してサーバーをセットアップする方法を確認する必要があります。

サーバーシステムを最初から構築する場合は、最初に、マシンが相互に通信する方法について考える必要があります。このチュートリアルでは、ほとんどの人が選択すると思われる変数名を使用しますが、いくつかの変数名を自分の設定に合わせて調整する必要がある場合があることに注意してください。

このチュートリアルを正確に実行する場合は、最初に同じデータセンターに2つのVPSを設定してから、2番目のデータセンターに3つ目のVPSを作成する必要があります。私のデータセンターは、2つのVPSを備えたNYC2と、3つ目のVPSを備えたAMS2と呼ばれています。これらのVPSは次のように呼ばれます:

externalnyc –すべてのVPNノードがこのサーバーに接続します。つまり、ネットワークが正しく機能するように、サーバーは接続されたままで利用可能である必要があります。最終的にサーバーをセットアップに追加する場合は、externalnycと同じ方法でサーバーをセットアップする必要があります。

internalnyc –このVPSは、プライベートネットワークインターフェイスを使用してexternalnycVPNノードに接続します。

ams1 –これはパブリックVPN接続です。パブリックインターネットを使用してexternalnycに接続します。

目標

私たちが達成したいのは次のとおりです。

私たちのプライベートネットワークは緑色の線で表され、3台のサーバーすべてを接続しています。オレンジは、2つのNYC2サーバーをリンクするプライベートネットワークです。プライベートネットワークはAMS1にアクセスできませんが、3つのサーバーすべてがVPNを介して接続できます。

これを行うには、次の手順に従います。

Tincをインストール

まず、Tincをインストールする必要があります。いつものように、以下を実行して、すべてのaptリポジトリが最新であることを確認してください:

sudo apt-get update

次に、aptを介して標準的な方法でTincをインストールします:

sudo apt-get install tinc

以上です!これで、マシンにTincに加えて、必要な前提条件がダウンロードされます。次に、構成を確認する必要があります。

構成

Tincの構成は、慣れている他のVPNとは少し異なる場合があります。 「ネット名」を使用してVPNを区別します。これは、Tincを介して複数のVPNを実行している場合に非常に役立ちますが、最初は少し直感に反します。これは私たちの最初のTincネットワークなので、シンプルに保ち、VPNを「ネットネーム」と呼びましょう。

次に、サーバーごとに。それぞれに3つの構成コンポーネントが必要です。

構成ファイル:tinc.conf、tinc-up、tinc-down、およびオプションの数の他のファイル。

公開鍵と秘密鍵のペア:これらは暗号化と認証用です。

ホスト構成ファイル:これらには、公開鍵とその他のVPN構成要素が含まれています。

次に、各サーバーを順番に構成しましょう。まず、externalnyc。

externalnycを構成する

では、要点を説明します。 externalnycでは、VPNネット名の構成ディレクトリ構造を作成することから始めます。実行:

sudo mkdir -p /etc/tinc/netname/hosts

次に、選択したテキストエディタでtinc.confを開きます。

sudo vi /etc/tinc/netname/tinc.conf

ファイルを目の前に置いたら、ファイルの最後に次のファイルを追加します。

Name = externalnyc
AddressFamily = ipv4
Interface = tun0

ここで行っているのは、externalnycというノードを構成し、そのネットワークインターフェイスがipv4を使用し、「tun0」と呼ばれることをサーバーに通知することだけです。ファイルを保存して閉じます。

次に、externalnycのホスト構成ファイルを作成する必要があります。これを行うには、テキストエディタでホスト構成ファイルを開きます。

 sudo vi /etc/tinc/netname/hosts/externalnyc

繰り返しになりますが、このファイルの最後にいくつかの行を追加し、最初の行でVPSのパブリックIPアドレスを置き換えます。

Address = externalnyc_public_IP
Subnet = 10.0.0.1/32

これは、他のサーバーがexternalnycに接続するために使用するファイルです。アドレスは他のノードにこのサーバーに接続する方法と場所を指示し、サブネットアドレスはこのデーモンが動作するサブネットです。繰り返しますが、このファイルへの変更を保存して閉じます。

次に、このホストの公開鍵と秘密鍵のペアを生成する必要があります。これは簡単です。実行するだけです:

 sudo tincd -n netname -K4096

これにより、秘密RSAキーが作成され、作成した構成ファイルの最後に公開キーのペアが追加されます。必要に応じて、もう一度開いて、これが行われたことを確認できます。

次に、VPNの開始時に実行される小さなスクリプトであるtinc-upを作成する必要があります。次のファイルを開いて編集します:

 sudo vi /etc/tinc/netname/tinc-up

そして追加:

#!/bin/sh
ifconfig $INTERFACE 10.0.0.1 netmask 255.255.255.0

VPNネット名が開始されるたびに、このスクリプトが実行されます。これにより、VPNで使用されるネットワークインターフェイスが作成されます。このVPNでは、externalnycのIPは10.0.0.1になります。

ただし、VPNが停止したときに、このネットワークインターフェイスを非表示にする必要があるため、もう1つのスクリプトが必要です。これはtinc-downに追加する必要があります。開く:

 sudo vi /etc/tinc/netname/tinc-down

そして、次を追加します:

#!/bin/sh
ifconfig $INTERFACE down

そして、もう一度保存して終了します。これでスクリプトができましたが、スクリプトを機能させるには、実行可能としてフラグを立てる必要があります。これは、コマンドラインを使用して簡単に行えます:

sudo chmod 755 /etc/tinc/netname/tinc-*

保存して終了すると、このサーバーの構成が完了します。次は、internalnycとams1です。

internalnycとams1を構成します

残りの2つのサーバーを構成するには、各マシンで同じコマンドを実行する必要があります。いくつかのマイナーなバリエーションがありますが、プロセスは基本的に同じです。

上記のexternalnycで行ったように、最初に構成ファイルのディレクトリ構造を作成する必要があります。各サーバーで次のコマンドを実行し、編集用にTinc構成ファイルを開きます。

 sudo mkdir -p /etc/tinc/netname/hosts
sudo vi /etc/tinc/netname/tinc.conf

次に、このファイルの最後に数行を追加し、「node_name」を各ノードの名前に置き換えます。

Name = node_name
AddressFamily = ipv4
Interface = tun0
ConnectTo = externalnyc

これで、両方のサーバーがexternalnycへの接続を試行するように構成されていることがわかります。このファイルを保存して閉じます。

次に、ホスト構成ファイルを作成する必要があります。実行:

 sudo vi /etc/tinc/netname/hosts/node_name

次に、internalnycの場合、次の行を追加します:

Subnet = 10.0.0.2/32

また、ams1の場合は、次の行を追加します:

Subnet = 10.0.0.3/32

ここでの唯一の違いは、アドレスが異なるため、サーバーを区別できることです。このファイルを保存して閉じます。

ここで、前と同じように、公開鍵と秘密鍵のペアを生成し、ネットワークインターフェイスの起動スクリプトを作成する必要があります。各サーバーで、次を実行します:

 sudo tincd -n netname -K4096

そして:

 sudo vi /etc/tinc/netname/tinc-up

今。サーバーごとに、前に指定したアドレスを使用する必要があります。私を正確にフォローしている場合は、internalnycに次を追加する必要があります:

ifconfig $INTERFACE 10.0.0.2 netmask 255.255.255.0

そしてams1の場合:

ifconfig $INTERFACE 10.0.0.3 netmask 255.255.255.0

ただし、上記で別のアドレスを指定した場合は、ここでもそれらを変更してください。これらのファイルを保存して、終了します。もうすぐです。

以前と同じように、ネットワークインターフェイスの停止スクリプトを作成する必要があります。

 sudo vi /etc/tinc/netname/tinc-down

次に、両方のサーバーに次の行を追加します。

ifconfig $INTERFACE down

そして、構成の最後のビットは、新しいスクリプトを実行可能にすることです。

sudo chmod 755 /etc/tinc/netname/tinc-*

保存して終了します。ふぅ。すべてがうまくいけば、3台のサーバーすべてが構成されます。暗号化を実装します。

キーの配布

すでに構成管理システムを使用している場合は、幸運です。理想的な世界では、これまでに作成した各ノードは、公開鍵/秘密鍵インターフェースを使用して別のノードと直接通信できる必要があります。上で見たように、キーは各サーバーのホスト構成ファイルにあります。ここで作成している単純なネットワークでは、実際には、externalnycだけが他のノードとキーを交換する必要があります。

したがって、これを行う最も簡単な方法は、各公開鍵をさまざまなノードのすべてのメンバーにコピーすることです。これは実際には非常に簡単です。コピーするときに、externalnycの構成ファイルの「address」値を独自のプライベートIPアドレスに変更するように注意してください。そうすれば、接続はプライベートネットワークを介して確立されます。

私をフォローしてVPNを「ネット名」と呼んだ場合、ホスト構成ファイルは次のとおりです:/ etc / tinc / netname / hosts

externalnycとinternalnyc間のキーの交換

これは簡単です。 internalnycで、ホスト構成ファイルを見つけて、externalnycにコピーします。

 scp /etc/tinc/netname/hosts/internalnyc [email protected]_private_IP:/tmp

次に、externalnycで、同じファイルを適切な場所にコピーします。

 cd /etc/tinc/netname/hosts; sudo cp /tmp/internalnyc .

次に、反対の手順を実行します。 externalnycで、ホスト構成ファイルをinternalnycにコピーします。

 scp /etc/tinc/netname/hosts/externalnyc [email protected]_private_IP:/tmp

次に、internalnycでファイルをコピーして、適切な場所に配置します。

 cd /etc/tinc/netname/hosts; sudo cp /tmp/externalnyc .

次に、アドレスが正しくなるように、internalnycでexternalnycのホスト構成ファイルを編集する必要があります。これは、ノードがプライベートネットワークを介してVPNに接続するためです。したがって、internalnycで、externalnycのホスト構成ファイルを開きます。

 sudo vi /etc/tinc/netname/hosts/externalnyc

そして、アドレス値を次のようにexternalnycのプライベートIPアドレスに変更します。

Address = externalnyc_private_IP

ファイルを保存して終了します。これで2つのキーが完了しました。これで、残りの1つのノードとキーを交換する必要があります。

externalnycとams1の間のキーの交換

ここでのプロセスは非常に似ています。 ams1を使用して、ホスト構成ファイルをexternalnycにコピーします。

 scp /etc/tinc/netname/hosts/ams1 [email protected]_public_IP:/tmp

そして、externalnycを使用して、もう一度適切な場所にコピーします:

 cd /etc/tinc/netname/hosts; sudo cp /tmp/ams1 .

externalnycにとどまり、ファイルを反対の方法でams1にコピーします:

 scp /etc/tinc/netname/hosts/externalnyc [email protected]_public_IP:/tmp

そしてもう一度、ams1で、このファイルをコピーして適切な場所に配置します。

 cd /etc/tinc/netname/hosts; sudo cp /tmp/externalnyc .

そして、鍵交換は完了です。理論的には、Tincを介して暗号化されたVPNが機能するようになりました。このチュートリアルに従って手紙を読んだ場合は、セットアップのテストに進むことができます。ただし、ノードを追加する機会もある場合は、必要なすべてのキーを交換する良い機会です。

ここで行っているように、中央ノードを使用している場合は、すべてのキーをすべてのサーバーにコピーする必要はありません。ただし、ノードが相互に直接通信できるようにする場合は、ノードがキーを交換する必要があります。これを行うためのプロセスは、上記で説明したものと同じです。必要な数の反復を実行して、目的の接続を実現します。

テスト

これで、テストの準備ができました。これを行うには、デバッグモードでTincを起動することをお勧めします。これにより、エラーをキャッチし、問題が発生した場合にさらに情報を取得できます。 VPNの構成が不十分な場合、実際にはセキュリティリスクが発生する可能性があるため、重要な目的でVPNを使用する前に、すべてが正しく機能することを確認してください。

Tincをデバッグモードで開始するには、externalnycで始まる各ノードで、次のコマンドを実行します。

 sudo tincd -n netname -D -d3

もちろん、VPNを別の名前で呼んでいる場合は、「netname」変数を適切な名前に変更してください。

デーモンが各ノードで起動すると、接続時に各ノードの名前を示す出力が返されます。これが起こらない場合は、どこかで間違いを犯しています。

これで、VPNをテストできます。 ams1の新しいウィンドウで、IPアドレスを使用してinternalnycにpingを実行します。これは以前に10.0.0.2に割り当てたので、次のように入力します。

 ping 10.0.0.2

うまくいけば、pingは機能します。また、他のウィンドウに、今行った接続を説明するデバッグ出力が表示されるはずです。これで、Ams1は新しいVPNを介してexternalnycに接続され、internalnycを介して接続できるようになりました。 CTRL-Cを押すと、pingが停止します。

これで安全なVPN接続ができたので、アプリケーション接続、ファイルのコピー、SSHなど、他の種類のネットワーク通信に使用できます。

pingが機能しなかったが、すべてが正しく行われたと思われる場合は、ファイアウォールが邪魔になっている可能性があります。ファイアウォールの設定を確認して、再試行してください。

起動時のTinc

最後にもう1つ。すべてのネットワークにTincVPNを使用する場合は、起動時に起動するように設定することをお勧めします。 nets.boot構成ファイルを編集して、各ノードでこれを行う必要があります。次を使用してファイルを開きます:

 sudo vi /etc/tinc/nets.boot

次に、新しいVPNの名前をこのファイルに追加します。私のように「netname」を選択した場合、これは次のようになります。

# This file contains all names of the networks to be started on system 	startup.
netname

保存して終了すれば完了です。 Tincは現在動作しており、起動時に起動します。よくやった。

Tincを制御する必要がある場合は、「service」コマンドを実行して制御できるようになりました。各ノードで、次を実行するだけです:

 sudo service tinc start

そして、遊んでください。最も基本的な制御は、このコマンドで実行できます。

結論

これで、すべてのマシンでTincを介して安全なVPN接続が実行されているはずです。このVPNは、さらにネットワーク機能を構築するためのベースとして使用できます。

将来さらにノードを追加したい場合、またはTincを他のVPNと組み合わせたい場合は、Tincでこれを行うことができます。追加の各ノードのプロセスは上記で説明したものと同じであり、変更が必要な変数とアドレスを簡単に確認できるはずです。ノードが相互に直接接続できるようにする場合は、ノード間でキーを直接交換する必要があることを覚えておいてください。このように、TincはメッシュVPNとして動作します。これは、私のアプローチよりも少し安全です。それ以外の場合は、私が行ったようにネットワークをセットアップして、すべてを中央ノードに通すことができます。

いずれにせよ、あなたは今、自由に遊ぶことができます。頑張ってください!

リソース

(1)https://www.tinc-vpn.org/

(2)https://www.howtoforge.com/tutorial/ubuntu-lts-minimal-server/


Ubuntu
  1. Ubuntu/CentOSにApacheを使用してmod_pagespeedをインストールする

  2. Ubuntu16.04LTSをインストールした後に行うこと

  3. Ubuntu12.04LtsにMsOffice2013をインストールしますか?

  1. Ubuntu16.04LTSをインストールした後に行うべきトップ10のタスク

  2. Ubuntu20.04LTSにNginxを使用してModsecurityをデプロイする

  3. Ubuntu 16.04LtsでSstpVPNパッケージが見つかりませんか?

  1. Windows10でUbuntu18.04LTSをデュアルブートする方法

  2. スクリーンショット付きのUbuntu18.04LTSデスクトップインストールガイド

  3. Ubuntu20.04LTSをインストールした後に行うべきトップ14のこと