debian で DHCP サーバ

NTT の HGW の DHCP 機能がイケてないので、自分で立てた。
不満は、DHCP が配信するオプションを指定できないこと。
自分で立てた DNS を HGW が引こうとすると引けず、ローカル DNS の設定が反映されない日々が続き、嫌気が差したのであった。

やることは簡単。

# apt-get install isc-dhcp-server

このままだとエラーが出るので、更に設定ファイルを変更する。
authoritative; のコメントを外す。
log-facility を local7 とかにして、ログ出力先を制御するのもあり。
rsyslog.conf で cron.* とかが並ぶところに、local7.* と書き、出力したいパスを指定する。
最後に、rsyslog を再起動するのと、isc-dhcp-server を再起動するのを忘れないように。

サブネットの設定は、例えば以下みたくガッツリ書く。

subnet 192.168.x.0 netmask 255.255.255.0 {
    option broadcast-address    192.168.x.255;
    option routers              192.168.x.1;
    option subnet-mask          255.255.255.0;
    option domain-name          "yourdomainname.com";
    option domain-name-servers  192.168.x.y, 192.168.x.z;
    range                       192.168.x.51 192.168.x.100;
}

クラスCの場合は、例えばこんな感じ。
なお DNS の設定は、BIND9 で DNS サーバ とかを見て設定すること。

sshd の response が遅い

前提

  • 公開鍵認証を行なっている。
  • クライアントは putty
  • ユーザ名は空欄でアクセス
  • ユーザ名の入力フィールドが出るまでに5秒かかる
  • ユーザ名を入力してから認証完了までに5秒かかる
  • OSはdebian
  • ufw は有効
  • ポートは 22 から変更している
  • クライアントとサーバは Gigabit eather で接続
  • ubuntu server で同じ設定で運用していた時は高速であった
  • DNS を立ててないなど、サーバの機能も変更しているので、切り分けが必要

対策1: UseDNS off
効果: ユーザ名入力後の response は高速になった。

対策2: AddressFamily inet
効果: なし

Contact Form 7 でメール送信できない

サーバ移転してできなくなっていたので、色々と可能性を考えたが、原因は SMTP を叩く sendmail 相当の機能がサーバにないからだった。
何のコマンドが必要かは分からんが heirloom-mailx を入れても解決しなかったので、mail コマンドではないっぽい。
とりあえず、SMTP 叩けるプラグインを入れてしのぐことにした。

前のサーバでも、SMTP 送信できるようにした記憶はないのだが…うーむ?
ローカル配送だったからかな…
(未解決)

イーサネットコンバータ

WLI-UTX-AG300/C というイーサネットコンバータを買った。けっこう前に。
このイーサネットコンバータで、電話線から離れた部屋にPCを置いている。
親機が11n未対応なので、せっかくの 11n 対応による 300Mbps の効果は全く感じられないが、普通の USB 無線子機では届かない入り組んだ部屋の奥へ、無線+有線で LAN を届かせることができ、おおむね満足な性能である。
なにより、安い。

しかし…無線区間を 300Mbps のくせに、「USBは電源供給のみ」かつ「有線 I/F は 1 ポートのみ」かつ「有線 I/F は Fastether (最大 100Mbps)」とか、設計ミスとしか思えん。
有線ポートがボトルネックとか、11n 対応に期待していたら怒りまくっているところだ。

AWSについてメモ書くよ

ここに追記していく。まとまったら、またapacheの時みたく整理して記事にし直すかも。

Apache の設定 その1

/home/hoge/public_html を DocumentRoot とする時、/home/hoge が標準で 700 のため、403 が返る。
vhost を使う場合、httpd.conf の NameVirtualHost *:80 を生かして VirtualHost ディレクティブを書けば動く。
未指定の vhost を殺すには、ServerName any でデフォルト設定が書けるので、Order deny,allow かつ deny from all とする。
不要モジュール等については後日。

Amazon Linux の設定とか

sudo がパスワード無しで動いてしまう。そもそも、visudo で権限付与を見てもデフォルトユーザの ec2-user に sudo 権限ついてないしおかしい…
と思ったら、/etc/sudoers.d/cloud-init に記載されていたよ。
NOPASSWD: というのを消せば、パスワードを要求されるようになる。

httpd がサーバの OS とか apache のバージョンとか垂れ流してしまう。
ServerTokens OS の行をコメントアウトし、ServerSignature は Off とする。

まずは使い始め

AWS で Amazon Linux のインスタンスを作ってみる。
yum でパッケージ管理してるし CentOS チックだなーって思いながら apache の設定とか調べ中。
なんだこれ…

  • /etc/httpd 配下かよ
  • a2enmod とか a2ensite とかないの?どうやって有効化するの?

とか初見殺しの山。
なんか調べてみると、とにかく httpd.conf に書きまくっている感じ。debian も昔はこんな感じだった記憶があるなぁ。CentOS は今でもこうなのか。
いらん設定を消していかなければいかんらしい。

モジュールはともかく、vhost のディレクティブはまっさらから綺麗に書きたい衝動にかられる。
DocumentRoot とかベタに書くのやーめーてー

7z でヘッダも暗号化

zip とか 7z でファイルを暗号化圧縮する時、通常の設定ではヘッダ情報が暗号化されない。
なので、暗号化されているアーカイブなのに、ファイルリストが取得できたりする。
こうすると、そのファイルの中身は読めなかったとしても、ファイル名から中身を推測することができるため、暗号化の効果が減じる。

