月別: 2017年12月

ansible の vault を使う

この作業ひさびさにやると忘れてるので、自分用のメモ書き

playbook 実行時に vault password file をいちいち指定するのはクソだるなので、ansible.cfg に設定しておくとよさげ。

この設定いれてるときは encrypt 時にも –valut-id を渡す必要がなくなる

ベンリ

南無鯖は落ち着く

この記事は knzk.me Advent Calendar 2017 21日目の記事です

マスト丼インスタンスはたくさんあるけど、knzk.me はとても落ち着きます。南無鯖ってよんでたけどこの呼び方人している人いなすぎて寂しい。この夏ちょっとお仕事が忙しかったので辛い気持ちになったときは南無鯖に行って南無ってトゥートすると元気がもらえました。ありがとうございます。

そういえば以前に C# のマスト丼APIクライアント書いたので C#er みなさん是非使ってください。開発リポジトリはこちらです。PCL だけど NETStandard ライブラリに変更したいと思いつつやれていない。そのうちアップデートリリースします。

ネイティブクライアントアプリも作りたいんだけど、忙しすぎて時間が取れてない。リリースしたい。気持ちが必要だ…。最近は南無鯖でトゥートしてないので、冬休みの間久しぶりに南無鯖に遊びに行きたいなあという気持ちです。南無鯖運営のみなさま、これからも頑張ってください。応援しています。

現場からは以上です。

RHEL7 系の Firewall 設定

firewalld とは

  • RHEL6 系までは iptables が利用されていた
  • RHEL7 系では firewalld がデフォルトとなった
  • firewalld は、デフォルトで iptablesip6tablesebtables のリストアコマンドを使用し、ルールセットを変更する全ファイアウォールアクションを高速化する
  • CLIツールとして firewall-cmd、GUI ツールとして firewall-config が用意されている
  • firewalld が提供するファイアウォールのサービスは、設定の変更はいつでも可能で即座に実行される
    • 変更は保存したり適用したりする必要がない
  • firewalld の設定は /usr/lib/firewalld//etc/firewalld/ に保存される

情報ソース

firewalld と system-config-firewall および iptables との比較

firewalldiptables(ip6tables) の本質的な違いは以下の2つ

  • 設定ファイルの場所が違う
    • iptables は設定を /etc/sysconfig/iptables/etc/sysconfig/ip6tables に保存する
    • firewalld は設定を /usr/lib/firewalld//etc/firewalld/ に保存する
    • RHEL7 の初期状態では firewalld がデフォルトでインストールされるので /etc/sysconfig/iptables ファイルが存在しない
  • 設定追加に iptables は全て再読み込みを行うが、firewalld は差分更新のみを行う
    • firewalld では既存の接続が瞬断されることなく設定追加が可能

情報ソース

firewall-cmd コマンドラインツールを使用したファイアウォールの設定

ゾーンの設定

  • firewalld には典型的な設定のテンプレートであるゾーンが用意されている
  • ゾーンの種類は以下のとおり
    • drop
    • block
    • public
    • external
    • dmz
    • work
    • home
    • internal
    • trusted

ゾーンの設定と確認方法は以下のとおり

ポート開放

  • dmz ゾーンに対して、ポート 8080 への TCP トラフィックを許可する場合は以下のようなかたち
  • かならず --parmanent で永続化する

サービスを追加する場合は以下のようにできる

情報ソース

RHEL7 系のネットワーク設定

6 系と変わった点、変わってない点を整理するために調査した。主に参照した情報ソースは「RHEL7ドキュメント」「標準テキスト CentOS7」の2つ。

NetworkManger とは

ドキュメント

概要

  • RHEL6 ではネットワークスクリプト(/etc/init.d/network)によりネットワーク設定が行われていた
    • ここが /etc/sysconfig/network-scripts/etc/sysconfig/static-routes などを読んでいた
  • RHEL7 より NetworkManager を使ってネットワーク設定することが推奨されている
  • ただしそのままスクリプトを継続して使用することもできる
  • NetworkManager は現在、RHEL 7 でデフォルトで使用されている
  • NetworkManager を無効すると、ネットワークインターフェイス管理には代わりに initscripts が使用される
  • NetworkManager の使用が増えてきているため、今後のメジャーリリースで Network Initscript が廃止になる可能性がある
  • RHEL7 では NetworkManager が最初に起動し、/etc/init.d/network が NetworkManager をチェックして NetworkManager 接続の改ざんを防ぐ
  • NetworkManager は sysconfig 設定ファイルを使用するプライマリーアプリケーションとされており、/etc/init.d/network はフォールバックとなるセカンダリーとされている
  • RHEL7 でのネットワーク設定の方法には具体的には以下の4つの方法がある
    • nmcli
    • nmtui
    • GNOME コントロールセンター
    • ファイルを直接編集する

