NAKAMURA Minoru の日記 (2021年08月)

先月の日記(2021年07月) 今月の日記(2021年08月)
2002 | 10 | 11 | 12
2003 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12
2004 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12
2005 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12
2006 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12
2007 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12
2008 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12
2009 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12
2010 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12
2011 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12
2012 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12
2013 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12
2014 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12
2015 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12
2016 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12
2017 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12
2018 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12
2019 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12
2020 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12
2021 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10
ホームページ | 最新のコメント50
インデックス: 食べ歩き | Java | プログラム | UNIX | 画像
最新の日記へのリンク | この日記ページをはてなアンテナに追加 この日記ページをはてなブックマークに追加
はてな ダイアリー アンテナ ブックマーク ブログ
Twitter | mixi | Facebook | Google+
slideshare | github | Qiita



8/28 (土)

[Movie] ワイルド・スピード/ジェットブレイク

川崎チネチッタで『ワイルド・スピード/ジェットブレイク』(原題: Fast & Furious 9)の字幕を観る。


8/21 (土)

KVM ゲストを Docker のようにホストにポートマッピングするには

Docker はコンテナ内のサービスを提供するポートをホストにマッピングすることができる。 例えば以下のように実行すると nginx コンテナの 443 番のポートをホストの 443 番のポートにマッピングできる。

docker run -d -p 443:443 nginx

KVM 上にゲスト VM を立てた場合、デフォルトでは virbr0 ゲートウェイを介した NAT 接続になる。 これはゲスト VM からは外に出れるが、ゲスト VM にはホストからしかアクセスできない状態である。

これを Docker のようにゲスト VM の特定のポートをホストの特定のポートにマッピングしたいと思うのだが、なかなかうまくいかない。

以降、説明に使うネットワーク構成は以下の図のようなもの。 ホストは CentOS 7 または CentOS 8 を想定で、10.20.30.2 の IP アドレスを割り当てている。 ゲスト VM は 192.168.122.2 を割り当てている。

firewalld で設定(うまくいかない)

CentOS 7 以降であれば firewalld で設定するのが正統であろう。 以下のように設定すると考えられる

# IPマスカレードを有効化する
firewall-cmd --zone=public --add-masquerade --permanent
# 外部からの 443 ポートを許可する
firewall-cmd --zone=public --add-port=443/tcp --permanent 
# 外部からの 443 ポートに来た通信を 192.168.122.72:443 へポートマッピング
firewall-cmd --zone=public --add-forward-port=port=443:proto=tcp:toport=443:toaddr=192.168.122.2 --permanent
# 設定のリロード
firewall-cmd --reload

設定の確認は以下のコマンドで行う。

firewall-cmd --zone=public --query-masquerade
firewall-cmd --get-active-zone
firewall-cmd --list-all-zones

iptables で設定(うまくいく)

Stackoverflow.com の記事を見ながらいろいろ試したのだが、結局 海馬のかわり | NATモードのKVM(+libvirt)にて、ゲストOSへSSHログインする にある内容に従い iptables を直接操作すると目的のポートマッピングが実現できた。

# 1. 仮想ブリッジ(virbr0) ⇔ 外部NW間のFORWARD許可
iptables -R FORWARD 1 -o virbr0 -s 0.0.0.0/0 -d 192.168.122.0/255.255.255.0 -j ACCEPT
# 2. 外部からの 443 ポートを許可する
iptables -t nat -A PREROUTING -p tcp -i ens192 --dport 443 -j DNAT --to-destination 192.168.122.2:443
# 3. 外部からの 443 ポートに来た通信を 192.168.122.72:443 へポートマッピング
iptables -A FORWARD -p tcp -d 192.168.122.72 --dport 443 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT

この中で重要なのは赤字の仮想ブリッジ(virbr0) ⇔ 外部NW間のFORWARD許可のようで、上記の firewall-cmd コマンドを打った後に iptables -R FORWARD 1 -o virbr0 -s 0.0.0.0/0 -d 192.168.122.0/255.255.255.0 -j ACCEPT だけ打ってもうまくいく。 ただし firewall-cmd --reload を打つと iptables 直打ちの設定は消えてしまう。

設定の確認は以下のコマンドで行う。

iptables -nvL --line-numbers
iptables -nvL -t nat --line-numbers

参考


8/16 (月)

GitLab Runner がプライベートコンテナレジストリ

GitLab CI/CD の Runner は鬼門で、これまで動いていたものが突然動かなくなることがある。

GitLab リポジトリの .gitlab-ci.yml を編集して、何かの操作(ここではタグ打ち)の度にプライベートコンテナレジストリから専用コンテナを pull して動作するようにしていた。 このコードを書いたのは私ではないのだが、私がタグを打った時も正常に動作していた。 昨日までは。

stages:
  - publish

