Linux

VPN Centos

vpn 比較

pptp サーバー構築 (CentOS 5)

L2TP サーバー構築(centos 5)

参考サイト

CentOS に epel レポジトリのインストール

編集ファイル一覧

/etc/xl2tpd/xl2tpd.conf の編集

/etc/ppp/options.xl2tpdの編集

IPSec のインストール

strongswan のインストール(yum)

openswan にiPhoneからつながらない不具合が有り、
strongswan に変更

yum install strongswan

/etc/strongswan/ipsec.conf の編集

/etc/strongswan/ipsec.d/l2tp-psk.conf ファイルの作成

/etc/strongswan/ipsec.secrets の編集

(参考) Log levelの変更

sudo vi /etc/strongswan/strongswan.d/charon-logging.conf
  1. 2個所(fileとrsyslog)
               # Default loglevel.
               # default = 1
               default = 2

起動

自動起動の設定

NETKEY detected, testing for disabled ICMP send_redirects [FAILED] 対策

反映

Pluto listening for IKE on udp 500 Pluto listening for NAT-T on udp 4500 [FAILED] 対応

yum install lsof

libpcap-devel のインストール

yum install libpcap-devel ppp

selinux 無効化

サーバーの再起動

iptables 編集

/etc/ppp/chap-secrets の編集

log ファイル、ひな形の作成

touch /var/log/xl2tpd.log

ルーターのポート開放

Client の設定

