OpenVPNを使ってクライアントVPNを構築

何をするか

外出先のインターネットからクライアントVPNを使って自宅NWに接続する。

OpenVPNサーバの構築

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

作業ディレクトリを作成してコピーして移動。

CA(認証局)の初期化。

CA(認証局)を作成。

CA秘密鍵のパスワードが聞かれるので任意のパスワードを入力。

処理が完了すると以下のファイルが作成される。

DH(Diffie-Hellman)パラメータの生成。

サーバ用秘密鍵、証明書の作成
※nonpassオプションをつけるとパスフレーズを省略できる。

クライアント用証明書、秘密鍵の作成
※nonpassオプションをつけるとパスフレーズを省略できる。

CA秘密鍵のパスワードが聞かれるのでパスワードを入力

処理が完了すると以下のファイルが作成される。
サーバ用証明書:client_1.crt
サーバ用秘密鍵:client_1.key

OpenVPNのテンプレコンフィグをコピー。

メインの設定ファイルを編集。

vpnux Clientの設定

vpnux Clientを起動して「プロファイル」→「追加」を押下する。
■一般設定
プロファイル名:任意
VPNサーバ:OpenVPNサーバのグローバルIP
デバイス:TUN
拡張設定:[LZO圧縮を有効にする]をチェック
CA証明書:「ca.crt」を選択
認証:「証明書認証(PKI)を使用」を選択
証明書認証(PKI)/証明書:「client1.crt」を選択
証明書認証(PKI)/秘密鍵:「client1.key」を選択
■詳細設定
追加セキュリティ設定:「TSL-Auth HMAC署名を使用」をチェック
追加セキュリティ設定/共有鍵:「ta.key」を選択

ログからのトラシュー

暗号方式を大文字で記載していた。
cipher AES-256-CBC → cipher aes-256-cbc
Fri May 15 10:44:27 2020 TLS Error: cannot locate HMAC in incoming packet from [AF_INET]61.86.178.47:1194

プロトコルのipv4の指定が抜けていた。
udp → udp4
Fri May 15 10:37:02 2020 Could not determine IPv4/IPv6 protocol. Using AF_INET

CentOS7のサーバ構築でうまくいかない時の共通確認事項

サーバを構築する際にいつも忘れてしまうところ。

・SELINUXの無効化
状態確認
getenforce

永久的に無効化
vi /etc/selinux/config
—-
SELINUX=enforcing
—-

・FWの無効化
状態確認
systemctl status iptables
systemctl status firewalld

停止(再起動すると復活する)
/etc/init.d/iptables stop
systemctl stop firewalld

・それでも無理な場合
サービスの状態確認、エラーの場合は問題箇所も表示される
systemctl status [サービス名]

エラーログ確認
vi /var/log/[ログファイル]
jounalctl

(zabbix)Template OS Linux内のデフォルトのアイテムとその表示例

zabbixサーバって構築した後も監視項目のチューニングとか大変そう、と思っていたのですがデフォルトで存在するテンプレート「Template OS Linux」で一般的な監視項目(アイテム)は既に入っていたので「Template OS Linux」内の監視項目を整理します。

zabbixサーバ、エージェントのバージョンは「3.4.15」

※右側は監視している値の表示例
■General セクション
Host boot time : 2020/4/11 7:21:16
Host local time : 2020/5/13 15:14:21
Host name : ip-172-131-49-55
System information : Linux ip-172-131-49-55 4.4.0-1105-aws #112-Ubuntu SMP Wed Mar 18 05:11:57 UTC 2020 x86_64
System uptime : 32 days, 07:50:10

■Memory セクション
Available memory : 488.09 MB
Free swap space : 436.63 MB
Free swap space in % : 68.79%
Total memory : 990.65 MB
Total swap space : 634.76 MB

■Network interfaces セクション
Incoming network traffic on eth0 : 1.46 Kbps
Outgoing network traffic on eth0 : 2.51 Kbps

