Hyper-V 等の VM 上にプロキシと DNS を立てる

本ブログでは、ちょいちょいプロキシ環境下での設定方法を紹介しているが、
そういったプロキシ環境下での動作の検証のため、以下を満たすプロキシサーバーを立てたい。

  • OS は Ubuntu 24.04
  • squid によって 8080 ポートにて HTTP プロキシする
  • bind9 によって自身のアドレスを proxy.example.com として名前解決する DNS サーバーとなる

とりあえず、 squid と bind9 をいれて、設定ファイルを必要最低限書き換えてみよう。

export CURRENT_IP_ADDRESS=`hostname -I | tr -s ' ' '\n' | tail -n 1`
sudo apt -y install squid bind9 bind9utils
sudo sed -i -r -e 's/^(#\s*)(http_access allow localnet)/\2/' -e 's/^http_port 3128/http_port 8080/' /etc/squid/squid.conf
sudo sed -i -e 's%^\s*\(//\)\?\s*forwarders {%        forwarders {\n                8.8.8.8;\n        };\n\0%' -e 's%^};%\0\nzone "proxy.example.com" in {\n  type master;\n  file "proxy.example.com.zone";\n};%' /etc/bind/named.conf.options
sudo tee /var/cache/bind/proxy.example.com.zone << EOF > /dev/null
\$TTL 86400
@       IN      SOA     proxy.example.com. root.proxy.example.com. (
                        2023070301      ;Serial
                        3600            ;Refresh
                        1800            ;Retry
                        604800          ;Expire
                        86400           ;Minimum TTL
)
@       IN      NS      proxy.example.com.
@       IN      A       $CURRENT_IP_ADDRESS
EOF
sudo systemctl restart squid named

これだけ。

環境変数 CURRENT_IP_ADDRESShostname -I コマンドで自身の IPアドレス の一つを設定しているが、あらかじめアドレスがわかっているなら、手動で設定しても良い。

(Hyper-V の場合)「内部ネットワーク」経由で同じネットワークに所属する、別の VM で DNS のアドレスを上記サーバーのアドレスにして、直接インターネットに繋がるネットワークから切断すれば、プロキシ経由を想定した通信のテストが行える。

export http_proxy=http://proxy.example.com:8080; export https_proxy=$http_proxy
curl https://example.com

https://example.com の HTML が返されれば成功だ。

MicroK8s で kustomization.yaml を apply すると error: accumulating resources になる問題

MicroK8s で kustomization.yaml を apply した際に、 error: accumulating resources が発生する問題についてのメモ。

端的に言うと、snap でインストールした MicroK8s で、内部的に git コマンドが実行される操作をすると、おかしくなる模様。

発生する問題

snap で MicroK8s をインストールし、 kubectl apply -k する。
このとき、Kustomize に指定する kustomization.yaml には、直接的または間接的に remote directory 方式のリソースを参照する。

$ sudo snap install microk8s --classic --channel=latest/stable
$ cat << EOF > ./kustomization.yaml
resources:
- https://github.com/kubernetes-sigs/kustomize//examples/helloWorld/?timeout=120&ref=v3.3.1
EOF
$ microk8s kubectl apply -k .

すると、以下のようなエラーが発生する。

ホストOS に git がインストールされている場合:

error: accumulating resources: accumulation err='accumulating resources from 'https://github.com/kubernetes-sigs/kustomize//examples/helloWorld/?timeout=120&ref=v3.3.1': URL is a git repository': failed to run '/snap/microk8s/6364/usr/bin/git fetch --depth=1 https://github.com/kubernetes-sigs/kustomize v3.3.1': /usr/lib/git-core/git-remote-https: symbol lookup error: /snap/core20/current/lib/x86_64-linux-gnu/libpthread.so.0: undefined symbol: __libc_pthread_init, version GLIBC_PRIVATE
: exit status 128

ホストOS に git がインストールされていない場合:

error: accumulating resources: accumulation err='accumulating resources from 'https://github.com/kubernetes-sigs/kustomize//examples/helloWorld/?timeout=120&ref=v3.3.1': URL is a git repository': failed to run '/snap/microk8s/6364/usr/bin/git fetch --depth=1 https://github.com/kubernetes-sigs/kustomize v3.3.1': fatal: unable to find remote helper for 'https'
: exit status 128

ワークアラウンド

続きを読む

楽天をサブ回線にして Rakuten Link (Office) で発信すると非通知になる問題を解消する

楽天の株主優待制度の eSIM が届いたので、 Rakuten UN-LIMIT VI 廃止以来久々に楽天回線を利用した。
MNP できないため、サブ回線としてデータ通信のみで使っている。

以前と比べると、楽天回線 (2024年現在 Band 3 のみ) に繋がる場所も増えてきているし、パートナー回線(au)との切り替えもスムーズで、確かに進化を感じる。

さて、 Rakuten 回線のメリットの一つに、 Rakuten Link (株主優待回線の場合は Rakuten Link Office) を使うと、通話料が無料となる点がある。

特に発信元の電話番号にこだわりの無いところに電話する場合は、主回線ではなく Rakuten Link で電話することで通話料金を節約できる訳だ。

