RTX810 で SNMP Trap を送信し、Linux マシンで受ける

SNMP Trap を送信するルータは、YAMAHA RTX810 、受信するマシンの OS は Debian 10 。受信したトラップを root あてにメールする。

RTX810 の設定

snmp trap host [SNMP トラップを受けるサーバの IPv4 アドレス]
snmp trap community router
snmp trap enable snmp all

Debian 10 側の設定

  • snmptrapd をインストール

    # apt-get install snmp snmptrapd nmp-mibs-downloader
  • YAMAHA private MIB をダウンロード

    YAMAHA private MIB のページより、yamaha-private-mib.tar.gz をダウンロードし、アーカイブ中のファイルを /usr/local/share/snmp/mibs/yamaha 以下に保存する。

  • snmp の設定

    /etc/snmp/snmp.conf
    #mibs :
    mibdirs +/usr/local/share/snmp/mibs/yamaha
    mibs +ALL

    ※ mibs : をコメントアウトし、mibsdirs と mibs を設定する。

  • snmptrapd の設定

    /etc/snmp/snmptrapd.conf
    authCommunity log,execute router
    traphandle default /usr/bin/traptoemail -f snmp@example.com -s 127.0.0.1 root

    ※ snmp trap のコミュニティ名はルータと snmptrapd.conf で同じものとする。

  • snmptrapd を起動

    # systemctl start snmptrapd.service
  • 起動時に snmptrapd を有効とする

    # systemctl enable snmptrapd.service
  • ルータからの UDP 162 を通過するようにしておく

Debian 10 Buster で fail2ban のメモ

Debian 10 Buster で fail2ban を設定したときのメモ。とりあえず sshd だけで、メール通知するようにしたパターン。

  1. インストールする。

    # apt-get install fail2ban
  2. /etc/fail2ban/jail.conf を変更する。以下はインストール状態からの変更点のみ。
    ignoreip = 127.0.0.1/8 ::1 # ban 対象としない IP アドレスを指定
    destemail = root@example.com # 送信先メールアドレスを設定
  3. /etc/fail2ban/jail.d/sshd.conf を新規作成する。

    [sshd]
    enabled = true
    port	= 22 # 実際の sshd のポートを指定
    logpath	= %(sshd_log)s
    backend	= %(sshd_backend)s
    action	= %(action_mw)s
  4. fail2ban を再起動する。

    # systemctl restart fail2ban.service

テストしてみたところ IPv4 はもちろん、IPv6 でも正常に (?) ban されることを確認した。

ban が発動すると該当アドレスについて、iptables で「f2b-sshd」というチェインが作られ、REJECT されるようになっていた。なお、指定時間が経過後は「f2b-sshd」チェインは残るものの、REJECT が削除されて通信出来るようになるようだ。

また、fail2ban 自体を再起動すると「f2b-sshd」チェインも削除されるようだ。ただ、ban 対象がある場合はそれは復元されるみたい。

もちろん、既存のルールに影響することがないように設定される。

Debian 9 の Apache2.4 で TLSv1.3 を利用する

TLSv1, TLSv1.1 が 2020 年にもメジャーなブラウザで無効化されると言う話題が出ていました。

Deiban 9 の Apache 2.4 は、TLSv1.2 に対応しているので特に影響はありませんが、どうせという事で TLSv1.3 に対応をしてみました。

続きを読む

cups から AirMac Extreme で共有されているプリンタに印刷および再度共有する設定メモ

表題の通り、cups が動作している Linux マシンから、AirMac Extreme に接続されているプリンタに印刷する設定である。

なお、例によって、Debian GNU/Linux 9 での設定例である。サーバは、192.168.1.1 、共有プリンタが接続されている AirMac Extreme は 192.168.1.2 とする。

・事前準備

iptables などでフィルタリングしている場合、あらかじめサーバから TCP 192.168.1.2:9100 宛への通信を許可する。

・cups のインストール

# apt-get install cups

・管理ユーザの設定

# adduser username lpadmin

cups の Web インタフェースへ管理画面接続可能な様に、任意の管理者ユーザ (この例では username) を lpadmin グループに所属させる。

・リモートのブラウザから設定

$ ssh -L 8080:127.0.0.1:631 username@192.168.1.1

リモートから、サーバ (この例では 192.168.1.1) の 631 ポートへポートフォワードし、ssh 接続する。

・ブラウザで、http://127.0.0.1:8080/ を開き cups の設定を行う

「管理」メニューより、以下の通り進める。なお、BASIC 認証画面が出たら、「管理ユーザの設定」の項目で設定したユーザ名とパスワードで認証する。

  1. 「このシステムに接続されているプリンターを共有」にチェックを入れる。
  2. プリンターの追加を選択。
  3. その他のネットワークプリンター内「AppSocket/HP JetDirect」にチェックし、「続ける」をクリックする。
  4. 接続に「socket://192.168.1.2:9100」の様に入力し、「続ける」をクリックする。
  5. 名前は適当にプリンタ名、説明も適当にメーカ名 + プリンタ名、場所もやっぱり適当に入力し、このプリンターを共有するにチェックを入れ、「続ける」をクリックする。
  6. AirMac Extreme に接続されているプリンタのメーカ名を選択し「続ける」をクリックする。
  7. AirMac Extreme に接続されているプリンタのモデルを選択し「プリンターの追加」をクリックする。
  8. 該当プリンタのデフォルトの設定画面が表示されるので、必要に応じて変更し「デフォルトオプションの設定」をクリックする。

