[ カテゴリー » PC関連 ]

WSL2でLinuxに固定IPを追加する

開発マシン上WSL2/Alpine/docker-composeでkafkaを動かそうとしたら手間取ったので、備忘録。

  • WSL2で動かすLinuxのIPアドレスはホストWindowsによってプライベートアドレスを与えられ、Windows起動の度に変わる(おそらくセキュリティ向上のため)
  • DHCPはLinux起動時にWSL2で特別な処理が行われているようで、/etc/network/interfaceに記載してもおそらく無視される
  • /etc/network/interfaceに書かれた内容はLinux起動後ifdown/ifupコマンドでstaticは反映されるが、DHCPはサーバーが見つからない理由でエラーになる
  • 上記DHCPが失敗した状態では、WSL2ホストマシン外と通信できない(Hyper-Vの仮想スイッチ設定をいじればできる?)
  • 一方dockerコンテナ上のkafkaは、ADVERTISED_HOST設定のため毎回変わるアドレスでは運用しづらい
Hyper-Vの仮想スイッチをいじると他のLinuxディストリビューションと併用する時に副作用が出そうなので、対象Linuxにプライベート固定アドレスを追加する方法を採る。アドレス例として
  • 192.168.99.1: WSL2ホスト側のアドレス(=Windows)
  • 192.168.99.100: Windowsから見たLinux側のアドレス

Windows側

仮想スイッチ'vEthernet (WSL)'はWSL2起動時に作成されるようなので、先にLinuxディストリビューションを起動しておく。このスイッチにホストWindowsのアドレスを追加。要管理者権限。Windows再起動ごとに行う。
 netsh interface ip add address "vEthernet (WSL)" 192.168.99.1 255.255.255.0

Linux側(dockerホスト on WSL2)

Linuxに固定アドレスを与える。要root。こちらもLinux起動ごとに必要。
ip addr add 192.168.99.100/24 dev eth0

Linux側(docker-compose)

wurstmeister/kafka-dockerLink を使用。docker-compose.yml変更点は
  • kafkaのportsを9092:9092に
  • KAFKA_ADVERTISED_HOST_NAMEを書き換え

docker-compose後はホストWindowsからはbootstrap-server=192.168.99.100:9092でkafkaにアクセス可能。

version: '2'
services:
  zookeeper:
    image: wurstmeister/zookeeper
    ports:
      - "2181:2181"
    restart: unless-stopped

  kafka:
    build: .
    ports:
      - "9092:9092"
    environment:
      DOCKER_API_VERSION: 1.22
      KAFKA_ADVERTISED_HOST_NAME: 192.168.99.100
      KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
    restart: unless-stopped

[参考]

— posted by mu at 07:53 pm   commentComment [0]  pingTrackBack [0]

JupyterLabが起動時に落ちる

JupyterLabを起動するとIndexError: pop from an empty dequeというエラーが出て落ちてしまう現象が私の環境でも発生。GitHubの掲示板Link の内容と私の環境(WinPython 3.10.4.amd64)での現象を総合すると、

  • JupyterLab起動と連動してブラウザが立ち上がり(これが既定の動作)、複数のタブ(Python Kernel)が開くようになっていると発生
  • Windowsでより起きやすいが、Linuxでも起きる
回避策としては以下のどれかを実行。
  • JupyterLabを--no-browserオプションをつけて起動、コマンドラインに表示されるURLを別途ブラウザで開く(起動時後短時間で複数Kernelを立ち上げることの回避)[2022/7/20] これでも落ちました
  • JupyterLab終了時に開いているタブを1つ以下にする。ただしこの問題が出ているということはJupyterLabはすぐに落ちてしまうので
    • 前述と同じ--no-browserで起動してタブを閉じる。一番着実。
    • 起動-ブラウザが自動的に開く-JupyterLabが落ちる間に不要なタブを閉じる。短時間なので一つずつ、がんば。
    • めげずにJupyterLabの起動を繰り返す。運が良ければ落ちないときがある。
  • .ipynb_checkpointsを消すとか、__pycache__を消す。ただし再発する報告あり。
[参考]

— posted by mu at 02:55 pm   commentComment [0]  pingTrackBack [0]

Visual Studio 2013オンラインライセンス認証が失敗する

オンラインライセンス認証で使用しているVisual Studio 2013のライセンス更新をしようとしたところ、更新できないとの表示。一度サインアウトして入りなおすなどするうちに'Sorry, we ran into a problem' (英語版使ってるので、日本語表記は不明。「申し訳ございません。問題が発生しました」くらい?)という表示が出る。

