読者です 読者をやめる 読者になる 読者になる

GeekFactory

int128.hatenablog.com

certtoolコマンドとテンプレートで簡単に証明書を作る

Apache httpdやOpenVPNなどで自前のSSL証明書を使うには、一般に以下の手順が必要になります。 CAの秘密鍵を生成する。 CAの自己署名証明書を生成する。 サーバの秘密鍵を生成する。 サーバのCSRを生成してCAに送る。 CAで証明書を発行する。 クライアントの…

DockerでLinuxデスクトップを使ってみる

Linuxをサーバ用途に使う場合、クリーンな環境を保つため、XやGNOMEなどをインストールしないことが多いと思います。とはいえ、ちょっとした調査などでデスクトップ環境があれば作業効率が上がるケースもあります。そこで、Dockerを使って、独立した環境でLi…

Stone on Docker

StoneのDockerイメージが見当たらなかったので作りました。StoneはいわゆるTCP/UDPリピーターで、ローカルポートに着信した接続を別のポートに転送してくれます。HTTPプロキシやSSLトンネリングに対応しているので、ネットワークの制約がある環境で大活躍し…

Dockerコンテナの起動や停止をトリガーにして処理を実行する

Dockerホストで新しいコンテナが起動したり既存のコンテナが停止したタイミングで何らかの処理を実行したい場合があります。例えば、リバースプロキシの設定を反映したり、コンテナのURLをレビュアに通知したりといった用途が考えられます。 本記事ではdocke…

DockerイベントをSlackに連携するアプリを作った

Dockerホストのコンテナ起動停止イベントをSlackに連携するアプリを作りました。 例 くじらがつぶやきます。 使い方 Slackの設定ページから Incoming WebHook を作成してください。トークンをメモしておきます。 このアプリは Docker Hub に公開しています。…

OpenLDAPデータのバックアップとリストア

OpenLDAPのデータをバックアップしてリストアする方法のメモ。 前提 OpenLDAP 2.4 CentOS 7 バックアップ ディレクトリ本体と設定(cn=config)をLDIFに出力します。 sudo slapcat > ldap-20140727.ldif sudo slapcat -b cn=config > ldap-config-20140727.l…

MuninでJMX経由でJVMを監視する

MuninでJMX経由でJava VMを監視する方法のメモ。 前提 muninが正しく動いていること。 監視対象サーバでmunin-nodeが正しく動いていること。 監視対象サーバでJMXが正しく設定されていること。jconsoleでヒープ状況などが表示されるか確認しておきます。 方…

Mac OS XをPXEサーバにしてLinuxをネットワークインストールする

Linux を使って別の PC に Linux をネットワークインストールする方法はよく知られていますが、Mac OS X を使って別の PC に Linux をネットワークインストールする方法は情報が少ないのでまとめてみました。本稿は Proxy DHCPによるネットワークインストー…

LinuxでActive Directory認証 (Apache httpd)

Active Directory認証を使うと、IDやパスワードを入力せずにWebアプリにログインできるようになります。すなわち、自動的にActive Directoryのユーザとしてログインした状態になります。シングルサインオンにより、利用者の負担を軽減できる、不正利用を抑止…

LinuxでActive Directory認証 (with sssd)

Windowsの世界にはActive Directoryという優れた仕組みがありますが、Linuxでもその恩恵を受けることが出来ます。LinuxサーバがActive Directoryと連携することで、以下のようなメリットがあります。 管理者はユーザ情報を一元管理できるので、手間が減る。…

EL6 で Apache httpd 2.4 と PHP 5.4 を使う

RHEL6系のディストリビューション(CentOS, Scientific Linux等)で Apache httpd 2.4.x, PHP 5.4.x を使う場合のメモです。前提条件 Apache httpd は自前でビルドする。 epel を有効化する。 remi を有効化する。ただし、PHP, MySQL のみに使う。 mod_php …

motionの動体検知イベントをfluentd + Zabbixで監視する

動体検知アプリケーションmotionのログをZabbixで監視してみました。参考になりましたら嬉しいです。 基本的な考え方 motionのイベントが発生するとログファイルにJSONを書き出します。そのログファイルをfluentdで監視し、Zabbixに通知します。具体的には、…

supervisorでデーモンプロセスを管理する

