CentOS」カテゴリーアーカイブ

自前のVDI環境について考える

VDIを使いたい理由

  • Windows環境はたまに使えれば良いが、Windows自体もOfficeもソフトウェアライセンスが高い
    使いたいときだけ使える環境を家族でシェアすればライセンス料を削減可能
  • Mac環境(ラップトップ)にVMでWindowsを動かすのもいいけど、家族でシェアできないしグラフィック処理がちょっと重い(気がする)
    GPUをパススルーできる環境で動かしたい
  • 電源とネットワークがあればマシンを遠隔地に置いておける!
  • 一昔前のPCをうまく活用できたりするとなお good

VDI環境の要件

  • 安いこと。高いソリューションを導入するくらいならPC買ったほうが安くなることが多いし、Amazon使おうぜとかなっちゃう。
  • 接続元(クライアント)からUSBリダイレクション可能であること
    • やっぱ繋ぎたいよね。
    • Windows のリモートデスクトップはUSBリダイレクションもできるらしいけどPro版以上が必要。Pro版持っていない。。

仮想化環境と接続クライアントの比較

  •  VMWare vSphere ESXi
    • 現在のバージョンは5.5、無償版がある
    • ハイパーバイザ型の仮想化環境で、GPU のパススルー、USB リダイレクションともに可
    • クライアント(vSphere client)が Windows 版のみ
  • XenServer
    • 現在のバージョンは6.2、無償版がある
    • 準仮想化であり、GPU のパススルー、USB リダイレクションともに可
    • クライアントが Windows 版のみ
  • KVM
    • Linuxのメインストリームに入っている仮想化環境
    • GPUのパススルー、クライアントからの USB リダイレクションともに可
    • クライアントは Windows, Linux。Mac では USB リダイレクションが使えない
      • Windows では使えるらしいけど、そのためには oVirt を構築しないとだめかも

仮想環境の選択

ESXi をインストールしようとしたらドライバがないのか NIC がないよって言われて動かせなかった。ドライバを追加して起動ディスク作るとかは面倒だったので、諦めて KVM を使うことにし、 CentOS7 をインストールした。

動かしてみた結果

PCのスペック不足が否めない。Core2Duo機を仮想環境として使うのはつらいっぽい。一応仮想化支援機能は入ってるけどね。

ホストのCentOS7のGUI(Gnome-shell)を動かすとこれがまた重くて、そんなんではVDIとしては使えないな、という感じ。

まだチューニングの余地はあると思うからもう少しいじってみよう。

追記

  • 仮想化ではなく、ネイティブでリモートデスクトップとして使うほうが使えそう。
  • GPU を挿したマシンだったけど、GPU が古くてプロプライエタリなドライバのサポート対象外になっていた。今度抜いて省電力化しよう。
  • ホスト OS のウィンドウマネージャを Gnome-shell から MATE に変えたらだいぶましになった。(2015年1月30日)

CentOS 6 での LDAP 設定

CentOS 6 での LDAP の設定方法についてまとめるつもりだったがまとめない。

目標

  • LDAPサーバを立ててクライアントから認証できるようにする
  • CentOS 6系から必須になったTLSでの認証を(簡単に)可能にする
    • 正式な証明書ではなく、ダミーの証明書を使う
  • sudo が使えるようにする

まじめにまとめようと思ったけど面倒になったのでポイントだけ

  • authconfigしたときに、sssdがインストールされていると、/etc/nsswitch.confにsssが指定される
  • sssはsssdによって認証されるが、TLSを要求するため、TLS接続できないとLDAPが引けなくなる。自己署名だとここで引っかかる。
  • sssdの設定を変更してTLS_REQCERTをallowとかにすると自己署名の証明書でもOKになる。実は自分で証明書を作る必要すらなく、openldapに同梱されているスクリプトで生成可能。
  • ldapsとstart_tlsは全くの別物。使うポートも違うということを理解する。
    • ちなみにldapsよりもstart_tlsのほうが推奨だそうな。
  • 他にも幾つかldap関連の設定ファイルがあるのでそれらを根こそぎ証明書のチェック結果を無視する設定に変更する

SoftEtherを使ってVPS上にVPNサーバを構築する

安価にもてるのであればVPN環境がほしかった。VPNにはいろいろあれど、SoftEtherというのがいろんなプロトコルに対応していてかつ簡単に構築できそうだったので、さくらVPS上にVPNサーバを構築してみた、という話。

個人用途におけるVPNを持つ目的

  • 公衆無線LAN等のネットワークを使いつつセキュアに通信したい
  • 外出時に自宅のネットワークにセキュアにアクセスしたい(リモートデスクトップ、ファイルサーバ等)
  • 拠点間をVPNでつなぎたい(自宅と実家等)
    • 実家環境のメンテナンスの容易化
    • (自宅よりも広い)実家にPCをおいてリモートデスクトップ

VPNを実現するために欲しいもの

  • 24時間365日安定稼動できて外からアクセス可能なVPNサーバ
    • 電気代、騒音、停電(ブレーカー断)、ポートフォワードとかめんどい・・・そこでVPS(月1000円以下)ですよ
    • Raspberry pi (3Wくらい?)でVPNサーバとかはちょっと興味あるけど。。
  • VPNサーバに参加可能なルータ
    • PC等をひとつずつ設定するのは面倒、NWプリンタ等VPNクライアント機能がない機器もつなぎたい
    • VPNクライアントの機能を持つルータは家庭用ではほとんどない、つまり高い
    • dd-wrt 使って家庭用ルータをVPNクライアントにしよう(一番安い)

