Linuxで独自のIPsecVPNサーバーを作成する方法


VPN(仮想プライベートネットワーク)を使用することには非常に多くの利点があります。その中には、トラフィックを暗号化することでインターネット上で安全を維持し、ブロックされたコンテンツ/サイト/ Webアプリケーションにどこからでもアクセスできるようにすることが含まれます。言うまでもなく、VPNはインターネットを匿名で閲覧するのにも役立ちます。

この記事では、CentOS/RHEL、Ubuntu、およびDebianLinuxディストリビューションで独自のIPsec/L2TPVPNサーバーを迅速かつ自動的にセットアップする方法を学習します。

  1. A fresh CentOS/RHEL or Ubuntu/Debian VPS (Virtual Private Server) from any provider such as Linode.

LinuxでのIPsec / L2TPVPNサーバーのセットアップ

VPNサーバーをセットアップするには、Lin Songによって作成されたシェルスクリプトのすばらしいコレクションを使用します。これは、IPsecサーバーとしてLibreswanをインストールし、L2TPプロバイダーとしてxl2tpdをインストールします。このオファリングには、VPNユーザーを追加または削除したり、VPNインストールをアップグレードしたりするためのスクリプトも含まれています。

まず、SSH経由でVPSにログインし、次にディストリビューションに適切なコマンドを実行してVPNサーバーをセットアップします。デフォルトでは、スクリプトはランダムなVPN資格情報(事前共有キー、VPNユーザー名、およびパスワード)を生成し、インストールの最後にそれらを表示します。

ただし、独自の資格情報を使用する場合は、最初に、図のように強力なパスワードとPSKを生成する必要があります。

# openssl rand -base64 10
# openssl rand -base64 16

次に、次のコマンドの説明に従って、これらの生成された値を設定します。すべての値は、示されているように「一重引用符」で囲む必要があります。

  • VPN_IPSEC_PSK – Your IPsec pre-shared key.
  • VPN_USER – Your VPN username.
  • VPN_PASSWORD – Your VPN password.
---------------- On CentOS/RHEL ---------------- 
# wget https://git.io/vpnsetup-centos -O vpnsetup.sh && VPN_IPSEC_PSK='KvLjedUkNzo5gBH72SqkOA==' VPN_USER='tecmint' VPN_PASSWORD='8DbDiPpGbcr4wQ==' sh vpnsetup.sh

---------------- On Debian and Ubuntu ----------------
# wget https://git.io/vpnsetup -O vpnsetup.sh && VPN_IPSEC_PSK='KvLjedUkNzo5gBH72SqkOA==' VPN_USER='tecmint' VPN_PASSWORD='8DbDiPpGbcr4wQ==' sudo sh vpnsetup.sh

インストールされる主なパッケージは、bind-utils、net-tools、bison、flex、gcc、libcap-ng-devel、libcurl-devel、libselinux-devel、nspr-devel、nss-devel、pam-devel、xl2tpd、 iptables-services、systemd-devel、fipscheck-devel、libevent-devel、fail2ban(SSHを保護するため)、およびそれぞれの依存関係。次に、ソースからLibreswanをダウンロード、コンパイル、インストールし、必要なサービスを有効にして開始します。

インストールが完了すると、次のスクリーンショットに示すようにVPNの詳細が表示されます。

次に、グラフィカルユーザーインターフェイスを備えたデスクトップまたはラップトップ用のVPNクライアントをセットアップする必要があります。このガイドを参照してください:LinuxでL2TP/IPsecVPNクライアントをセットアップする方法。

AndroidフォンなどのモバイルデバイスにVPN接続を追加するには、[設定] –> [ネットワークとインターネット](または[ワイヤレスとネットワーク] –> [その他])–> [詳細設定] –> [VPN]に移動します。新しいVPNを追加するオプションを選択します。 VPNタイプをIPSecXauth PSKに設定してから、上記のVPNゲートウェイと資格情報を使用する必要があります。

LinuxでVPNユーザーを追加または削除する方法

新しいVPNユーザーを作成するか、既存のVPNユーザーを新しいパスワードで更新するには、次のwgetコマンドを使用してadd_vpn_user.shスクリプトをダウンロードして使用します。

$ wget -O add_vpn_user.sh https://raw.githubusercontent.com/hwdsl2/setup-ipsec-vpn/master/extras/add_vpn_user.sh
$ sudo sh add_vpn_user.sh 'username_to_add' 'user_password'

VPNユーザーを削除するには、del_vpn_user.shスクリプトをダウンロードして使用します。

$ wget -O del_vpn_user.sh https://raw.githubusercontent.com/hwdsl2/setup-ipsec-vpn/master/extras/del_vpn_user.sh
$ sudo sh del_vpn_user.sh 'username_to_delete'

LinuxでLibreswanインストールをアップグレードする方法

vpnupgrade.shまたはvpnupgrade_centos.shスクリプトを使用して、Libreswanインストールをアップグレードできます。スクリプト内で、SWAN_VER変数をインストールするバージョンに編集してください。

---------------- On CentOS/RHEL ---------------- 
# wget https://git.io/vpnupgrade-centos -O vpnupgrade.sh && sh vpnupgrade.sh

---------------- On Debian and Ubuntu ----------------
# wget https://git.io/vpnupgrade -O vpnupgrade.sh && sudo sh  vpnupgrade.sh

LinuxでVPNサーバーをアンインストールする方法

VPNインストールをアンインストールするには、次の手順を実行します。

# yum remove xl2tpd

次に、/ etc/sysconfig/iptables構成ファイルを開いて不要なルールを削除し、/ etc /sysctl.confファイルと/etc/rc.localファイルを編集して、両方のファイルでコメント#hwdsl2VPNスクリプトによって追加された後の行を削除します。

$ sudo apt-get purge xl2tpd

次に、/ etc/iptables.rules構成ファイルを編集して、不要なルールを削除します。さらに、/ etc/iptables/rules.v4が存在する場合は、それを編集します。

次に、/ etc /sysctl.confファイルと/etc/rc.localファイルを編集し、両方のファイルでコメントの後の行を削除します。#hwdsl2VPNスクリプトによって追加されました。出口0が存在する場合は、削除しないでください。

オプションで、VPNのセットアップ中に作成された特定のファイルとディレクトリを削除できます。

# rm -f /etc/ipsec.conf* /etc/ipsec.secrets* /etc/ppp/chap-secrets* /etc/ppp/options.xl2tpd* /etc/pam.d/pluto /etc/sysconfig/pluto /etc/default/pluto 
# rm -rf /etc/ipsec.d /etc/xl2tpd

Strongswanを使用してサイト間IPSecベースのVPNをセットアップするには、ガイドを確認してください。

  1. How to Setup IPSec-based VPN with Strongswan on Debian and Ubuntu
  2. How to Setup IPSec-based VPN with Strongswan on CentOS/RHEL 8

参照:https://github.com/hwdsl2/setup-ipsec-vpn

この時点で、独自のVPNサーバーが稼働しています。以下のコメントフォームを使用して、質問を共有したり、フィードバックを送信したりできます。