■OS セクション
Host boot time : 2020/4/11 7:21:16
Host local time : 2020/5/13 15:19:21
Host name : ip-172-131-49-55
Maximum number of opened files : 99246
Maximum number of processes : 32768
Number of logged in users : 1
System information : Linux ip-172-131-49-55 4.4.0-1105-aws #112-Ubuntu SMP Wed Mar 18 05:11:57 UTC 2020 x86_64
System uptime : 32 days, 07:50:10

■Performance セクション
Context switches per second : 86 sps
CPU idle time : 99.9%
CPU interrupt time : 0%
CPU iowait time : 0%
CPU nice time : 0%
CPU softirq time : 0%
CPU steal time : 0.02%
CPU system time : 0.02%
CPU user time : 0.07%
Interrupts per second : 47 ips
Processor load (1 min average per core) : 0
Processor load (5 min average per core) : 0
Processor load (15 min average per core) : 0

■Processes セクション
Number of processes : 129
Number of running processes :  1

■Security セクション
Checksum of /etc/passwd : 4980275739
Number of logged in users : 1

■Zabbix agent セクション
Agent ping : Up (1)
Host name of zabbix_agentd running : WebServer
Version of zabbix_agent(d) running : 3.4.15

(bind)ルートDNSサーバとキャッシュサーバの関係とnamed.caについて

名前解決の流れを整理

https://www.xxx.jp というWebサイトにアクセスする場合
①クライアントAは「www.xxx.jp」のIPアドレスを知る為に、PCに設定されたDNSキャッシュサーバに名前解決を依頼する。
②名前解決を依頼された検索用DNSサーバはルートDNSサーバに問い合わせをする。
③ルートDNSサーバ自身は「www.xxx.jp」のIPアドレスは知らないが、「.jp」ドメインを管轄しているDNSサーバBのIPアドレスを知っているのでそのアドレスを返す。
④DNSキャッシュサーバはDNSサーバBに対して問い合わせをする。
⑤DNSサーバB自身は「www.xxx.jp」のIPアドレスは知らないが、「xxx.jp」ドメインを管轄しているDNSサーバCのIPアドレスを知っているのでそのアドレスを返す。
⑥DNSキャッシュサーバはDNSサーバCに対して問い合わせをする。
⑦DNSサーバCは「www.xxx.jp」のIPアドレスを知っているのでそのアドレスを返す。
⑧DNSキャッシュサーバはクライアントAに「www.xxx.jp」のIPアドレスを返す。
⑨DNSキャッシュサーバは「www.xxx.jp」のIPアドレスを元に「https://www.xxx.jp」へアクセスする。

DNSキャッシュサーバのパターン

①ISPが運用するDNSキャッシュサーバを使用する場合
一番スタンダードで特に追加の設定は不要。ONUからIPアドレスを自動取得するとISPのDNSキャッシュサーバも一緒に降ってくる。
②インターネット上のDNSキャッシュサーバを使用する場合
PCにインターネット上のDNSキャッシュサーバのアドレスを手動設定する。有名なDNS1サーバでgoogleの8.8.8.8などがある。
③自前でキャッシュサーバを用意する場合
PCに自前で用意したのDNSキャッシュサーバのアドレスを手動設定する。

named.caについて

自前でキャッシュサーバを用意する場合はLinuxのBIND等を使ってDNSキャッシュサーバを構築する必要がある。

名前解決の流れで記載した通り、DNSキャッシュサーバはルートDNSサーバのに問い合わせを行うのでルートDNSサーバの情報を持っている。デフォルトでは「named.ca」という名前のファイルに記載されていたので中身を見てみる。

A~Mまでの13個のルートDNSサーバのアドレスが記載されている。この情報をもとに冒頭に書いた流れの「www.xxx.jp」の名前解決が出来ていることになる。
ちなみにこの情報は変更されることがあるので、自前でキャッシュサーバを用意する場合は定期的に変更確認をしないといつの間にかインターネット上のWebサイトに繋がらなくなることが考えられる。
因みにこのファイルの最新版は下記のリンクに「named.cache」という名前で存在する。
最新版

(vyos)vyosの初期設定

初期ID/PWは「vyos」です。

vyosをインストールするコマンドを入力。