どうやらサーバーの方がTLS1.2暗号化を必要とする変更が入ったとのことで、以下のレジストリを追加・Visual Studio再起動後改めてライセンス更新をすると成功しました。

VSが余りに古くてついにMSから使用停止食らったかと焦った…

[HKEY_LOCAL_MACHINE¥SOFTWARE¥WOW6432Node¥Microsoft¥.NETFramework¥v4.0.30319]
"SystemDefaultTlsVersions"=dword:00000001
"SchUseStrongCrypto"=dword:00000001

レジストリファイル添付しておきますが、ご利用は自己責任で。

[参考]
添付ファイル: VisualStudio2013onlinelicenseupdate.reg 

— posted by mu at 11:18 am   commentComment [0]  pingTrackBack [0]

Mercurialのリポジトリをrobocopyでバックアップ

失敗談。

Windowsで運用中のMercurialのリポジトリバックアップにrobocopyコマンドを/MOTオプションを付けて実行してました。はい、定期的に変更点を見つけて宛先を最新にし続けるというあのオプションです。そんな運用する奴いねぇよというツッコミはスルーの方向で。

はじめは短期間の運用だったはずなのですが、あれよあれよと数カ月経過。robocopyを終了し複製の方のリポジトリを使おうとすると、コミットが終わらない!?

原因はMercurialが排他制御に使う.hg/store/lockファイル。リポジトリが更新中の時だけ作成されその後消えるのですが、たまたまrobocopyがそれを見つけて宛先にコピー。宛先にはそれが残り続けたため、複製にコミットしようとしたMercurialはlockファイルが消えるのを延々待っていたと。

robocopyには/PURGEオプションを付けましょう。これでも短時間複製リポジトリにlockファイルが存在する可能性はありますが、激減するはず。

— posted by mu at 04:25 pm   commentComment [0]  pingTrackBack [0]

NVR510のLAN側にFree PBXを接続する

ちょっと手こずったのでメモ。

Yamaha NVR510Link (ファームウェア15.01.21)にIP電話のSIPサーバーとしてLAN側(lan1)にあるFreePBX 15.0.17.43(なRasPBXLink )を設定。NVR510→他の内線発信は問題ないのですが、内線からNVR510への発信が即刻切れる(or 話中?)になりました。当然NVR510に接続された電話機は鳴らず。

これに対処するため下記2か所を設定。たぶんFreePBXがLAN側かWAN側かは関係ないと思います。

  1. NVR510: 着信用SIPアドレスの設定
  2. FreePBXで設けた内線番号を1234とした場合の例。
    analog sip arrive myaddress 1 1001 sip:1234
    
    マニュアルLink
  3. FreePBX: Qualify Frequency=noに
    • FreePBXのApplication-Extensions-NVR510に割り当ててる内膳番号の設定を開く
    • Advancedタブの中にQualify Frequencyという項目があり、60とか90とか数字もしくはyesとなっていればnoに変更
    • Submit-Apply

前者は先に外線SIPサーバーとしてSMARTalkが登録してあり、そちらの着信設定だけが設定されていたため起きました。FreePBXしか繋いでない場合はGUIで設定済みの場合もあります。

後者が何をしているかと言うと、FreePBXは登録された電話機が実際に応答可能かを調べるため、ここで入力された秒ごとにOPTIONSというコマンドを送って応答を見ているらしいです。例えば対象のIP電話機がスマホで持ち出されている場合応答が返ってきませんので、FreePBXはこの電話機の状態をUnavailableとし、これに対する内線発信があってもFreePBXのレベルで接続をやめてしまいます。

で仕様なのかNVR510はこのコマンドに対して応答をしないようで、FreePBXからみるといつもUnavailableとかOFFLINE状態に扱われます。Qualify Frequency=noとすることでこのチェックは行われず、FreePBXはこの電話機が居るものとして扱うようになりNVR510への発信が届くようになります。

副作用として居ない電話機に対する発信→即「ツー・ツー・ツー…」の代わりに、延々と呼び出し音が聞こえることとなります。内線番号ごとに設定できますのでNVR510に割り当てた番号だけnoにしておきます。

# いやぁWAN側のSIPサーバーしか動作しないとかの仕様がなくてよかった > NVR510

[20222/2/11 追記] OPTIONSに応答しないというソース、というか今回の解決方法 YAMAHA RT57i (VoIp-Info.jp)Link

— posted by mu at 02:35 pm   commentComment [0]  pingTrackBack [0]

T: Y: ALL: Online:
ThemeSwitch
  • Basic
Created in 0.0236 sec.
prev
2023.10
next
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31