2017/10/23

CentOS7 で VLAN を設定する

オンプレサーバ + VLAN で区切られた network を想定します。
オンプレサーバで VM を提供する場合、1つの NIC が複数の VLAN に足が生えてる状態する必要があります。
その設定をした時のログ。


環境

  • OS: CentOS Linux release 7.2.1511 (Core)
  • Kernel: 3.10.0-327.10.1.el7.x86_64


VLAN に足が生える想定の Interface (Bridge)を作る

VLAN 1つに対して1つの Bridge を作成します。
例えば VLAN 111 に足を生やすとしたら

などを /etc/sysconfig/network-scripts/ifcfg-br111 として作成します。
brctl とかで状態を見られたりしますね。


VLAN を指定して、実 Interface から Bridge する

VLAN に足を生やす元の Interface は bond0 としましょう。
先程作った br に対して実際の Interface の VLAN=yes 版をブリッジします。

とかを /etc/sysconfig/network-scripts/ifcfg-bond0.111 に書きます。
これで br111 は VLAN 111 に通信できます。
こちら側のファイルも VLAN ごとに設定を作成する必要がありますね。

  • # systemctl restart network
してきちんと network が上がってきて通信できるか確認しましょう。
複数の VLAN が1ポート内で入り混ざることを、スイッチ側にも設定しないといけない気もしますが、そこは私がやらなかったので割愛。


参考





CentOS7 で複数の NIC を束ねて bonding する

オンプレのサーバだと複数の NIC を積んでいることがあります。
それらの NIC を束ねて帯域幅を増やしたり、NIC を冗長化するなど活用法は多々あります。
今回は束ねて帯域幅を増やす設定のログを残しておきます。


環境

  • OS: CentOS Linux release 7.2.1511 (Core)
  • Kernel: 3.10.0-327.10.1.el7.x86_64
  • NIC: ifcfg-(p2p1|p2p2|p3p1|p3p2) として認識している


束ねる集約先になる、仮想の Interface を作る

まずは集約先の Interface を作ります。

とかを /etc/sysconfig/network-scripts/ifcfg-bond0 に作成。
mode=4 だと LACP で束ねてくれます。


物理NIC の Interface で集約先を指定

物理NIC の Interface で集約先を指定。
とかを /etc/sysconfig/network-scripts/ifcfg-p2p1 に作成。
具体的には Master に bond0 を指定して、SLAVE=yes にします。
これを ifcfg-(p2p1|p2p2|p3p1|p3p2) 全てに適用してみます。そうすると4本を1つに束ねられる。
最後は、設定をファイルに書き込んだ後に
  • # systemctl restart network
で適用。これできちんと network が上がってきたらOK。
単純に考えると帯域幅が4倍になってるはずです。

参考

2017/10/17

問答無用でテキストファイルの文字コードを UTF-8 にする

この記事 を見ていて文字化けとかつらいよなー、と思うなど。
私だったら nkf を CLI で使うかな、と思ったのでそれを書いておこうかなと思います。


コマンド

UTF-8 + 改行コードを unix にする、だと
  • $ nkf -wLu --override **/*.html
とか。 glob が長いと怒られるのなら
  • $ find -name '*.html' | xargs -L1 nkf -wLu --override
とか。 git 管理下にあるのなら
  • $ git ls-files | xargs -L1 nkf -wLu --override
とかでも良いでしょう。

meta タグの置換はとりあえず単に Shift_JIS を UTF-8 にするだけでいけると仮定。
それなら
  • $ sed -i -e 's/Shift_JIS/UTF-8/'
でいけます。 確か -i オプションは GNU 版の sed にしかなかったはず。
meta タグを検出する必要があったら正規表現を複雑にする必要がありますね。


おまけ

このファイルの文字コード何だ? となったら
  • $ nkf -g file.txt
で分かります。


環境

  • OS: macOS Sierra 10.12.6
  • nkf: Network Kanji Filter Version 2.1.4 (2015-12-12) 
  • sed: gsed (GNU sed) 4.4

2017/10/13

VALU で貰ったビットコインを換金する

VALU にアカウントを作っていたのですが、私のVALUを買ってくれる人がいました。
もちろん VALU でのやりとりは bitcoin 。
とりあえず遊びで仮想通貨に触れてみるのも良いかなと思って換金してみました。


ビットコイン購入/販売所 のアカウントを作る

まずは貰った bitcoin の送り先を確保します。
銀行に口座を作るみたいな感じですね。
とりあえず国内取引量最大らしい bitFlyer にアカウントを作る。


ビットコインアドレスを確認する

次に送信先のアドレスを確認します。
口座番号みたいなものですね。
bitFlyer だと
  • 設定 > bitFlyer アカウントご登録内容
にあります。
例えば「3K61u2B3k5bGmwCyDSMKyL8uF5xi7z863D」といった3から始まる長い文字列です。


VALU から bitFlyer に送金する

VALU で貰った bitcoin を確認したアドレス宛に送信します。
  • メニュー > 口座の管理 > 送金
で先程確認したアドレスを指定して、送金する bitcoin の数を決めます。
手数料で 0.0005 bitcoin ほど VALU に取られるので注意。
手数料は 2017/10/13 の時点だと300円ちょっとくらい? ですね。


bitFlyer で着金していることを確認する

bitcoin の送金には時間がかかります。
私の場合だと1時間くらいかかりました。
あとは bitFlyer で日本円に換金して終わりです。やったね。


最後に

このような手順で VALU でもらった bitcoin を日本円に換金できます。
また、もしこの記事に価値を感じた方は「3K61u2B3k5bGmwCyDSMKyL8uF5xi7z863D」に bitcoin を送ってくれると幸いです。

2017/10/12

systemd 制御下のプロセスの SEGV を追う

systemd で起動したプロセスがいつの間にか死んでる。
systemctl status を確認すると SEGV している。SEGV ......
SEGV の原因を追うために systemd 管理下のプロセスで core を取る方法とかのログ。
ちなみにそのプロセスは FreeRADIUS ですね。


コアを dump するように

  • $ vim /etc/security/limits.d/core.conf
  • $ vim /etc/sysctl.d/core.conf

コアを取るように設定。
  • $ reboot
したら設定の適用完了。


動作確認

きちんと取れるか、死んでたプロセスに

    • $ kill -11 <pid>
    とかしたら core が取れるか確認できます。


    その後

    取れたコアを使って gdb で原因を追っていく。
    その際に bt などが使えないのがつらいので
    • $ yum --enablerepo='*debug*' install /usr/lib/debug/.build-id/9c/hogehogefugafuga

    とかしておく。
    こうすると freeradius-debuginfo が入って bt とかを見られるようになる。
    とかとかしながらデバッグして原因を突き止めたのがこの記事です。


    環境

    • OS: CentOS Linux release 7.4.1708 (Core) 
    • kernel: 3.10.0-693.2.2.el7.x86_64
    • systemd: 219 +PAM +AUDIT +SELINUX +IMA -APPARMOR +SMACK +SYSVINIT +UTMP +LIBCRYPTSETUP +GCRYPT +GNUTLS +ACL +XZ -LZ4 -SECCOMP +BLKID +ELFUTILS +KMOD +IDN
    • FreeRADIUS: 3.0.4