ディストリビューションで用意されていないパッケージをデーモン化したい場合、supervisorが便利です。init scriptを書くという面倒な作業をやらなくても簡単にデーモン化できます。それだけでなく、プロセスが終了してしまった場合に自動的に起動したり、一…

SSHとHTTPSでアクセスできるGitサーバの設計と構築

本稿では、すでにプライベートなWebサーバを運用している人向けにGitサーバの構築方法を説明します。ひと手間をかけるだけでGitサーバを構成できます。Webサーバがない人はGitHubでプライベートリポジトリを作った方が早くて安くて旨いかもしれません。 要件…

Jenkinsを用いた継続的RPMビルド

RHEL系を使っていて、yumで取得できないバージョンのパッケージを使いたい場合、一般に以下の選択肢があります: 他ディストリビューションのSRPMをビルドしてRPMを生成する。 配布元のtar ballをビルドしてRPMを生成する。 配布元のtar ballを /usr/local …

動体検知アプリケーションmotionを構築する

RHEL系で動体検知アプリケーションの motion を構築する手順のメモです。なお、Gentoo LinuxやDebianでは公式パッケージが用意されているのでもっと簡単です。 前提 Scientific Linux 6.3 x86_64 USBカメラが接続されていて /dev/video? が存在する。 /usr/l…

Proxy DHCPによるネットワークインストール

あけましておめでとうございます。元日からさっそくLinuxをインストールしておりますが、今年もよろしくお願いします。さて、DVDを使わずにLinuxをネットワークインストールする方法をメモしておきます。 前提 DVDを使わずにインストールしたい。DVDドライブ…

CloudForecastでL2スイッチのトラフィックを監視する

パフォーマンスの問題を調査するためにCloudForecastを使ってみることにしました。48ポートをざっくり眺めてみましょう。CloudForecastの画面はこんな感じです。ちょっと手狭ですね。Chromeのデベロッパーツールで即席でCSSをいじると、2列×12行に並べたりで…

プロキシ環境変数を対話的に設定するエイリアス&関数

多くのコマンドでは http_proxy 環境変数を設定することでHTTPプロキシを使えます。 export http_proxy='http://proxy.example.com:8080' 認証付きプロキシを使う場合は URI にユーザ名とパスワードを含めます。 export http_proxy='http://user:passwd@prox…

GitLabで始めるプライベートリポジトリのある生活

どこでもいつでもGitと一緒。GitLabはオープンソースのGitHubクローンで、Amazon EC2やさくらVPSなどにプライベートリポジトリを立てて使えます。プライベートリポジトリのある生活はかなり快適です。非公開のコードや各サーバのetc-filesなどをプライベート…

Amazon Linuxの時刻同期にchronyを使う

Amazon Linuxではntpdによる時刻同期が用意されていますが、EPEL(Extra Packages for Enterprise Linux)リポジトリに入っているchronyも使えます。chronyはFedora 16から採用されている時刻同期デーモンです。設定ファイルや引数がシンプルで分かりやすい…

dnsmasqで始めるプライベートDNSサーバ

ローカルネットワークのホスト名とIPアドレスの対応はDNSサーバで管理すると便利です。IPアドレスを覚えたりhostsをメンテナンスするのは大変です。でもbindって難しそうだし、メンテナンスに手間がかかるし、という方にはdnsmasqがおすすめです。dnsmasqは…

ext4 on GPT on Linux RAID1 on SATA, booting by extlinux に関するメモ

以下の構成でLinuxを構築したときのメモです。 Linux Software RAID1を採用する。 ディスク全体でRAIDボリュームを構成する。 パーティションテーブルはGPTを採用する。 以下のパーティションは固定的に確保する。 /boot / /var swap 必要に応じてLVMで拡張…

AFTディスクとGPTブートに関するニッチなメモ

AFT(Advanced Format Technology)を採用するハードディスク、GPTパーティションからの起動について調べたメモです。Gentoo LinuxやArch Linuxなどのマニアックな環境を構築する人には役立つかもしれません。 AFT 物理セクタは4096バイトであるが、HDDのフ…

Apache Qpidのインストール

AMQP実装の一つであるApache Qpidのインストールについて残しておきます。ドキュメント斜め読みで作業してるので、不足等ありましたらご指摘いただけると嬉しいです。使用してるもの: Amazon Linux 2011.09 (x86_64) Apache Qpid 0.12 Broker (C++) メッセ…