ところが、どうも Rakuten Link で電話をかけたとき、主回線の時と比べて電話に出てもらえないことが多い気がする。
もしやと思って自分自身に電話をかけてみたところ……


ああ、非通知設定で発信されているでは無いか。

この問題を解消しよう。

Rakuten 回線にしても非通知のまま

続きを読む

Raspberry Pi 5 に Ubuntu 24.04 LTS を入れて SSH するまで

ついに日本でも、 Raspberry Pi 5 の技適対応モデルが発売された。

Raspberry Pi にインストールする OS と言えば、まずは Raspberry Pi OS (旧 Raspbian) だが、同じ Debian ベースの Ubuntu も Raspberry Pi 向けの公式イメージを出している。

但し、 Raspberry Pi 5 に対応しているのは、 Ubuntu 23.10 (コードネーム: mantic) 以降のみとなる。

Ubuntu 23.10 自体は「非LTS」バージョンとなり、サポートが 9ヶ月 (2024年6月まで) と短い。
常用するなら、サポートが 5年 (ESM なら 10年) と長い LTS バージョンが望ましい。

そこで今回は 2024年4月25日 にリリースされたばかりの、 24.04 LTS (コードネーム: noble) を使って、 ディスプレイやキーボードが無い状態でインストールから SSH 接続までやってみよう。

Raspberry Pi 5 をターゲットに書いているが、 Raspberry Pi 3, 4, Raspberry Pi Zero 2 W でも同じ手順でできるはずだ。

TL;DR

準備するもの

  • Raspberry Pi 5
    • Raspberry Pi 3, 4 でも同じ手順でいけるはず
  • 4GB 以上の micorSD カード
    • IOPS が高い、「アプリケーションパフォーマンスクラス」が A2 のものが良いだろう。値段や速度を考えると、実用上は 64GB 以上になるだろうか。
    • 私は、ARCANITE 64GB microSDXCカード 【A2】、UHS-I U3、V30、4K、C10 値段の割にパフォーマンスが良かったため、これを使った。
    • 後述するが、最終的には NVMe SSD にした方が断然良い
  • microSD を書き込める PC (Win, Linux, mac)
  • インターネットに繋がる Wi-Fi または イーサネットケーブル

以下もあると便利だが、今回の手順では無くても問題ない。

  • micro-HDMI で繋がるディスプレイ 又は 変換コネクタ
  • RasPi に繋げる USB キーボード

イメージファイルの取得

続きを読む

NEC IXシリーズルーターでポートVLANとタグVLANをVLANスイッチ的に併用する

この記事では、 GE0, GE1 の 2つの "デバイス" を持つ NEC の IX2105 ルーターを例に、1カ所のスイッチングハブ用のデバイスの中で ポートVLAN と タグVLAN を併用し、スイッチングハブのトランクポートやアクセスポートのように使う方法について説明する。

はじめに

国内の中規模オフィス向けのルーターとして、 Yamaha や Cisco がよく知られているが、 NEC も UNIVERGE IXシリーズ を提供している。

Yamaha の RTXシリーズ と価格帯が近いものの、 NEC の IXシリーズ には、 Yamaha と比べてもわりと柔軟な構成を行える利点がある。

一方で Yamaha と比べた場合、 NEC の IXシリーズ の設定方法を調べるのは少し…いや、だいぶ難しい。
書籍や Web 記事、公式マニュアルなど、ドキュメントや設定例の全てに於いて、 Yamaha と比べて著しく情報が少ないためだ。

そんな IXシリーズ を使って、ポートVLAN と タグVLAN を併用する方法について紹介しよう。
(この併用も、Yamaha の RTX で同一ポート内で実現するのは難しい機能のひとつだ)

なお、同じ UNIVERGE でも LTE や Wi-Fi などのワイヤレス機能を持った WAシリーズ では、 VLAN 周りのコマンド体系が異なるため、このページの方法は使えない。

設定例として挙げている IX2105 は 2019年9月30日をもって販売を終了 しているが、マイナーバージョンこそ Ver.10.2 までに留まるものの不具合修正は続いている。
(例えば後継の IX2106 だと 10.2系 は Ver.10.2.26 までで終了し、最新版は Ver.10.8.21 となっている)
中古ならヤフオク等で二束三文で手に入るし、最新 FW (ソフトウェア) も NEC に "UNIVERGE IXシリーズ ソフトウェアダウンロードサイトへの接続申請書" を出せば手に入るので、練習機としてはもってこいだ。

ゴール

以下のような構成を行う。

  • 既定ではスイッチングハブとなっている、 GE1 デバイスの4つの物理ポートを、以下の3つに分割する
    • タグ付き通信を行う(即ちトランクポートとなる)1番ポート
      • 但し、管理VLAN 的に使うため、 untag のフレームも受け付ける
    • VLAN100 の通信を untag で行う(即ちアクセスポートとなる)2番ポート
    • VLAN200 の通信を untag で行う(即ちアクセスポートとなる)3, 4番ポート
  • 各 VLAN それぞれで DHCP サーバによる異なるセグメントの IP アドレスの割り当てを行う
  • GE0 デバイスでは NAT (NAPT) を行い、 GE1 デバイスの各セグメントからのルーティングも受け付ける

先に最終的な構成を載せておくと、以下のようになる。

続きを読む