- 追加された行はこの色です。
- 削除された行はこの色です。
- vpn は削除されています。
- vpn の差分を削除
#author("2025-03-02T09:10:24+09:00","default:dramsukohome","dramsukohome")
[[Linux]]
#author("2025-08-04T10:26:12+09:00","default:dramsukohome","dramsukohome")
#shadowheader(1,VPN Centos);
#Contents
*vpn 比較 [#q1af3335]
-[[こちら:http://jp.giganews.com/vyprvpn/compare-vpn-protocols.html]]のサイト参照
-- openVPN を初めにインストールしましたが、~
ios へ対応していないのでボツ
-- 次に pptp をインストールしましたが、~
emobile に対応していないのでボツ
-- 最後に L2TP をインストール
*pptp サーバー構築 (CentOS 5) [#jd2be6ab]
- ppp のインストール
-- yum install ppp
- download
-- [[http://sourceforge.net/projects/poptop/files/:http://sourceforge.net/projects/poptop/files/]]
- rpm build のためファイルを下記ディレクトリへコピー
-- cp ./pptpd-1.3.4.tar.gz /usr/src/redhat/SOURCES/
- rpm を build
-- rpmbuild -ta pptpd-1.3.4.tar.gz
- rpm からインストール
-- cd /usr/src/redhat/RPMS/i386/
-- rpm -ivh pptpd-1.3.4-1.i386.rpm
- /etc/pptpd.conf 編集
-- vi /etc/pptpd.conf
-- 最後に下記を追加
ppp /usr/sbin/pppd
localip 192.168.1.101-110
remoteip 192.168.2.111-120
#logwtmp < logwtmp をコメントアウト
- ppp の設定
-- vi /etc/ppp/options.pptpd
name pptpd
domain tar3.net
# localip と remoteip が LAN 側サブネットに含まれる場合は proxyarp を有効にします。
proxyarp
auth
lock
refuse-pap
refuse-chap
refuse-mschap
require-mschap-v2
require-mppe-128
ms-dns 192.168.1.37
ms-dns 192.168.1.1
ms-wins 192.168.1.37
nobsdcomp
novj
novjcomp
nologfd
mtu 1200
mru 1200
debug
-- vi /etc/ppp/chap-secrets
hoge pptpd password *
- ルーティング機能を有効にする
-- echo 1 > /proc/sys/net/ipv4/ip_forward
-- vi /etc/sysctl.conf
net.ipv4.ip_forward = 1
- ファイアウォールの 1723 と 47 のポートを開ける(iptables)
-- vi /etc/sysconfig/iptables
-A FORWARD -i ppp+ -j ACCEPT
-A FORWARD -o ppp+ -j ACCEPT
-A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p gre -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 1723 -j ACCEPT
- 外とのルーターポートをNATで開ける
-- 1723 と 47 ポート
- Windowsのネットワークコンピュータで LAN内部の別コンピュータのが見えるように~
-- /etc/samba/smb.conf を編集
[root@sv22 ~]# vi /etc/samba/smb.conf
; domain master = yes
↓
domain master = yes
; local master = no
↓
local master = yes
; preferred master = yes
↓
preferred master = yes
; os level = 33
↓
os level = 65
; wins support = yes
↓
wins support = yes
-Samba再起動
[root@sv22 ~]# /etc/rc.d/init.d/smb restart
SMB サービスを停止中: [ OK ]
NMB サービスを停止中: [ OK ]
SMB サービスを起動中: [ OK ]
NMB サービスを起動中: [ OK ]
*L2TP サーバー構築(centos 5) [#j22d5570]
**参考サイト [#zb999906]
-[[参考外部サイト:http://sig9.hatenablog.com/entry/2015/07/12/233445]]
**CentOS に epel レポジトリのインストール [#n91c6a50]
- 参考URL~
--[[32bit版CentOS 6の場合は:http://ftp-srv2.kddilabs.jp/Linux/distributions/fedora/epel/6/i386/]]
--[[64bit版CentOS 6の場合は:http://ftp-srv2.kddilabs.jp/Linux/distributions/fedora/epel/6/x86_64/]]
--[[32bit版CentOS 5の場合は:http://ftp-srv2.kddilabs.jp/Linux/distributions/fedora/epel/5/i386/]]
--[[64bit版CentOS 5の場合は:http://ftp-srv2.kddilabs.jp/Linux/distributions/fedora/epel/5/x86_64/]]
-CentOS 5.5 に EPEL リポジトリを追加する
--cd /etc/pki/rpm-gpg/
--wget http://mirrors.ustc.edu.cn/fedora/epel/RPM-GPG-KEY-EPEL
--rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL
--rpm -ivh http://mirrors.ustc.edu.cn/fedora/epel/5/i386/epel-release-5-
-CentOS 6(32bit) に EPEL リポジトリを追加
rpm -Uvh http://ftp-srv2.kddilabs.jp/Linux/distributions/fedora/epel/6/i386/epel-release-6-8.noarch.rpm
vi /etc/yum.repos.d/epel.repo
-EPEL リポジトリの利用準備が整ったら、L2TP を実現するためのパッケージ "xl2tpd" をインストール
--yum install xl2tpd
** 編集ファイル一覧 [#n17a162c]
- /etc/xl2tpd/xl2tpd.conf
- /etc/ppp/options.xl2tpd
- /etc/strongswan/ipsec.conf
- /etc/strongswan/ipsec.d/l2tp-psk.conf
- /etc/strongswan/ipsec.secrets
- /etc/sysctl.conf
- /etc/ppp/chap-secrets
- /etc/sysconfig/selinux
- /etc/sysconfig/iptables
** /etc/xl2tpd/xl2tpd.conf の編集 [#u3f05004]
-- vi /etc/xl2tpd/xl2tpd.conf
[global]
[lns default]
ip range = 192.168.1.128-192.168.1.254
local ip = 192.168.1.99
require chap = yes
refuse pap = yes
require authentication = yes
name = VPNserver
ppp debug = yes
pppoptfile = /etc/ppp/options.xl2tpd
length bit = yes
** /etc/ppp/options.xl2tpdの編集 [#ya1c1e82]
-- vi /etc/ppp/options.xl2tpd
auth
crtscts
debug
lock
proxyarp
refuse-pap
refuse-chap
refuse-mschap
require-mschap-v2
logfile /var/log/xl2tpd.log
ms-dns 192.168.1.1
ms-dns 192.168.1.2
ipcp-accept-local
ipcp-accept-remote
** IPSec のインストール [#xd64f958]
*** strongswan のインストール(yum) [#c8a76e5c]
openswan にiPhoneからつながらない不具合が有り、~
strongswan に変更
yum install strongswan
*** /etc/strongswan/ipsec.conf の編集 [#j93d9be0]
- vi /etc/strongswan/ipsec.conf
version 2.0
config setup
protostack=netkey
nat_traversal=yes
include /etc/strongswan/ipsec.d/*.conf
*** /etc/strongswan/ipsec.d/l2tp-psk.conf ファイルの作成 [#p3f5fcf9]
- vi /etc/strongswan/ipsec.d/l2tp-psk.conf
conn L2TP-PSK-NAT
rightsubnet=0.0.0.0/0
#rightsubnet=vhost:%priv
forceencaps=yes
dpddelay=10
dpdtimeout=30
dpdaction=clear
also=L2TP-PSK-noNAT
conn L2TP-PSK-noNAT
#conn L2TP-PSK
#
# Configuration for one user with any type of IPsec/L2TP client
# including the updated Windows 2000/XP (MS KB Q818043), but
# excluding the non-updated Windows 2000/XP.
#
#
# Use a Preshared Key. Disable Perfect Forward Secrecy.
#
# PreSharedSecret needs to be specified in /etc/ipsec.secrets as
# YourIPAddress %any: "sharedsecret"
authby=secret
pfs=no
auto=add
keyingtries=3
# we cannot rekey for %any, let client rekey
rekey=no
# Apple iOS doesn't send delete notify so we need dead peer detection
# to detect vanishing clients
#dpddelay=5
#dpdtimeout=10
#dpdaction=clear
# Set ikelifetime and keylife to same defaults windows has
ikelifetime=8h
keylife=1h
# l2tp-over-ipsec is transport mode
type=transport
left=192.168.1.3
leftnexthop=%defaultroute
#leftsubnet=192.168.1.0/24
# For updated Windows 2000/XP clients,
# to support old clients as well, use leftprotoport=17/%any
leftprotoport=17/1701
# The remote user.
right=%any
# Using the magic port of "%any" means "any one single port". This is
# a work around required for Apple OSX clients that use a randomly
# high port.
rightprotoport=17/%any
#rightprotoport=17/0
#ike=3des-md5
#esp=3des-md5
#forceencaps=yes
*** /etc/strongswan/ipsec.secrets の編集 [#cb93133f]
- vi /etc/strongswan/ipsec.secrets
: PSK "password"
include /etc/strongswan/ipsec.d/*.secrets
- root 以外の参照禁止
--chmod go-rwx /etc/strongswan/ipsec.secrets
*** (参考) Log levelの変更 [#f65e6acc]
sudo vi /etc/strongswan/strongswan.d/charon-logging.conf
+2個所(fileとrsyslog)
# Default loglevel.
# default = 1
default = 2
** 起動 [#b26bc26a]
- service strongswan start
- service xl2tpd start
** 自動起動の設定 [#fcf48df3]
-chkconfig strongswan on
-chkconfig xl2tpd on
**NETKEY detected, testing for disabled ICMP send_redirects [FAILED] 対策 [#uce6303e]
- vi /etc/sysctl.conf
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.default.accept_redirects = 0
net.ipv4.conf.lo.send_redirects = 0
net.ipv4.conf.lo.accept_redirects = 0
net.ipv4.conf.eth0.send_redirects = 0
net.ipv4.conf.eth0.accept_redirects = 0
net.ipv4.conf.eth1.send_redirects = 0
net.ipv4.conf.eth1.accept_redirects = 0
net.ipv4.ip_forward = 1
**反映 [#j7a75f4b]
- sysctl -p
**Pluto listening for IKE on udp 500 Pluto listening for NAT-T on udp 4500 [FAILED] 対応 [#f4032877]
yum install lsof
**libpcap-devel のインストール [#n440e100]
yum install libpcap-devel ppp
** selinux 無効化 [#z2663064]
- vi /etc/sysconfig/selinux
SELINUX=disabled
** サーバーの再起動 [#u6a717ae]
** iptables 編集 [#t47573ec]
- vi /etc/sysconfig/iptables
-- 追加
-A FORWARD -i ppp+ -j ACCEPT
-A FORWARD -o ppp+ -j ACCEPT
-A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p esp -j ACCEPT
-A INPUT -p udp -m udp --dport 50 -j ACCEPT
-A INPUT -p udp -m udp --dport 500 -j ACCEPT
-A INPUT -p udp -m udp --dport 4500 -j ACCEPT
-A INPUT -p udp -m udp --dport 1701 -j ACCEPT
** /etc/ppp/chap-secrets の編集 [#f3e9a6dc]
- vi /etc/ppp/chap-secrets
# アカウント 接続名 パスワード IPアドレス
"vpn-account" * "vpn-password" *
** log ファイル、ひな形の作成 [#y61f1ddf]
touch /var/log/xl2tpd.log
** ルーターのポート開放 [#r22a8dec]
- udp 500
- udp 4500
- 50
- 1701
** Client の設定 [#f328d2b5]
*** Windows [#h58ac449]
+レジストリの変更 [#k194a06b]
-- regedit
--- HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\PolicyAgent
--- 新規 「DWORD値」[AssumeUDPEncapsulationContextOnSendRule ]
--- 値 2
+ Windows,エラー,1 [#gd104903]
-指定したユーザー名またはパスワードが認識されないか、選択した認証プロトコルがリモート アクセス サーバーで許可されていないため、リモート接続が拒否されました。」
--本当にパスワードが間違えてる。
--コピペでなく手打ちすると直った。
*** iPhone [#y23e04af]
+iPhone の設定で気をつけること [#cd5fd356]
「全ての全ての通信を送信」のチェックがOnだと AU wifi につなげた状態では~
VPN に繋がりませんでした。チェックをオフにすると繋がります。
*** Linux(Ubuntu) [#r3218d82]
-関連ソフトのインストール
sudo apt install network-manager-openvpn network-manager-l2tp
-以下,KDEでの設定
++ 「設定」-「接続」
++ 「+」 -> 「レイヤ2トンネリング プロトコル(L2TP)」を選択
+++ 接続名:適当に決める
+++ 「VPN(l2tp)」タブを選択
+++ Gateway : 接続先URL 例) vpn.hoge.net
+++ User name : ユーザー名
+++ Password : パスワード
++ 「IPSec Settings...」ボタン
+++ チェックオン「Enable IPsec tunnel to L2TP host」
+++ 「Pre-shared key」を入力
* OpenVPN [#md0d17c9]
-[[参考サイト:https://centossrv.com/openvpn.shtml]]
** 設定関連図(構成図) [#k4621803]
Client1 -> Internet - udp -> キャリアルーター -> VPN サーバ -> Internet(全ての通信がVPNサーバ経由を目標とする)~
※tcp は重い。server.conf に tcp-nodelay オプションを記入することにより改善されるが重い。~
※tcp にするには、server.conf で udp を無効化しtcp を有効化。 同様に client 設定ファイルも行う。
** OpenVPN Install [#v02e754c]
*** 必要なパッケージのインストール [#e05fe3f7]
sudo yum -y install openssl-devel lzo-devel pam-devel gcc
*** OpenVPN のインストール [#i36f5d11]
mkdir temp
wget http://swupdate.openvpn.org/community/releases/openvpn-2.3.12.tar.gz
- rpm-buildのインストール
--[[このリンク先を参照(サイト内)>Linux#y2790b50]]
- RPM パッケージの生成
sudo rpmbuild -tb --clean openvpn-2.3.12.tar.gz
- RPM パッケージからインストール
sudo yum -y localinstall ~/rpmbuild/RPMS/x86_64/openvpn-2.3.12-1.x86_64.rpm
*** easy-rsa のインストール [#ld9dbc80]
cd ~/temp
wget https://github.com/OpenVPN/easy-rsa/archive/master.zip
unzip master.zip
- easy-rsa をコピー
sudo cp -r easy-rsa-master/easyrsa3/ /etc/openvpn/
** 証明書の作成とファイルのコピー [#r543789a]
※以下 su - で実行
*** 最初の1回のみ初期化 [#v215f57c]
cd /etc/openvpn/easyrsa3/
./easyrsa init-pki
*** CA証明書・秘密鍵作成 [#z08e40b7]
- CA証明書は認証局サーバで認証するための証明書 [[参考(認証局)(外部サイト):https://jp.globalsign.com/knowledge/ca.html]]
./easyrsa build-ca
~
Enter PEM pass phrase: (任意のパスワード)
Verifying - Enter PEM pass phrase: (任意のパスワード)(確認)
~
Common Name (eg: your user, host, or server name) [Easy-RSA CA]:(サイト名) 例) tar3.net
~
CA creation complete and you may now import and sign cert requests.
Your new CA certificate file for publishing is at:
/root/easy-rsa-master/easyrsa3/pki/ca.crt
- CA証明書のコピー
cp pki/ca.crt /etc/openvpn/
*** サーバ証明書の作成 [#h3722ce5]
./easyrsa build-server-full server nopass
Enter pass phrase for /etc/openvpn/easyrsa3/pki/private/ca.key: (CA秘密鍵のパスワード)(上記で入力)
~
Data Base Updated
- ファイルのコピー
cp pki/issued/server.crt /etc/openvpn/
cp pki/private/server.key /etc/openvpn/
*** DH(Diffie Hellman)パラメータ作成 [#e40aa37e]
-DH(Diffie Hellman)パラメータとは?
-- [[参考 外部サイト:http://devillinuxvpn.eksd.jp/appendix_dhkeyexchange.html]]
-- 以下抜粋
(セキュリティー確保のため共有キーを直接やりとりしないために)登場するのが、
DH鍵交換方式。
DH鍵交換方式では、共通鍵そのものを送受信せず、
共通鍵を作り出す材料となる数のみを互いに交換する。
共通鍵そのものを送受信していないのに、同じ共通鍵を持つことができ
セキュリティーを確保することができる。
-DH(Diffie Hellman)パラメータ作成
./easyrsa gen-dh
(少し時間がかかるので終わるまで待つ(数分?)
-ファイルのコピー
cp pki/dh.pem /etc/openvpn/
*** 証明書廃止リスト作成 [#i6c69c89]
./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
- 廃止
./easyrsa revoke dmy
~
Continue with revocation: yes (Enter)
~
IMPORTANT!!!
Revocation was successful. You must run gen-crl and upload a CRL to your
infrastructure in order to prevent the revoked cert from being accepted.
- 作成
./easyrsa gen-crl
~
Enter pass phrase for /etc/openvpn/easyrsa3/pki/private/ca.key:(CA秘密鍵のパスワード)(上記で入力)
An updated CRL has been created.
CRL file: /etc/openvpn/easyrsa3/pki/crl.pem
- ファイルのコピー
cp ./pki/crl.pem /etc/openvpn/
- アクセス権の変更
chmod o+r /etc/openvpn/crl.pem
** OpenVPN の設定(server.conf) [#fa72fde1]
※以下 su - で実行
- TLS認証キーの作成
openvpn --genkey --secret /etc/openvpn/ta.key
- サンプル設定ファイルのコピー
cp /usr/share/doc/openvpn-*/sample/sample-config-files/server.conf /etc/openvpn/
- server.conf の編集~
[[参考(OpenVPN日本語サイト):http://www.openvpn.jp/document/how-to/#RoutedOrBridged]]内~
「クライアントのすべてのトラフィック(Webトラフィックを含む)をVPN経由にルーティングする」
-- vi /etc/openvpn/server.conf
port 1194
~
proto udp
※tcp は重い。server.conf に tcp-nodelay オプションを記入することにより改善されるが重い。
※tcp にするには、server.conf で udp を無効化しtcp を有効化。 同様に client 設定ファイルも行う。
~
dev tun ← 確認するだけ。デフォルトで設定済み
~
ca ca.crt
cert server.crt
key server.key # This file should be kept secret
~
dh dh.pem ← 左記のように変更する。DHパラメータ ファイル名
~
server 10.8.0.0 255.255.255.0 ← VPNクライアント割当てアドレス範囲(デフォルト)
~
ifconfig-pool-persist ipp.txt
~
;push "route 192.168.10.0 255.255.255.0"
;push "route 192.168.20.0 255.255.255.0"
push "route 192.168.3.0 255.255.255.0" ← 追加(LAN(例:192.168.3.0/24)へのルートをVPNサーバー経由にする)
~
push "redirect-gateway def1" <- インターネットへのアクセスをVPN経由で行う
~
push "dhcp-option DNS 192.168.1.1" <- インターネットアクセス時に使用するDNSサーバ
~
tls-auth ta.key 0 # This file is secret ← 行頭の;を削除してコメント解除(TLS認証有効化)
~
comp-lzo
~
user nobody ← 行頭の;を削除してコメント解除(OpenVPN実行権限を下げる)
group nobody ← 行頭の;を削除してコメント解除(OpenVPN実行権限を下げる)
~
persist-key
persist-tun
~
status openvpn-status.log
~
log-append /var/log/openvpn.log ← 行頭の;を削除してコメント解除(ログを/var/log/openvpn.logに記録する)
~
verb 3
~
management localhost 7505 ← 最終行へ追加(管理インタフェースの有効化※後述)
~
crl-verify crl.pem ← 最終行へ追加(証明書廃止リストの有効化)
~
最終行へ以下を追加(OpenVPN経由でSambaへのアクセスがエラーになる場合)
fragment 1280
mssfix 1280
link-mtu 1400
cipher AES-128-CBC
** ファイアウォール設定 (省略) [#e9d7ab41]
** ログ ローテーション [#kf484de5]
※以下 su - で実行
- vi /etc/logrotate.d/openvpn
/var/log/openvpn.log {
missingok
notifempty
sharedscripts
postrotate
systemctl restart openvpn 2>&1 > /dev/null || true
endscript
}
** OpenVPN の起動 [#k60bb994]
※以下 su - で実行
*** OpenVPN 起動スクリプトの編集 [#kb53a6b2]
- vi /etc/rc.d/init.d/openvpn
-- 行頭の # を削除してコメント解除
echo 1 > /proc/sys/net/ipv4/ip_forward
*** OpenVPN の起動 [#p7b8bb2d]
service openvpn start
*** 自動起動の設定 [#oa9e6f69]
chkconfig openvpn on
** ファイアウォール設定 [#m0755311]
設定関連図(構成図)~
Client1 -> Internet -> キャリアルーター -> VPN サーバ -> Internet(全ての通信がVPNサーバ経由を目標とする)
*** キャリアルーターの設定 [#j01c0a5a]
+1194ポートをVPNサーバへ転送(tcp の場合は tcp ポートを。udp の場合はUDPポートを)
+10.8 系へのルートの追加 10.8.0.0 のゲートウェイを VPNサーバへ
*** VPNサーバのファイアウォール設定(省略) [#j4f86180]
** クライアント証明書の秘密キー作成 [#qd1e818c]
※以下 su - で実行
*** クライアント証明書・秘密鍵作成(パスフレーズ認証なし) [#b48cd22a]
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
** クライアントの設定 [#m7628219]
*** Windows(iPhoneの場合も設定ファイルを作るのでこちらから) [#ob4f7108]
+共通
++ OpenVPN クライアントのダウンロード
--- [[OpenVPN:https://openvpn.net/index.php/open-source/downloads.html]]
++ OpenVPN のインストール
+新(2019/2/5)
--(設定ファイルがある前提でスタート)
++OpenVPNソフトを起動
++タスクトレイにあるOpenVPNアイコンを右クリック、「Import File」を選択
++*.ovpn ファイルを選択
++タスクトレイにあるOpenVPNアイコンを右クリック、「設定」を選択
++「Advanced」タブを選択
++「設定ファイル」の場所を確認し、「ディレクトリ」のPATHをコピーする。
++エクスプローラーで上記のコピーしたPATHを開く
++以下のファイルをコピーする。
+++ ca.crt (/etc/openvpn/easyrsa3/pki/ca.crt)
+++ ta.key (/etc/openvpn/ta.key)
+++ 接続名.crt 例) clientConnect.crt (/etc/openvpn/easyrsa3/pki/issued/clientConnect.crt)
+++ 接続名.key 例) clientConnect.key (/etc/openvpn/easyrsa3/pki/private/clientConnect.key)
++接続の確認
+++ タスクトレイにあるOpenVPNアイコンを右クリック、「接続」を選択
+旧
++ サンプルファイルのコピー
--- コピー元
C:\Program Files\OpenVPN\sample-config\client.ovpn
--- コピー先
C:\Program Files\OpenVPN\config
++ client.ovpn の編集
--- 外からクライアントで接続する先を設定
remote tar3.net 1194
--- クライアント証明書、秘密鍵の指定
ca ca.crt
cert client1.crt
key client1.key
--- 中間者攻撃(Man-in-the-Middle)対策。※中間者攻撃については[[こちら(wikipedia)から:https://ja.wikipedia.org/wiki/%E4%B8%AD%E9%96%93%E8%80%85%E6%94%BB%E6%92%83]]
remote-cert-tls server
--- TLS 認証の有効化
tls-auth ta.key 1
--- (参考) Samba アクセス対策(追加)
fragment 1280
mssfix 1280
link-mtu 1400
++必要ファイルをクライアントへコピー(※必ずセキュアな接続で行うこと)
--- コピー元
>
+++ CA証明書
/etc/openvpn/ca.crt
+++ クライアント証明書
/etc/openvpn/easyrsa3/pki/issued/client1.crt
+++ クライアント秘密鍵
/etc/openvpn/easyrsa3/pki/private/client1.key
+++ TLS認証鍵
/etc/openvpn/ta.key
<
--- コピー先
>
- C:\Program Files\OpenVPN\config
<
*** iPhone(Windows の場合が終わってから) [#r7a0f789]
- OpenVPN のインストール
- iTunes 経由で iPhone へファイルを送り込む。
-- iTunes -> iPhone -> アプリ -> 下に画面をスクロールすると、ファイルを入れられる機能がある
** 接続確認 [#jd8f029b]
*** Windows [#g2596e75]
- OpenVPN を起動し、タスクトレイにあるアイコンを右クリック、接続を選択
-- Windows のネットワークは、インターネット経由(テザリング)などにしておくほうが望ましい。~
自宅LANからだと名前解決、認証解決ができない場合が多い。~
また本当の意味でのテストにならない。
-- 「確認くん」というグローバルIPをチェックするサイトがある(これで接続の状況がわかる。)
-- [[CMAN(Global address 確認):https://www.cman.jp/network/support/go_access.cgi]]
*** iPhone [#x45d0d9c]
- OpenVPN アプリの起動。
- 緑色の + ボタンを押す。
- あとは○をスライドし接続する。
-- iPhone の場合も、無線LAN環境ではなく、4G回線などインターネット経由が望ましい。~
理由は上記の Windows の場合と同様。~
無線LAN環境をやめるためには、現在接続設定がある全ての無線LANの接続を切断し、~
どこの無線LANにも繋がっていない環境を作ることにより可能。
*** 疎通確認 [#r6b00033]
Ping による疎通確認が可能だが、通らない場合は大抵ルートの問題。~
キャリアルーターにきちんと静的ルートが書いてあるか。また間違えてないか、など~
OpenVPN サーバの Push "Route ..." は関係ない場合が多く、そこをいじっても解決しない時が多い。
*** VPNクライアントの削除 [#ca836d89]
※以下 su - で実行
-クライアント証明書廃止
cd /etc/openvpn/easyrsa3/
./easyrsa revoke client1
~
Continue with revocation: yes を入力
~
Enter pass phrase for /etc/openvpn/easyrsa3/pki/private/ca.key <-CA秘密鍵のパスワードを入力
-証明書類の削除
rm -f ./pki/issued/client1.crt ← client1証明書類削除
rm -f ./pki/private/client1.key ← client1証明書類削除
rm -f ./pki/reqs/client1.req ← client1証明書類削除
./easyrsa gen-crl ← 証明書廃止リストを作成
~
Enter pass phrase for /etc/openvpn/easyrsa3/pki/private/ca.key: <-CA秘密鍵のパスワードを入力
~
CRL file: /etc/openvpn/easyrsa3/pki/crl.pem
-廃止証明書のコピー
cp ./pki/crl.pem /etc/openvpn/
-廃止証明書への権限付与
chmod o+r /etc/openvpn/crl.pem
***接続中クライアントの強制切断 [#s1179195]
※以下 su - で実行
-telnet のインストール
yum install telnet
-OpenVPN の管理インターフェースへアクセス
telnet localhost 7505
-status の確認
status
client1,124.211.3.180:1617,6882,7144,Tue Nov 28 19:26:53 2006 ← client1が接続中
-client1 の強制切断
kill client1
-status の再確認
status
-OpenVPN管理インタフェース終了
exit
** トラブル [#cac0d20b]
*** Server:Version2.4, Client:Version2.6,繋がらない [#o429645a]
-エラーメッセージ
-- OpenSSL: error:0308010C:digital envelope routines::unsupported Cipher algorithm 'BF-CBC' not found Unsupported cipher in --data-ciphers: BF-CBC
-採用されなくなったcipher(サイファー)が原因
+ サーバー側
++ sudo vim /etc/openvpn/server.conf
--- 末尾に以下を追加
cipher AES-128-CBC
+ クライアントの.ovpnファイルの末尾へ追加
++Version2.6
data-ciphers AES-128-CBC
++Version2.4
cipher AES-128-CBC
* WireGuard [#hb872620]
** 参考リンク [#lda4e9a3]
+[[WireGuardは良き 〜インストールから導入まで〜:https://qiita.com/yuito723/items/13d9ddafe0f10bb8d2b7]]
+[[【Ubuntu】WireGuardで簡単VPN環境を構築:https://vpslife.server-memo.net/ubuntu_wireguard_install/]]
** 構成 [#v7fe2bb4]
+「クライアント(PC,スマホなど)」 <- インターネット -> LAN
++ 「WireGuard server」(LAN IP address) 192.168.1.0/24 (ルーターで51820ポートを通すのはこっち)
++ 「WireGuard server」(VPN用 IP address) 192.168.2.0/24 (クライアントがVPNに繋った時、このレンジのIPアドレスが割り当たる)
+WireGuard server : Ubuntu 24.04 server
+WireGuard : 1.0.20210914-1ubuntu4
** 事前準備 [#u8e73490]
*** forwardの有効化 [#sd2f446d]
sudo vi /etc/sysctl.conf
-以下のコメントアウトを削除(有効化)
# Uncomment the next line to enable packet forwarding for IPv4
net.ipv4.ip_forward=1
-反映
sudo sysctl -p
** install(Ubuntuのセットアップは省略) [#s491fca2]
+ sudo apt update
+ sudo apt upgrade
+ sudo apt install
** 鍵の作成 [#a82db56a]
+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
+クライアント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
++ クライアント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
++ 以下、クライアントの数だけ繰り返し。~
自分は6つの携帯やPCがあったので6個作りました。~
ちなみに同時接続できるのは 1 peer あたり1つの端末です。~
端末が複数ある場合は peer を分けて複数IPで運用する方が良さそうです。
** server側の設定ファイルを作成 [#y472f440]
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側の設定ファイルを作成 [#rad2f703]
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の起動と再起動時の自動起動 [#g8b247bb]
sudo wg-quick up wg0
sudo systemctl enable wg-quick@wg0
** (参考) 停止と無効化、再起動前の実行 [#tee8e3a4]
sudo wg-quick down wg0
sudo systemctl disable wg-quick@wg0
** QRコードでのクライアント設定準備(QRコード表示準備) [#kf781464]
+ qrencode のインストール
sudo apt install qrencode
+ 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
** ログの出力 [#z93a070a]
+[[参考サイト(WireGuardの接続・切断のログをファイルに出力させる手順):https://tech-mmmm.blogspot.com/2022/04/wireguard.html]]
modprobe wireguard && echo module wireguard +p > /sys/kernel/debug/dynamic_debug/control
-- crontab
@reboot /usr/sbin/modprobe wireguard && echo module wireguard +p > /sys/kernel/debug/dynamic_debug/control
+rsyslogにて/var/log/messagesに出力させる
-- vi /etc/rsyslog.conf
*.info;mail.none;authpriv.none;cron.none;kern.debug /var/log/messages
+再起動時、自動実行
++ sudo vi /etc/rc.local
#!/bin/bash
/usr/sbin/modprobe wireguard && echo module wireguard +p > /sys/kernel/debug/dynamic_debug/control
++ 実行権限追加
sudo chmod +x /etc/rc.local
++ 再起動して確認~
wireguard関連が「=p」になっていること~
「[wireguard]wg_receive_handshake_packet =p」
cat /sys/kernel/debug/dynamic_debug/control | grep wire
** clientの設定 [#iaf906b9]
*** iPhone, iPad [#vfd9d36f]
+「App Store」から「wireguard」で検索、ダウンロード
+ 「WireGuard」アプリを起動し「+」を押す
++ファイルから
--- セキュアなファイルサービスを使いましょう。~
自分は自前のNextCloudサーバを使いました。
--- NextCloud -> ファイル -> 共有 -> WireGuardで設定ファイルをインポートできます
++QRコードから
--- 上記のQRコードを読み込ませると設定は入るのですが、~
設定名は手打ちしないといけないです。。。
+確認
-- 「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 [#z5f7ecb0]
+「Play ストア」から「wireguard」で検索。インストール。
+自分はNextCloudからファイルを読み込みます。~
wireguardのアプリから「+」->「ファイル、アーカイブからインポート」->「NextCloud」の中のファイルを選択してインポート。
+VPNの設定名は15文字位までなので注意
*** Windows [#qca6a917]
+ダウンロードリンク:[[(公式)Installation:https://www.wireguard.com/install/]]
+「トンネルの追加」->「空のトンネルを追加」
+「名前」の入力。クライアント設定の文言(クライアント側の設定ファイルの内容)を記載して「保存」ボタンを押す。
+ テザリングなどでインターネット回線にする。
+ 接続してLAN(192.168.1.0/24)の他のコンピュータにpingが通ることを確認
*** Linux(Ubuntu) [#s76958ab]
+ WireGuard のインストール
sudo apt install wireguard
+ クライアント設定ファイルの作成
-- 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
+ 接続スクリプトの作成
-- vi ~/wgup.sh
sudo /usr/bin/wg-quick up wg0
--- 実行権限の付与
sudo chmod +x ~/wgup.sh
+ 切断スクリプトの作成
-- vi ~/wgdown.sh
sudo /usr/bin/wg-quick down wg0
--- 実行権限の付与
sudo chmod +x ~/wgup.sh
+ 接続
~/wgup.sh
+ 切断
~/wgdown.sh
* 過去ログ [#t74b739c]
** ipsec の確認 ipsec verify [#f1a8b37f]
- ipsec verify
- うちの結果はこんな感じです(^^)
Verifying installed system and configuration files
Version check and ipsec on-path [OK]
Libreswan 3.7 (netkey) on 2.6.32-431.3.1.el6.i686
Checking for IPsec support in kernel [OK]
NETKEY: Testing XFRM related proc values
ICMP default/send_redirects [OK]
ICMP default/accept_redirects [OK]
XFRM larval drop [OK]
Pluto ipsec.conf syntax [OK]
Hardware random device [N/A]
Two or more interfaces found, checking IP forwarding [OK]
Checking rp_filter [ENABLED]
/proc/sys/net/ipv4/conf/default/rp_filter [ENABLED]
/proc/sys/net/ipv4/conf/lo/rp_filter [ENABLED]
/proc/sys/net/ipv4/conf/eth0/rp_filter [ENABLED]
/proc/sys/net/ipv4/conf/ppp0/rp_filter [ENABLED]
rp_filter is not fully aware of IPsec and should be disabled
Checking that pluto is running [OK]
Pluto listening for IKE on udp 500 [OK]
Pluto listening for IKE/NAT-T on udp 4500 [OK]
Pluto ipsec.secret syntax [OK]
Checking NAT and MASQUERADEing [TEST INCOMPLETE]
Checking 'ip' command [OK]
Checking 'iptables' command [OK]
Checking 'prelink' command does not interfere with FIPSChecking for obsolete ipsec.conf options [OK]
Opportunistic Encryption [DISABLED]
ipsec verify: encountered 9 errors - see 'man ipsec_verify' for help
- うちの結果はこんな感じ(^^)
Verifying installed system and configuration files
Version check and ipsec on-path [OK]
Libreswan 3.7 (netkey) on 2.6.32-431.3.1.el6.i686
Checking for IPsec support in kernel [OK]
NETKEY: Testing XFRM related proc values
ICMP default/send_redirects [OK]
ICMP default/accept_redirects [OK]
XFRM larval drop [OK]
Pluto ipsec.conf syntax [OK]
Hardware random device [N/A]
Two or more interfaces found, checking IP forwarding [OK]
Checking rp_filter [ENABLED]
/proc/sys/net/ipv4/conf/default/rp_filter [ENABLED]
/proc/sys/net/ipv4/conf/lo/rp_filter [ENABLED]
/proc/sys/net/ipv4/conf/eth0/rp_filter [ENABLED]
/proc/sys/net/ipv4/conf/ppp0/rp_filter [ENABLED]
rp_filter is not fully aware of IPsec and should be disabled
Checking that pluto is running [OK]
Pluto listening for IKE on udp 500 [OK]
Pluto listening for IKE/NAT-T on udp 4500 [OK]
Pluto ipsec.secret syntax [OK]
Checking NAT and MASQUERADEing [TEST INCOMPLETE]
Checking 'ip' command [OK]
Checking 'iptables' command [OK]
Checking 'prelink' command does not interfere with FIPSChecking for obsolete ipsec.conf options [OK]
Opportunistic Encryption [DISABLED]
ipsec verify: encountered 9 errors - see 'man ipsec_verify' for help