Amazon LinuxとZabbixで始める運用監視

Amazon LinuxとZabbixで始める監視サーバ - GeekFactoryのリメイクです。Amazon Linux 2011.09に合わせて書き直しました。 必要なもの Amazon EC2 Instance Amazon Linux 2011.09 Amazon Linux 2011.09からFedora EPEL(Extra Packages for Enterprise Linux…

motionイベントのトラップ送信スクリプト

motionとZabbixによる監視カメラシステム - GeekFactory では、監視カメラの動きを検出した時にZabbixにトラップを送信する仕組みを紹介しました。動き検出にmotionというデーモンを利用しています。motionは動きを検出した場合に任意のスクリプトを実行でき…

motionとZabbixによる監視カメラシステム

監視カメラというと高価な専用システムを連想しますが、PCサーバとUSBカメラを使うと安価に実現できます。自宅サーバに取り組んでいる人は一度は経験しているかもしれませんね。プライバシーや検出精度の問題など、まともに運用していくのは非常に難しいシス…

Amazon LinuxとZabbixで始める監視サーバ

クラウドから自宅サーバを監視するのがマイブームです。ここではAmazon EC2にZabbixをインストールする方法を紹介します。 前提条件 EC2上でLinuxインスタンスを起動します。今回は Micro instance, Amazon Linux x86_64 を使用しました。以下が正常に動作す…

IX2015とOpenswanでIPsecトンネル

NEC IX2015とAmazon EC2インスタンスをIPsecトンネルモードで接続してみました。ほぼ自分用の備忘録なんですが、不備などご指摘いただけると嬉しいです。IX2015は動的IPのPPPoEに接続されています。EC2側のみ固定IPを確保できるため、IX2015からEC2に向かっ…

keepalivedとハードウェアルータでVRRPを構成する

VRRPはデフォルトゲートウェイの冗長化で多く使われています。LinuxのクラスタミドルであるkeepalivedもVRRPに対応しており、ハードウェアルータと組み合わせることができます。今回はkeepalivedとIX2015でVRRPを構成してみました。といっても特殊な使い方を…

Linux KVMにWindows Server 2008 R2をインストールする

Linux KVMにWindows Server 2008 R2をインストールする際のポイントを紹介します。 virtioドライバを準備する QEMUはe1000などの各種のデバイスをエミュレートしてくれますが、余分なオーバーヘッドが発生します。virtioは仮想I/Oデバイスのフレームワークで…

Gentoo Linuxでvirt-topを使う

いわゆるtopのlibvirt版です。Gentooではebuildが用意されていないので、ソースからビルドします。さくっと入るかと思ったら予想外に手こずりました。 dev-lang/ocaml dev-ml/findlib dev-ml/extlib ocaml-libvirt-0.6.1.0 - ocaml-libvirt OCaml bindings f…

syslog-ngによるログ監視とメール通知

ログ監視はシステムの異常を検知する重要な方法です。外部にサービスを公開すると侵入される可能性がありますし、サービス障害に気づかない可能性もあります。syslog-ngではログに特定のパターンが出現したらメールで通知することが可能です。destinationのp…

TCPカーネルパラメータによる障害復旧時間の短縮

クラスタ構成のサーバでは、障害発生後にクライアントがすぐに復旧しない場合があります。サーバ側がフェイルオーバした後にクライアント側が再接続するまでの時間を短くする方法を紹介します。クライアントからサーバに接続するとソケットはESTABLISHEDにな…

公開SSHサーバの安全性を高める5つの設計

出先からサーバをメンテナンスするには、SSHサーバをインターネットに公開する必要があります。SSHはデフォルトではIDとパスワードだけでログインできてしまうため、狙われやすい侵入経路の一つです。ここではSSHサーバの安全性を高める設計を挙げてみます。…

sshを制限してsftpだけ許可する

ファイル転送用のアカウントでは、sshを制限してsftpのみ許可したい場合があります。ログインシェルを/sbin/nologinに変更すると、sshだけでなくsftpも制限されてしまいます。そのような場合はsshd_configのForceCommandを使います。例えば、 # /etc/ssh/ssh…

KRTV-7131で地アナを録画する

地デジじゃなくて地アナ。KRTV-7131は玄人志向のテレビキャプチャカードです。2006年秋に買ってしばらく使ってませんでしたが、引越しで地アナが受信できるようになったので復活させてみました。マンションをダウングレードしたら地アナが受信できるようにな…

kvmからqemu-kvmに名前が変わった模様

パッケージ名が変更されたようです。 emerge -pv qemu-kvmqemu-kvmにアップデートしたら /usr/bin/kvm がなくなってしまいました。libvirt XMLを変更したくないので、kvmという名のラップシェルを置きました。 #!/bin/sh exec /usr/bin/qemu-system-x86_64 -…

軽量メール送信コマンドnbsmtpを使う

LAN上にメールサーバが立っている場合、ローカルのメール送信にsendmailやPostfixを使うのは重すぎます。SMTPさえ喋れればよいので、ssmtpやnbsmtpを使います。しばらくssmtpを使っていたのですが、Fromに名前が付加される、Toが勝手に書き換えられる、とい…

KVMとlibvirtによるサーバ仮想化の4つのポイント

Linuxの仮想化技術であるKVMが広まりつつあります。昨年の今頃はWindowsゲストが起動しただけで感動してましたが、今や多くのディストリビューションで動くようになりました。デスクトップ内の開発環境として使う場合はオールインワンですぐ使えることが大事…

syslog-ngをmetalog風に使う

以前、システムロガーにmetalogを使っていました。分かりやすいログ配置、分かりやすい設定ファイル、自動ローテーション等の利点があって重宝していましたが、たった一つ欠点がありました。それは他ホストからのsyslogを受信できないことでした。複数のホス…

PAMによる認証の仕組みを調べてみた

/etc/pam.d/system-authが気になって夜も眠れないので調べてみました。この設定ファイルはOS全体の認証*1を司るものです。コンソールでログインするとき、SSHで接続するとき、su(switch user)するときなど、多くの場面で利用されます。/etc/pam.d以下にあ…

/etc/kvm/kvmtap

kvm-ifupはブリッジを勝手に選んでしまうため、シンボリックリンクでブリッジを指定できるスクリプトを書きました。 #!/bin/bash # /etc/kvm/kvmtap: TAP device wrapper for KVM cmd="`basename "$0"`" spec="${cmd#*-}" iface="${spec#*-}" operation="${s…

QEMUの引数からlibvirt XMLを自動生成する

libvirtdでVMを起動するにはドメインXMLファイルが必要ですが、QEMUの引数からXMLファイルを生成する方法を紹介します。まず、QEMUのコマンドラインをテキストファイルに保存します。下記例では見やすくするため改行していますが、すべて1行で書いてください…

物理マシンを仮想マシンに移行する手順のまとめ

Linux KVM(Kernel-based Virtual Machine)の物理マシンを仮想マシンに移行する手順をまとめました。すでにある物理マシンを仮想マシンに移行する場合を考えます。仮想マシンを実行するための環境はハイパーバイザと呼びます。ディストリビューションに依存…

ノートPCで無線LANによるネットワークブート

ディスクを積んでいないノートPCを使い、無線LANによるネットワークブートをやってみました。今回起動したディストリビューションはGentoo Linuxです。11gのためかそこそこ速く、意外と快適に使えています。仕組みはこんな感じになっています。 (1)(2) 最初…

スクリプトによるgpxeの自動起動

起動時にCtrl+Bを押してgpxeコンソールに落ちるのは面倒です。そこで、gpxeのコンパイル時にスクリプトを仕込むことで自動起動が可能です。gpxeのソースコードと同じディレクトリにスクリプトファイル(例:iscsi-boot.gpxe)を作成します。 #!gpxe dhcp net…

iSCSI Targetボリュームはパーティションを切らない方がよい

ボリューム全体をファイルシステムに使った方がよいです。TargetからもInitiatorからも1つのパーティションとして扱えるため、Initiatorで問題が起こった場合にもTargetホストでの対処が容易になります。 パーティションを切らない場合 iSCSI Targetホストの…

initramfs-util

initramfsを操作するユーティリティを書きました。 Create image: geninitramfs <initramfs.gz> [directories]Resolve and copy libraries: geninitramfs -r [--test]Show list contents: geninitramfs -l <initramfs.gz>Extract image: geninitramfs -x <initramfs.gz> http://coderepos.org/share/bro</initramfs.gz></initramfs.gz></initramfs.gz>…