Linux
VPN Centos
vpn 比較 †
- こちらのサイト参照
- openVPN を初めにインストールしましたが、
ios へ対応していないのでボツ
- 次に pptp をインストールしましたが、
emobile に対応していないのでボツ
- 最後に L2TP をインストール
pptp サーバー構築 (CentOS 5) †
L2TP サーバー構築(centos 5) †
参考サイト †
CentOS に epel レポジトリのインストール †
編集ファイル一覧 †
- /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 の編集 †
/etc/ppp/options.xl2tpdの編集 †
IPSec のインストール †
strongswan のインストール(yum) †
openswan にiPhoneからつながらない不具合が有り、
strongswan に変更
yum install strongswan
/etc/strongswan/ipsec.conf の編集 †
/etc/strongswan/ipsec.d/l2tp-psk.conf ファイルの作成 †
- 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 の編集 †
起動 †
- service strongswan start
- service xl2tpd start
自動起動の設定 †
- chkconfig strongswan on
- chkconfig xl2tpd on
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 無効化 †
- vi /etc/sysconfig/selinux
SELINUX=disabled
サーバーの再起動 †
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 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 の編集 †
log ファイル、ひな形の作成 †
touch /var/log/xl2tpd.log
ルーターのポート開放 †
Client の設定 †
Windows †
- レジストリの変更 [#k194a06b]
- regedit
- HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet?\Services\PolicyAgent?
- 新規 「DWORD値」[AssumeUDPEncapsulationContextOnSendRule? ]
- 値 2
- Windows,エラー,1 [#gd104903]
- 指定したユーザー名またはパスワードが認識されないか、選択した認証プロトコルがリモート アクセス サーバーで許可されていないため、リモート接続が拒否されました。」
- 本当にパスワードが間違えてる。
- コピペでなく手打ちすると直った。
iPhone †
- 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証明書・秘密鍵作成 †
- CA証明書は認証局サーバで認証するための証明書 参考(認証局)(外部サイト)
./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/
サーバ証明書の作成 †
./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
- 廃止
./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) †
※以下 su - で実行
ファイアウォール設定 (省略) †
ログ ローテーション †
※以下 su - で実行
OpenVPN の起動 †
※以下 su - で実行
OpenVPN 起動スクリプトの編集 †
- vi /etc/rc.d/init.d/openvpn
OpenVPN の起動 †
service openvpn start
自動起動の設定 †
chkconfig openvpn on
ファイアウォール設定 †
設定関連図(構成図)
Client1 -> Internet -> キャリアルーター -> VPN サーバ -> Internet(全ての通信がVPNサーバ経由を目標とする)
キャリアルーターの設定 †
- 1194ポートをVPNサーバへ転送(tcp の場合は tcp ポートを。udp の場合はUDPポートを)
- 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の場合も設定ファイルを作るのでこちらから) †
- 共通
- OpenVPN クライアントのダウンロード
- 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アイコンを右クリック、「接続」を選択
- 旧
- サンプルファイルのコピー
- client.ovpn の編集
- 必要ファイルをクライアントへコピー(※必ずセキュアな接続で行うこと)
- コピー元
- 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 の場合が終わってから) †
- OpenVPN のインストール
- iTunes 経由で iPhone へファイルを送り込む。
- iTunes -> iPhone -> アプリ -> 下に画面をスクロールすると、ファイルを入れられる機能がある
接続確認 †
Windows †
- OpenVPN を起動し、タスクトレイにあるアイコンを右クリック、接続を選択
- Windows のネットワークは、インターネット経由(テザリング)などにしておくほうが望ましい。
自宅LANからだと名前解決、認証解決ができない場合が多い。
また本当の意味でのテストにならない。
- 「確認くん」というグローバルIPをチェックするサイトがある(これで接続の状況がわかる。)
- CMAN(Global address 確認)
iPhone †
- OpenVPN アプリの起動。
- 緑色の + ボタンを押す。
- あとは○をスライドし接続する。
- iPhone の場合も、無線LAN環境ではなく、4G回線などインターネット経由が望ましい。
理由は上記の Windows の場合と同様。
無線LAN環境をやめるためには、現在接続設定がある全ての無線LANの接続を切断し、
どこの無線LANにも繋がっていない環境を作ることにより可能。
疎通確認 †
Ping による疎通確認が可能だが、通らない場合は大抵ルートの問題。
キャリアルーターにきちんと静的ルートが書いてあるか。また間違えてないか、など
OpenVPN サーバの Push "Route ..." は関係ない場合が多く、そこをいじっても解決しない時が多い。
VPNクライアントの削除 †
※以下 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
接続中クライアントの強制切断 †
※以下 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
トラブル †
Server:Version2.4, Client:Version2.6,繋がらない †
- エラーメッセージ
- 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
過去ログ †
ipsec の確認 ipsec verify †
- 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