buildimage:
  stage: publish
  image: registry.example.com/custom-container
  script:
    - ./imagebuild.sh
  only:
    - tags

今日になると赤字の部分を docker pull registry.example.com/custom-container として内部実行する箇所で認証エラーが出るようになった。 GitLab サーバーで docker login registry.example.com -u root を打っても効果がない。

GitLab の公式マニュアル(Run Your CI/CD jobs in Docker containers)には対応方法が記述されており、プライベートコンテナレジストラ用の認証情報を渡す方法が指定されている。

このうち対象リポジトリの Settings > CI/CD > Varibles のページを開き DOCKER_AUTH_CONFIG という環境変数を追加する方法で回避できた。

{
    "auths": {
        "registry.example.com": {
            "auth": "(BASE64化したuser:password)"
        }
    }
}

いまいち分からないのは、なぜこれまで問題なく動いていたかということだ。


8/15 (日)

[時事] アフガニスタンをタリバンが征服

タリバンがアフガニスタンの首都カブールを除く地域を陥落後、カブールに迫りアフガニスタン政府が事実上降伏した。 アフガニスタンのガニ大統領はタジキスタンに出国し、事実上アフガニスタン共和国は消滅した。


8/15 (土)

[時事] ハイチで地震

ハイチ共和国の現地時間午前8時29分(日本時間14日午後9時29分)にマグニチュード7.2の地震が発生。


8/13 (金)

COVID-19 ワクチンの職域接種 2回目

会社で職域接種の2回目を受ける。

[Movie] ザ・スーサイド・スクワッド

チネチッタで『ザ・スーサイド・スクワッド “極”悪党、集結』(原題: The Suicide Squad)の吹き替え版を観る。

非常に面白い。 2016年版は凶悪犯を集めた特殊部隊といいつつ悪党らしい側面を見せるのは最初だけで、途中から普通のヒーロー戦隊ものになったが、今度は最後まで悪党らしい。 サメ人間のナナウエが人間を食べるシーンもあるしな。

[Movie] フリー・ガイ

チネチッタで『フリー・ガイ』(原題: Free Guy)の字幕版を観る。 ゲームをテーマにした映画というと『レディ・プレイヤー1』や『シュガー・ラッシュ―』があるが、モブに近いキャラクターに焦点が当たるというプロットから『レゴ・ムービー』や『LIFE!』を思い出した。 特に朝起きてコーヒーを買って仕事に行くという一日がずっと続く点や、主人公の妙な明るさから『レゴ・ムービー』の主人公と共通点が多いように思われる。

この映画ディズニー買収以降初めて見る20世紀フォックスの映画だが、ディズニーに買収されたのを逆手にとって MCU やスターウォーズのパロディーを入れているのも面白い。 というかキャプテン・アメリカ役のクリス・エヴァンスがカメオ出演しているのには驚いた。


8/1 (日)

MACアドレスのランダム化用のアドレス空間

Private IP Address のように Private MAC Address が制定されたようだ。

MAC アドレスは 48 ビットだが、上位 24 ビットが Organizationally Unique Identifier(OUI) と呼ばれる識別子になっている。 NIC カードなどを作っている企業やグループは IEEE に料金を払って登録することで、独自の OUI の割り当てを受けることができる。 下位 24 ビットは OUI の割り出しを受けた企業が自由に決めてよいので、製造したカードごとに番号を割り当て、不足したら OUI の追加割り当てを受けることになる。

しかしスマートフォンが公衆無線 LAN に接続する際に、機種固有の MAC アドレスを収集されて位置情報を特定される恐れがあり、MAC アドレスをランダム化する必要がでてきた。 このために用意されたのが Private MAC Address で 46 ビット分の空間が存在する。

これは MAC アドレスのランダム化以外に、仮想マシンの実装にも使えそうだ。 仮想マシンはゲストに独自の MAC アドレスを振る必要があり、そのために固有の OUI が必要だったが、Private MAC Address を使うことで専用 OUI の割り当てを受ける必要がなくなる。

参考


先月の日記(2021年07月) 今月の日記(2021年08月)
2002 | 10 | 11 | 12
2003 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12
2004 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12
2005 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12
2006 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12
2007 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12
2008 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12
2009 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12
2010 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12
2011 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12
2012 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12
2013 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12
2014 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12
2015 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12
2016 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12
2017 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12
2018 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12
2019 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12
2020 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12
2021 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10
ホームページ | 最新のコメント50
インデックス: 食べ歩き | Java | プログラム | UNIX | 画像
最新の日記へのリンク | この日記ページをはてなアンテナに追加 この日記ページをはてなブックマークに追加
はてな ダイアリー アンテナ ブックマーク ブログ
Twitter | mixi | Facebook | Google+
slideshare | github | Qiita


Written by NAKAMURA Minoru, Email: nminoru atmark nminoru dot jp, Twitter:@nminoru_jp