SoftEtherを使ってみる

  • VPSにSoftEtherをインストール
    • OpenVPN互換機能を有効にしてクライアントからはOpenVPNのクライアントとしてつなぐ
    • このときdd-wrtでは圧縮がデフォルトでadaptiveに設定されているので注意
  • クライアントのつなぎ方
    • dd-wrt化したルータを用意
    • とりあえず同じ仮想Hubに全部つなげる(同じセグメントに見せたい)
    • ルータ以外の端末はtapでもtunでもあんまり関係ない模様
      • Android, iPhoneからはtunでしかつながらないらしい
      • Androidからつなぐ場合はOS標準のVPNよりも、OpenVPN Connectのほうが使い勝手が良い
    • ルータはtapでつなぐ
      • サンプルの設定とおなじになるようにdd-wrtに設定すればつながる。
      • tapをvlanにつなぐ
      • dd-wrtのdhcpサーバはオフにするのを忘れずに
  • GUIの設定ツールはWindows専用
    • Windows環境を持っていない場合はCUIのvpncmdだけでも十分設定可能
  • 性能をちゃんと出そうとするとSecureNATはなんだかんだ使えなかったのでDHCPサーバ、DNSサーバをVPSにインストール、iptablesでNATを設定。
    • 仮想HUBからtapデバイスを作成(これはVPS上で見える)、br0を手動で作成してvpnserverが起動した時に br0 と tap が接続されるように設定。ipアドレスは br0 に振る
    • 仮想DHCPサーバはMACアドレスによる固定割り当てができない
    • 仮想NATは性能が出ない
  • iptablesの設定
    • SNATとMASQUERADEが設定されてればOKっぽい。
    • lineのビデオ通話もできたしハッピー
  • dhcpdの設定
    • OpenVPNクライアントになってるルータに接続した機器のMACアドレスはそのままDHCPサーバに見えるので、IP固定等は機器自体のMACアドレスで設定できる
  • bindの設定
    • VPSが参照しているDNSにforwardするよう設定

参考

更新履歴

  • 2015年1月14日 – 表記を一部修正

yumのリポジトリ登録・優先度設定方法

いろんなやり方があるのはそうなんだけど、パッと調べて出てくる方法はいろいろいけてない点がある。セットアップ時に一回やればいいので問題はないのかもしれないが、スクリプト化しづらかったりすると困るし。

ありがちないけてない点

  • gpgファイルやらなんやらwgetする回数が多い
  • /etc/yum.repo.d 以下のファイルを編集しないといけない

今回の方法の訴求点

  • wgetするのはリポジトリあたり1回
  • 設定ファイルを直接編集しない

事前準備

  • yum-utilsのインストール
    # yum install yum-utils
  • yumのプラグインをインストール
    # yum install yum-plugin-priorities
  • ディストリのリポジトリの優先度設定(例はCentOSの場合)
    # yum-config-manager --setopt="base.priority=1" --save base
    # yum-config-manager --setopt="updates.priority=1" --save updates
    # yum-config-manager --setopt="extras.priority=1"--save extras

リポジトリの登録手順

  • リポジトリを登録するrpmをwgetしてインストール
    # wget $rpmurl -O $rpmfile
    # rpm -ivh $rpmfile
  • リポジトリの有効化及び優先度設定
    # yum-config-manager –setopt=”$reponame.priority=10″ –save $reponame

リポジトリのリスト(CentOS 6系、x86_64用)

  • RPMforge
    • rpmurl=http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.3-1.el6.rf.x86_64.rpm
    • rpmfile=rpmforge-release-0.5.3-1.el6.rf.x86_64.rpm
    • reponame=rpmforge
  • Remi
    • rpmurl=http://rpms.famillecollet.com/enterprise/remi-release-6.rpm
    • rpmfile=remi-release-6.rpm
    • reponame=remi
  • EPEL
    • rpmurl=http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
    • rpmfile=epel-release-6-8.noarch.rpm
    • reponame=epel

ちょっと説明

  • RPMforge, Remi, EPELあたりを入れておけばだいたいカバーされる?
  • 特にRemiはパッケージのアップデートが頻繁なのでpriorityつけておかないと面倒な印象
  • 優先度は整数で、小さいほど優先度が高い
  • この方法を使えば完全にスクリプト化するのも簡単

CentOS 6.5 にAPCを導入

PHPのOPCODEをキャッシュすることでサイトを高速化するAPCを導入。
CentOS 6.5 + apache 環境。

  • apc インストール
    # yum install php-pecl-apc
  • APCを制御するためのWebUIがあるのでそれを探す
    # find /usr/share | grep apc.php
    今回の環境では以下のファイル
    /usr/share/doc/php-pecl-apc-3.1.9/apc.php
  • APCのWebUIをアクセス可能な位置にコピー
    # cp /usr/share/doc/php-pecl-apc-3.1.9/apc.php /var/www/html/
  • apc.phpの中のユーザとパスワードを変更
    defaults('ADMIN_USERNAME','******'); // Admin Username
    defaults('ADMIN_PASSWORD','******'); // Admin Password - CHANGE THIS TO ENABLE!!!
  • apache 再起動
    # service httpd restart

以上。効果の程は不明。