コマンドライン版 7z を使った場合、7z のみヘッダの暗号化オプションを備えているので、これを使えばどんなファイルが格納されているのかすら、パスワードなしでは表示できなくなる。

# 7za a -mhe -pPASSWORD ARCHIVENAME FILENAME1 FILENAME2 ...

web の情報によれば、ヘッダの書式が固定であるため、ヘッダの暗号化部分に対して辞書型攻撃を仕掛けて解読される場合がある、との記載があった。
辞書に登録されるようなパスワードを使う場合には、適切でないかも知れない。

Android で FTPd

ES ファイルエクスプローラで宅内のサーバが見えない。
私の場合、モバイル回線からインターネット経由では見えているので、サーバ自体には問題ないと思うのだが、webdav に ssl + sni を使っているために、宅内でアクセスしようとすると ip アドレスでは目的の vhost にアクセスができず、ドメイン名でアクセスしようにも dns はグローバルアドレスを返すという問題があり、うまく宅内で動作しない。
でまぁ、FTPd を立てようと、どのソフトがいいかなーと探していて見付けたのが以下のエントリー。
Android端末とPCとのネットワーク越しのファイルのやりとりについて | 相方が携帯紛失 で、私と同じ状況の人がいた。

で、これって ES ファイルエクスプローラにも機能として具備されてんじゃねーの?と思ってアプリのメニュー内を探してみたらあった。
メニューボタン>Tools>Remote Manager で FTPd の on/off ができる。
ルートを external_sd にできるのもポイント高い。
なお、上の記事の人と同じくアプリのローカライズに悩まされた挙句、私はもともと英語ロケールで Android を使っているので、日本語でどう表示されるかは知らない。

Android のファイラ、万能やなぁ。

WinPcap で起動時に自動オンしない場合のサービスオンオフ

まぁ内容は、ここに載ってることそのまんま。
WinPcapのインストール時に聞かれる「Automatically start the WinPcap driver at boot time」で困った場合の対処法 - Eiji James Yoshidaの記録
Wireshark に必須の WinPcap を、常に起動する設定にしなかったら、なかなか起動できないよって話。
サービスの起動ショートカットくらい、スタートメニューに作っとけよ。

で、ショートカットの作り方。

  • C:\Windows\System32\cmd.exe へのショートカットを作る。
  • ショートカットのプロパティから、リンク先を「C:\Windows\System32\cmd.exe /K "net start npf"」とする。
  • 同じダイアログの詳細設定ボタンから、管理者として実行、にチェックをつける。
  • ショートカット自体の名前を net start npf とかにする。

net stop npf も同様にどうぞ。

Ubuntu で Wi-Fi を使う

我が家の配線の関係上、どうしてもサーバを無線の先に設置する必要が生じた。
なので今、アクセスが重くなっている。申し訳ない。

さて Ubuntu で Wi-Fi を設定するにあたって、思いきりハマってしまったのでメモを残す。

  1. 入っていなければ、wireless-tools と wpasupplicant を入れておく。
  2. iwconfig で無線チップが認識されているかチェック。no wireless extensions の行しかなければ、認識してないので、次の手順で何とかする。
    1. ドライバを確認する。まずは lspci コマンドで PCI カードやオンボードチップなどが何が搭載されているかチェックする。
    2. lsmod で対応するモジュールが組込まれているかチェックする。オンボードチップの場合、asus_wmiとかacer_wmiとかになってるかも。なかったら、apt-get して insmod するか、ベンダのページからソース落としてきて make する…んだと思うが、今回は認識してたのでよく分からん。
  3. 無線の設定を書く。
    以下は、WPA2-PSK(AES) で SSID をステルスに設定している場合。

    # wpa_passphrase SSID PASSPHRASE(PSKのこと) > /etc/wpa_supplicant/wpa_supplicant.conf
    # vi /etc/wpa_supplicant/wpa_supplicant.conf
    
    ctrl_interface=/var/run/wpa_supplicant
    ctrl_interface_group=0
    ap_scan=1
    network={
            ssid="SSID"
            scan_ssid=1 # ← ステルスモードの時
            #psk="PASSPHRASE"
            psk=************************************************************
            proto=WPA2
            key_mgmt=WPA-PSK
            pairwise=CCMP
            group=CCMP
            priority=2
    }
    
  4. おためしで接続(アソシエート)してみる。(以下は、WLAN I/F が1つしかなくて、そんなに古くない場合。)
    # wpa_supplicant -Dwext -iwlan0 -c/etc/wpa_supplicant/wpa_supplicant.conf
    -D 以下は WLAN インターフェースの指定らしく、最近は wext を使うのが一般的っぽい。
  5. うまくいったら、コンソールが返ってこないので、Ctrl+C で落とす。
  6. うまくいくようなら、/etc/network/interfaces を書く。
    auto wlan0
    iface wlan0 inet dhcp
            wpa-driver      wext
            wpa-essid       SSID
            wpa-conf        /etc/wpa_supplicant/wpa_supplicant.conf
    

    私は、wpa-essid を記述していない解説サイトがあって、書き漏らしておりハマっていた。
    だって、wpa-conf の方に書いてあるし、いらんと思うじゃーん。

  7. 後から知ったが、次のコマンドで AP リストが見れる。
    $ iwlist wlan0 scan | grep ESSID

Linux のhosts.allow/deny

hosts.allow/deny をインポートすることができる。
1行1アドレス(IPでもNWでもドメイン名でも)のファイルを配置して、
hosts.allow などで、
sshd: /path/filename
とすればOK