※以下、[]内の値はデフォルト値です。何も入力せずに[Enter]を押下した場合[]内の値が適用されます。

進めるかどうかの確認なので、そのまま[Enter]

パーティションの方式を聞かれるので、そのまま[Enter]

インストール先のディスクを自動で見つけてくれるので、そのまま[Enter]
[]内には対象のディスクが表示されます。

進めるかどうかの確認なので、[Yes]を入力。

vyosが使用するディスクのサイズを聞かれるので、そのまま[Enter]

設定ファイルの場所を聞かれるので、そのまま[Enter]

vyos(管理者)ユーザのパスワード入力と確認。

起動プログラムのインストール先を聞かれるので、そのまま[Enter]

再起動するコマンドを入力。

(vyos)ノートPCを家庭用ルータにする

何をするか

使わなくなったノートPC上でvyosというネットワークOSを導入して、ノートPCを家庭用ルータとして使用してみます。
やる理由としてはvyosを使ってルータを作ってみたかっただけです。

環境
OS:Win8
ソフト:VMware Workstation 12 Player
↓ざっくり構成(before)

↓ざっくり構成(after)
※無線LANアダプタがあればvyos自体がAPにもなれます。

vyosの機能

vyosは企業などで使われる商用ルータと同等の機能があります。
家庭用ルータとしてはほぼ不要ですが…。
yvso機能wiki

WebキャッシュサーバやIPSecVPNは家庭でも使えるかも。

家庭用ルータに必要な機能を洗い出し

・送信元NAT
自宅のPCがインターネットに出る際に使用
・DHCP
自宅のPCがAPにアクセスした際にローカルアドレスを自動取得する為に使用
・DNS転送
ISP(WAN側)から自動取得したDNSの情報をDHCPクライアントに伝える事が出来ないので、自身がDNSサーバのように振る舞いISPのDNSへクエリを中継するため。

VMware Workstationの設定など

vyosのisoをダウンロードして仮想マシンを作成する
vyosのisoをダウンロード → vyos

仮想マシン、仮想ネットワークエディタの設定。
自動ブリッジではなくVMnetを使用したのは、今後の物理インタフェース追加も考えてインタフェースを明示的に指定する為です。
NATを使用しているのはホスト(ノートPC)に振られているグローバルIPをvyosで使用する為です。

ノートPC内部のイメージはこんな感じ。
USBNICを1つつけてるので物理NICが2つあります。

vyosの設定

初期設定は長くなるので別の記事で書きます

LAN側(eth2)、WAN側(eth3)のインタフェースを認識している事を確認。

設定モードに移行してLAN側、WAN側それぞれのアドレスを設定。
ONUからのグローバルIP取得はDHCPです。

SSHを有効にして今までの設定変更を反映。
これでターミナルソフトからSSH経由で接続できます。

LAN→WANへの送信元NATのルールを作成。

DHCPサーバになる為の設定。
アドレスプールは 192.168.1.100-150

DNS転送の設定。

設定を保存して再起動。

使えそうな確認コマンドなど

コンフィグの確認。

インターフェースの状態確認。

ルーティングテーブルの確認。

NATルールの確認。

現在の送信元NATの状態を確認。

完成版コンフィグ

スループットの測定

回線速度計測サイトを使用して有線接続時の速度テストをしてみた結果。
※干渉をうけにくい有線接続でテスト。
・モデム—自宅のPC
下り:74Mbps  上り:4.5Mbps
・モデム—vyos—自宅のPC
下り:94Mbps  上り:5.6Mbps

無線アダプタを買ってAP設定をすれば高機能無線ルータとして実用的に使えるんじゃないか??
安定稼働するかどうかは分かりませんが。

(CentOS7,postfix,dovecot)メールサーバを構築

何をするか

メールサーバ(SMTP/POP3)を構築して、client1からclient2にメールを送れるようにする。
検証用なのでセキュリティ対策はSMTP認証の暗号化くらいしかやりません。
使用するドメインが1「test.com」になっていますが、自宅内のローカルNWでのみ使用するので見逃して下さい..。
↓ざっくり構成図

続きを読む