NetworkManager の制御

ドキュメント

概要

  • NetworkMangersystemd によって管理されていて、デフォルトでは起動時に立ち上がる
  • 制御は systemctl コマンドを利用して以下のように行う

  • NetworkManager がデーモンで起動していることは次のように確認できる

ネットワーク設定と設定ファイル

ネットワーク設定ファイルの位置はかわらずだが、ファイルを直接編集せず nmcli, nmtui などを利用することが推奨されている。サーバー構築時に主に設定する内容と対応する設定ファイルは以下のとおり。

  • ホスト名とIPアドレスの対応関係: /etc/hosts
  • 問い合わせ先DNSサーバ設定: /etc/resolve.conf
    • nmcli で DNS サーバーを指定すると自動的に更新される
  • ネットワーク名とネットワークアドレスの対応関係: /etc/networks
  • インターフェースの設定: /etc/syscnofig/network-scripts/ifcfg-*
    • NIC の命名が eth0, eth1 のような形ではなく、udev によりデバイスに応じて命名されている
  • インターフェースごとのルーティング設定: /etc/sysconfig/network-scripts/route-*
    • ip コマンドを使って設定した静的ルートは、システムが終了したり再起動すると失われる

重要な設定を一部抜粋して確認する

/etc/sysconfig/network-scripts/ifcfg-*

ドキュメント

概要

  • ip コマンドを使ったネットワークインターフェースの設定は、システムが終了したり再起動すると失われる
  • システム再起動後も維持されるようにネットワークインターフェースを設定するには、/etc/sysconfig/network-scripts/ ディレクトリー内のインターフェースごとの設定ファイルに格納する必要がある
  • ファイル名は、ifcfg-
  • 設定項目はざっくりと以下のような具合
    • TYPE(Ehternet, Wireless, Bridge): 種類
    • BOOTPROTO(none, bootp, dhcp): 起動方法
    • DEFROUTE(yes, no): デフォルトルートとして使用されるか
    • IPV4_FAILURE_FATAL(yes, no): IPV4 で初期化に失敗したときにインターフェースを起動失敗扱いにするか
    • NAME: インターフェースの名前
    • UUID: そのまま
    • DEVICE: 物理デバイス名
    • ONBOOT(yes, no): 起動時にインターフェースを起動するか
    • IPADDR: IPアドレス
    • PREFIX: ネットマスク

  • ネットワークインターフェースの設定には以下の方法がある
    • nmcli コマンドを実行する
    • nmcli エディターを利用する
    • nmtui を利用する

コネクション名が扱いづらい形なので修正したほうが作業がしやすい

設定はおおむね以下のような形

/etc/sysconfig/network-scripts/route-*

ドキュメント

概要

  • ip コマンドを使って設定した静的ルートは、システムが終了したり再起動すると失われる
  • システム再起動後も維持される静的ルートを設定するには、/etc/sysconfig/network-scripts/ ディレクトリー内のインターフェースごとの設定ファイルに格納する必要がある
  • ファイル名は、route-
  • このファイルへの記述は次の2つの形式が利用できる
    • IP コマンド引数形式を使用した静的ルート
    • ネットワーク/ネットマスクディレクティブの形式

  • 静的ルートを設定するには、以下の方法がある
    • nmcli コマンドを実行する
    • nmcli エディターを利用する

非推奨: /etc/sysconfig/network

個別のデバイス設定を用いることを推奨、グローバルのnetworkファイルは非推奨になった。

Red Hat Enterprise Linux ではグローバルの /etc/sysconfig/network ファイルの使用は非推奨となっており、ゲートウェイの指定はインターフェースごとの設定ファイルでのみ行なってください。
https://access.redhat.com/documentation/ja-jp/red_hat_enterprise_linux/7/html/networking_guide/sec-using_the_command_line_interface

nmcli コマンドについて

公式ドキュメント: https://access.redhat.com/documentation/ja-jp/red_hat_enterprise_linux/7/html/networking_guide/sec-using_the_networkmanager_command_line_tool_nmcli

  • nmcli は各種ネットワーク設定をコマンドラインから実行できるツール
  • 各パラメータは全方一致で省略が可能

networking

ネットワークへの接続性を確認/制御できる

  • on, off, connectivity の三種類

connectivityの状態は、none(切断), portal(認証前), limited(インターネットに出れない), full(インターネットに出れる), unknown(不明) の5種類

general

  • NetworkManager の状態や権限などを表示できる
  • ホスト名, ログレベル, ドメインを取得できる

ip コマンドについて

  • RHEL7 系では route, ifconfig コマンド(net-tools)に代わり、ip コマンド(iproute2)の利用が推奨されている
  • ip コマンドはルーティング、デバイスなどを表示・設定できるコマンド