・テスト印刷

「プリンター」メニューより、先ほど追加したプリンタを選択し「メンテナンス」内「テストページの印刷」を選択して、正しくプリントアウトされることを確認する。

・共有について

該当 Linux マシンには avahi をインストール済みのため、ローカルネットワークからサーバ TCP 631 宛の通信を許可するだけで、macOS から IPP 経由で印刷できるようになったりする。

ちなみに上記の設定だけで、iOS デバイスから AirPrint 可能なデバイスとして認識される。が、正常に印刷が出来たのは iOS 6 の端末のみで、iOS 11 からは正しく印刷できなかった。

2018/02/10 追記
iOS 11 においても、iOS アプリの「Printer Pro by Readdle」を使用すると、印刷することが出来た。
(追記おわり)

・参考にさせていただいたサイト

PHP 実行環境を fcgid + php-cgi から PHP-FPM に変更

以前に公開したエントリ、「mod_fcgid 設定」で紹介した様に、本サイトの php 実行環境は fcgid + php-cgi で行っていました。
が、今回興味があって、PHP-FPM で実行する様に変更したので、その備忘録です。

ちなみに変更前の環境は Debian GNU/Linux 9 + Apache 2.4 + fcgid + php-cgi (PHP 7.0) で動作する設定で、今回はこれを fcgid + php-cgi 部分について fgcid + PHP-FPM (PHP7.0) で実行する様変更したものです。

なお、設定内容はあくまで例です。また間違いがあればコメント欄でいただけると嬉しいです。

続きを読む

Z-Push を使って iPhone に独自ドメインメールを push 通知する

Z-Puzh」というオープンソースの ActiveSync 互換ソフトウェアを利用して、iPhone に自分が所有しているドメインのメールサーバについて、push 通知に成功したので、備忘録としておいておきます。

続きを読む

OpenVPN で VPN トンネル内に IPv6 を通す

とりあえず、Debian GNU/Linux 9 において、OpenVPN の VPN トンネル中で IPv6 を通すメモです。

基本的に「OpenVPN 設定メモ (Debian 7 Wheezy)」の項目が設定できていて (Debian 9 でもおおよそ同じです) 、サーバ側にはグローバル IPv6 が当たっていて、適切なフィルタリングが出来ているものと想定します。

■前提

  • VPN の内側で使用するネットワークは、ユニークローカルアドレス、「fd00:abcd:abcd:abcd::/64」、サーバの VPN 側 IPv6 は「fd00:abcd:abcd:abcd::1」を使うことにする。
  • 上記のメモの内容が Debian GNU/Linux 9 の OpenVPN パッケージで構築済みである。
  • 設定するサーバには IPv6 の接続性がある。

■設定

/etc/openvpn/server.conf に以下を追記します。

server-ipv6 fd00:abcd:abcd:abcd::1/64
push "route-ipv6 fd00:abcd:abcd:abcd::/64"
push "route-ipv6 2000::/3"
push "dhcp-option DNS DNSサーバのIPv6アドレス" # オプション

ip6tables で以下の様なルールを設定します。(設定内容はこのままコピペじゃなくて、実際の環境に合わせて下さい。)

ip6tables -A INPUT -i tun0 -s fd00:abcd:abcd:abcd::/64 -m state --state ESTABLISHED,RELATED -j ACCEPT
ip6tables -A OUTPUT -o tun0 -d fd00:abcd:abcd:abcd::/64 -m state --state ESTABLISHED,RELATED -j ACCEPT
ip6tables -A FORWARD -i tun0 -o ens3 -s fd00:abcd:abcd:abcd::/64 -d ::/0 -j ACCEPT
ip6tables -A FORWARD -i ens3 -o tun0 -s ::/0 -d fd00:abcd:abcd:abcd::/64 -j ACCEPT -m state --state ESTABLISHED,RELATED
ip6tables -t nat -A POSTROUTING -o ens3 -s fd00:abcd:abcd:abcd::/64 -d ::/0 -j MASQUERADE
ip6tables -A FORWARD -j DROP

上記を設定後、openvpn サーバを再起動させて、iPhone などのクライアントから OpenVPN で接続すると、VPN 側で IPv4 アドレスの他、IPv6 アドレスも付与されます。

■課題

当然ながら、IPv6 アドレスオンリーのサイトにも繋がるはずですが、なぜか一部画像が表示されなかったりという現象を確認しています。mtu の問題なのかなぁ、と思っているのですが、「OpenVPN Connect iOS FAQ」によれば、iOS の OpenVPN クライアントでは fragment パラメータを設定しているサーバには接続できないらしく、どうしたものかと考え中です。