Windows

  1. レジストリの変更 [#k194a06b]
    • regedit
      • HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\PolicyAgent
      • 新規 「DWORD値」[AssumeUDPEncapsulationContextOnSendRule ]
      • 値 2
  2. Windows,エラー,1 [#gd104903]

iPhone

  1. iPhone の設定で気をつけること [#cd5fd356] 「全ての全ての通信を送信」のチェックがOnだと AU wifi につなげた状態では
    VPN に繋がりませんでした。チェックをオフにすると繋がります。

Linux(Ubuntu)

OpenVPN

設定関連図(構成図)

Client1 -> Internet - udp -> キャリアルーター -> VPN サーバ -> Internet(全ての通信がVPNサーバ経由を目標とする)
※tcp は重い。server.conf に tcp-nodelay オプションを記入することにより改善されるが重い。
※tcp にするには、server.conf で udp を無効化しtcp を有効化。 同様に client 設定ファイルも行う。

OpenVPN Install

必要なパッケージのインストール

sudo yum -y install openssl-devel lzo-devel pam-devel gcc

OpenVPN のインストール

mkdir temp
wget http://swupdate.openvpn.org/community/releases/openvpn-2.3.12.tar.gz

easy-rsa のインストール

cd ~/temp
wget https://github.com/OpenVPN/easy-rsa/archive/master.zip
unzip master.zip

証明書の作成とファイルのコピー

※以下 su - で実行

最初の1回のみ初期化

cd /etc/openvpn/easyrsa3/
./easyrsa init-pki

CA証明書・秘密鍵作成

サーバ証明書の作成

./easyrsa build-server-full server nopass
Enter pass phrase for /etc/openvpn/easyrsa3/pki/private/ca.key: (CA秘密鍵のパスワード)(上記で入力)
~
Data Base Updated

DH(Diffie Hellman)パラメータ作成

証明書廃止リスト作成

./easyrsa build-client-full dmy nopass
~
Enter pass phrase for /etc/openvpn/easyrsa3/pki/private/ca.key:(CA秘密鍵のパスワード)(上記で入力)
~
Write out database with 1 new entries
Data Base Updated

OpenVPN の設定(server.conf)

※以下 su - で実行

ファイアウォール設定 (省略)

ログ ローテーション

※以下 su - で実行

OpenVPN の起動

※以下 su - で実行

OpenVPN 起動スクリプトの編集

OpenVPN の起動

service openvpn start

自動起動の設定

chkconfig openvpn on

ファイアウォール設定

設定関連図(構成図)
Client1 -> Internet -> キャリアルーター -> VPN サーバ -> Internet(全ての通信がVPNサーバ経由を目標とする)

キャリアルーターの設定

  1. 1194ポートをVPNサーバへ転送(tcp の場合は tcp ポートを。udp の場合はUDPポートを)
  2. 10.8 系へのルートの追加 10.8.0.0 のゲートウェイを VPNサーバへ

VPNサーバのファイアウォール設定(省略)

クライアント証明書の秘密キー作成

※以下 su - で実行

クライアント証明書・秘密鍵作成(パスフレーズ認証なし)

cd /etc/openvpn/easyrsa3/
./easyrsa build-client-full client1 nopass

Enter pass phrase for /etc/openvpn/easyrsa3/pki/private/ca.key: (CA秘密鍵のパスワード入力)

Write out database with 1 new entries
Data Base Updated

クライアントの設定

Windows(iPhoneの場合も設定ファイルを作るのでこちらから)

  1. 共通
    1. OpenVPN クライアントのダウンロード
    2. OpenVPN のインストール
  2. 新(2019/2/5)
    • (設定ファイルがある前提でスタート)
    1. OpenVPNソフトを起動
    2. タスクトレイにあるOpenVPNアイコンを右クリック、「Import File」を選択
    3. *.ovpn ファイルを選択
    4. タスクトレイにあるOpenVPNアイコンを右クリック、「設定」を選択
    5. 「Advanced」タブを選択
    6. 「設定ファイル」の場所を確認し、「ディレクトリ」のPATHをコピーする。
    7. エクスプローラーで上記のコピーしたPATHを開く
    8. 以下のファイルをコピーする。
      1. ca.crt (/etc/openvpn/easyrsa3/pki/ca.crt)
      2. ta.key (/etc/openvpn/ta.key)
      3. 接続名.crt 例) clientConnect.crt (/etc/openvpn/easyrsa3/pki/issued/clientConnect.crt)
      4. 接続名.key 例) clientConnect.key (/etc/openvpn/easyrsa3/pki/private/clientConnect.key)
    9. 接続の確認
      1. タスクトレイにあるOpenVPNアイコンを右クリック、「接続」を選択
    1. サンプルファイルのコピー
      • コピー元
        C:\Program Files\OpenVPN\sample-config\client.ovpn
      • コピー先
        C:\Program Files\OpenVPN\config
    2. client.ovpn の編集
      • 外からクライアントで接続する先を設定
        remote tar3.net 1194
      • クライアント証明書、秘密鍵の指定
        ca ca.crt
        cert client1.crt
        key client1.key
      • 中間者攻撃(Man-in-the-Middle)対策。※中間者攻撃についてはこちら(wikipedia)から
        remote-cert-tls server
      • TLS 認証の有効化
        tls-auth ta.key 1
      • (参考) Samba アクセス対策(追加)
        fragment 1280
        mssfix 1280
        link-mtu 1400
    3. 必要ファイルをクライアントへコピー(※必ずセキュアな接続で行うこと)
      • コピー元
        1. CA証明書
          /etc/openvpn/ca.crt
        2. クライアント証明書
          /etc/openvpn/easyrsa3/pki/issued/client1.crt
        3. クライアント秘密鍵
          /etc/openvpn/easyrsa3/pki/private/client1.key
        4. TLS認証鍵
          /etc/openvpn/ta.key
      • コピー先
        • C:\Program Files\OpenVPN\config

iPhone(Windows の場合が終わってから)

接続確認

Windows

iPhone

疎通確認

Ping による疎通確認が可能だが、通らない場合は大抵ルートの問題。
キャリアルーターにきちんと静的ルートが書いてあるか。また間違えてないか、など
OpenVPN サーバの Push "Route ..." は関係ない場合が多く、そこをいじっても解決しない時が多い。

VPNクライアントの削除

※以下 su - で実行

接続中クライアントの強制切断

※以下 su - で実行

トラブル

Server:Version2.4, Client:Version2.6,繋がらない

  1. サーバー側
    1. sudo vim /etc/openvpn/server.conf
      • 末尾に以下を追加
        cipher AES-128-CBC
  2. クライアントの.ovpnファイルの末尾へ追加
    1. Version2.6
      data-ciphers AES-128-CBC
    2. Version2.4
      cipher AES-128-CBC

WireGuard

参考リンク

  1. WireGuardは良き 〜インストールから導入まで〜
  2. 【Ubuntu】WireGuardで簡単VPN環境を構築

構成

  1. 「クライアント(PC,スマホなど)」 <- インターネット -> LAN
    1. 「WireGuard server」(LAN IP address) 192.168.1.0/24 (ルーターで51820ポートを通すのはこっち)
    2. 「WireGuard server」(VPN用 IP address) 192.168.2.0/24 (クライアントがVPNに繋った時、このレンジのIPアドレスが割り当たる)
  2. WireGuard server : Ubuntu 24.04 server
  3. WireGuard : 1.0.20210914-1ubuntu4

事前準備

forwardの有効化

sudo vi /etc/sysctl.conf

install(Ubuntuのセットアップは省略)

  1. sudo apt update
  2. sudo apt upgrade
  3. sudo apt install

鍵の作成

  1. Server鍵の作成(秘密鍵、公開鍵)
    わかりやすいように /etc/wireguard/wg0/ ディレクトリ配下に作ります。
    (wireguardディレクトリ配下だと煩雑になるので。。。)
    sudo mkdir /etc/wireguard/wg0
    sudo wg genkey | sudo tee /etc/wireguard/wg0/server.key
    sudo chmod 600 /etc/wireguard/wg0/server.key
    • server.keyから公開鍵の作成
      sudo cat /etc/wireguard/wg0/server.key | sudo wg pubkey | sudo tee /etc/wireguard/wg0/server.pub
      sudo chmod 600 /etc/wireguard/wg0/server.pub
  2. クライアント1用の鍵の作成(秘密鍵、公開鍵、事前共有鍵)
    sudo wg genkey | sudo tee /etc/wireguard/wg0/client0.key
    sudo cat /etc/wireguard/wg0/client0.key | sudo wg pubkey | sudo tee /etc/wireguard/wg0/client0.pub
    sudo wg genkey | sudo tee /etc/wireguard/wg0/client0-preshared.key
    sudo chmod 600 /etc/wireguard/wg0/client0.key
    sudo chmod 600 /etc/wireguard/wg0/client0.pub
    sudo chmod 600 /etc/wireguard/wg0/client0-preshared.key
    1. クライアント2用の鍵の作成(秘密鍵、公開鍵、事前共有鍵)
      sudo wg genkey | sudo tee /etc/wireguard/wg0/client2.key
      sudo cat /etc/wireguard/wg0/client2.key | sudo wg pubkey | sudo tee /etc/wireguard/wg0/client2.pub
      sudo wg genkey | sudo tee /etc/wireguard/wg0/client2-preshared.key
      sudo chmod 600 /etc/wireguard/wg0/client2.key
      sudo chmod 600 /etc/wireguard/wg0/client2.pub
      sudo chmod 600 /etc/wireguard/wg0/client2-preshared.key
    2. 以下、クライアントの数だけ繰り返し。
      自分は6つの携帯やPCがあったので6個作りました。
      ちなみに同時接続できるのは 1 peer あたり1つの端末です。
      端末が複数ある場合は peer を分けて複数IPで運用する方が良さそうです。

server側の設定ファイルを作成

sudo vi /etc/wireguard/wg0.conf
[Interface]
#ClientがVPNに接続した時に割り当てられるIP。serverのLAN内のIPレンジとは別にする。
Address = 192.168.2.0/24

#自分の場合、変なルートになってLANに繋らなかったので入れました。
Table = off 

#設定ファイルのコメントなどが消えてしまうのでfalseとしてコメントアウト
#SaveConfig = true 

#iptablesだけではなんか通らなかったので、ufwの設定も追加
#「ens18」は各自の環境に合わせて書き換え必要。 ip addr show コマンドで確認できる。
PostUp = ufw route allow in on wg0 out on ens18
PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o ens18 -j MASQUERADE
PreDown = ufw route delete allow in on wg0 out on ens18
PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o ens18 -j MASQUERADE
ListenPort = 51820

#上記の server.key の中身を記載
PrivateKey = abcdefg=

#iPhone(1台目)
[Peer]

#上記の client0.pub の内容を記載
PublicKey = abcdefg=

#上記の client0-preshared.key の内容を記載
PresharedKey = abcdefg=

#クライアントがVPNへ接続した際、割り当てられる仮想IPを記載
#(今回は192.168.2.0/24の中のIPを設定する)
AllowedIPs = 192.168.2.201/32

#Android(2台目)
[Peer]

#上記の client2.pub の内容を記載
PublicKey = abcdefg=

#上記の client2-preshared.key の内容を記載
PresharedKey = abcdefg=

#クライアントがVPNへ接続した際、割り当てられる仮想IPを記載
#(今回は192.168.2.0/24の中のIPを設定する)
AllowedIPs = 192.168.2.202/32

client側の設定ファイルを作成

sudo vi /etc/wireguard/wg0/client0.conf
[Interface]

#上記の client0.key の値を設定
PrivateKey = abcdef=

#クライアントがVPNで接続した際、VPNサーバから割り当てられるIPアドレスを記載。
#上記の peer の設定を合わせておく必要がある
Address = 192.168.2.201/32

#DNSの設定とsearch domainの設定。カンマ区切り。自分の好みに書き換えて設定しましょう
DNS = 8.8.8.8, 8.8.4.4, searchDomain.com

[Peer]
#上記の server.pub の内容を記載
PublicKey = abcdef=

#client0-preshared.key の内容を記載
PresharedKey = abcdef=
AllowedIPs = 0.0.0.0/0

#接続先のサーバー名を入れましょう
#(インターネット越しでアクセスするので、変動IPの場合はDDNSなどのドメイン名を入れます)
Endpoint = serverName.domain.com:51820

WireGuardの起動と再起動時の自動起動

sudo wg-quick up wg0
sudo systemctl enable wg-quick@wg0

(参考) 停止と無効化、再起動前の実行

sudo wg-quick down wg0
sudo systemctl disable wg-quick@wg0

QRコードでのクライアント設定準備(QRコード表示準備)

  1. qrencode のインストール
    sudo apt install qrencode
  2. QRコードの表示
    qrencode -t ansiutf8 < [作成したスマートフォン用設定ファイル名]
    • 他の方法
      sudo qrencode -t ansiutf8 -r /etc/wireguard/wg0/client1.conf
    • 画像で保存
      sudo qrencode -o client1.png -d 350 -r /etc/wireguard/wg0/client1.conf 

ログの出力

clientの設定

iPhone, iPad

  1. 「App Store」から「wireguard」で検索、ダウンロード
  2. 「WireGuard」アプリを起動し「+」を押す
    1. ファイルから
      • セキュアなファイルサービスを使いましょう。
        自分は自前のNextCloudサーバを使いました。
      • NextCloud -> ファイル -> 共有 -> WireGuardで設定ファイルをインポートできます
    2. QRコードから
      • 上記のQRコードを読み込ませると設定は入るのですが、
        設定名は手打ちしないといけないです。。。
  3. 確認
    • 「Network Ping Lite」というアプリでLAN内の他のコンピュータへping確認しました。
    • IP address は、192.168.2.0/24 のIPになりますが、192.168.1.0/24のサブネットのコンピュータにpingが通るはずです。
      通らない時は、「sudo vi /etc/wireguard/wg0.conf」、「table = off」をチェック。

Android

  1. 「Play ストア」から「wireguard」で検索。インストール。
  2. 自分はNextCloudからファイルを読み込みます。
    wireguardのアプリから「+」->「ファイル、アーカイブからインポート」->「NextCloud」の中のファイルを選択してインポート。
  3. VPNの設定名は15文字位までなので注意

Windows

  1. ダウンロードリンク:(公式)Installation
  2. 「トンネルの追加」->「空のトンネルを追加」
  3. 「名前」の入力。クライアント設定の文言(クライアント側の設定ファイルの内容)を記載して「保存」ボタンを押す。
  4. テザリングなどでインターネット回線にする。
  5. 接続してLAN(192.168.1.0/24)の他のコンピュータにpingが通ることを確認

Linux(Ubuntu)

  1. WireGuard のインストール
    sudo apt install wireguard
  2. クライアント設定ファイルの作成
    • sudo vi /etc/wireguard/wg0.conf
      [Interface]
      
      #上記の client0.key の値を設定
      PrivateKey = abcdef=
      
      #クライアントがVPNで接続した際、VPNサーバから割り当てられるIPアドレスを記載。
      #上記の peer の設定を合わせておく必要がある
      Address = 192.168.2.201/32
      
      #DNSの設定とsearch domainの設定。カンマ区切り。自分の好みに書き換えて設定しましょう
      DNS = 8.8.8.8, 8.8.4.4, searchDomain.com
      
      [Peer]
      #上記の server.pub の内容を記載
      PublicKey = abcdef=
      
      #client0-preshared.key の内容を記載
      PresharedKey = abcdef=
      AllowedIPs = 0.0.0.0/0
      
      #接続先のサーバー名を入れましょう
      #(インターネット越しでアクセスするので、変動IPの場合はDDNSなどのドメイン名を入れます)
      Endpoint = serverName.domain.com:51820
  3. 接続スクリプトの作成
    • vi ~/wgup.sh
      sudo /usr/bin/wg-quick up wg0
      • 実行権限の付与
        sudo chmod +x ~/wgup.sh
  4. 切断スクリプトの作成
    • vi ~/wgdown.sh
      sudo /usr/bin/wg-quick down wg0
      • 実行権限の付与
        sudo chmod +x ~/wgup.sh
  5. 接続
    ~/wgup.sh
  6. 切断
    ~/wgdown.sh

過去ログ

ipsec の確認 ipsec verify


トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS