ChatGPTにスイッチのACL呪文 "port-bitmask" を唱えさせたい(失敗中)

※2023/8/9 無理してChatGPTでやらせないほうが良かったかも

最初からこういう解決策を探せばよかった。

ここのpythonコードで計算できた。

stackoverflow.com

 

・・・・・・・・・・・・・・・・・・・

とあるスイッチのACLTCP/UDPのポート範囲を指定する場合に用いられる port-bitmask を自分で考えるのが面倒なので、ChatGPTに計算させたい。

が、うまくいってない。

誰かこのプロンプトを修正して成功させてほしい・・・。

ちゃんとプロンプトの勉強しなきゃ・・・。

ひょっとしてそもそもプロンプトの中身が間違ってるのかな・・・。自信なくなってきた・・・。

ネットワークスイッチデバイスの拡張ACLにport-bitmaskを用いて、
複数のTCPポート、または、UDPポートを指定する方法があります。

宛先ポートを示す書式は以下のとおりです。
destination-port [port] [port-bitmask]

port-bitmaskを省略すると[port]1つのポートを指定したことになります。

destination-port 0 64512
について解説します。

[port]で指定された"0"は16桁の2進数にすると
0000 0000 0000 0000

[port-bitmask]で指定された"64512"は16桁の2進数にすると
1111 1100 0000 0000

2進数の[port-bitmask]によりマスクされた"1"以外の桁が自由であり、
[port]を基準とした場合の最小値
0000 0000 0000 0000 = 0

2進数の[port-bitmask]によりマスクされた"1"以外の桁が自由であり、
[port]を基準とした場合の最大値
0000 0011 1111 1111 = 1023

よって最小値〜最大値の値が指定されたことになり、
ポート0から1023までを指定したことになります。

Q1:ポート0から1023までを指定
A1:destination-port 0 64512 // 0-1023

Q2:ポート20000から20011を指定
A2:destination-port 20000 65528 // 20000-20007
   destination-port 20008 65532 // 20008-20011

Q3:ポート1024から2047を指定
A3:destination-port 1024 64512 // 1024-2047

Q4:ポート1024から65535を指定
A4:destination-port 1024 64512 // 1024-2047
   destination-port 2048 63488 // 2048-4095
   destination-port 4096 61440 // 4096-8191
   destination-port 8192 57344 // 8192-16383
   destination-port 16384 49152 // 16384-32767
   destination-port 32768 32768 // 32768-65535

Q5:ポート1024から64511を指定
A5:destination-port 1024 64512 // 1024-2047
   destination-port 2048 63488 // 2048-4095
   destination-port 4096 61440 // 4096-8191
   destination-port 8192 57344 // 8192-16383
   destination-port 16384 49152 // 16384-32767
   destination-port 32768 49152 // 32768-49151
   destination-port 49152 57344 // 59152-57343
   destination-port 57344 61440 // 57344-61439
   destination-port 61440 63488 // 61440-63487
   destination-port 63488 64512 // 63488-64511

Q6:ポート3500から4000を指定
A6:destination-port 3500 65532 // 3500-3503
   destination-port 3504 65520 // 3504-3519
   destination-port 3520 65472 // 3520-3583
   destination-port 3584 65024 // 3584-3839
   destination-port 3840 65280 // 3840-3967
   destination-port 3968 65504 // 3968-3999
   destination-port 4000 65535 // 4000

Q7:ポート30001から30200
A7:

A7の正解がほしいのに間違う。

正解は、

destination port 30001 65535 // 30001
destination port 30002 65534 // 30002-30003
destination port 30004 65532 // 30004-30007
destination port 30008 65528 // 30008-30015
destination port 30016 65472 // 30016-30079
destination port 30080 65472 // 30080-30143
destination port 30144 65504 // 30144-30175
destination port 30176 65520 // 30176-30191
destination port 30192 65528 // 30192-30199
destination port 30200 65535 // 30200

こうなるはず。

 

このプロンプトが成功したら、"deny"と"permit"を組み合わせて少ない行でポート指定する方法もやりたい。

世にあふれる「タスク管理記事」「タスク管理本」は、なぜ信用できないのか

結論から先にいうと…

それらを書く人は「『タスク管理をする』以外のモチベーション」があるから信用できないが、それを予め頭に入れてから読むことで有用な情報になる。

記事や本を書く人のモチベーションを想像しよう

まずは、本を売ったり、ブログのアフィリエイトで「お金を稼ぐこと」だろう。影響力を付けたかったり、情報発信することでそのジャンルの情報が集まりやすくなる効果もある。

しかし、モチベーションに良し悪しがあるのではなく、「わざわざ時間を割いて記事を書いたり、本を出したりするような何かモチベーションがある人」という程度の理解をするのがいいんだと思う。

書く人たちはタスク管理に時間を割く理由がある

「タスク管理に時間を割く」ということについて、あまり記事を目にすることがないが、タスク管理に失敗するほとんどの人は「タスク管理に時間を割かない」ことが理由にあると思う。

書く人たちは、タスク管理を研究し、考察し、様々なツールを試すことに時間を使うモチベーションがある。もっと言うと一旦タスク管理のシステムを作ったあとでも、1日3-4時間くらいタスク管理システムを色々触った上で、それでもメリットがあったりすると思う。

読む人と書く人がミスマッチしている

私の場合、タスク管理にかける時間は1日30分くらいに収めたいので、もし書いている人が1日に3-4時間かけていると、そこに隔たりが生まれる。

それでも記事や本を読むしかない

タスク管理の情報を得ようとする時点で、記事や本を読むしかないので、「書いている人はどういう人なのか」「タスク管理にどれくらい時間をかけているのか」を想像しながら読むしかない。

自分がやるとどれくらい時間がかかるかを考えながら読む

読む時、常に持っておかないといけない視点がこっちの方で、紹介してくれている方法や考え方を自分が実行する場合にどれくらい時間がかかるか、である。

自分を救う

「こんな複雑なシステムを維持しているなんてこれ書いてる人すごいな、私はダメなんだ」といちいち落ち込まずに、書く人にはいろいろなモチベーションがあり、時間をかけて維持しているかもしれないと思えばいい。

自分にあったやり方を探す永遠の旅

引っ越し、転職、進学、などの外的な変化や、自分の成長、心の不安、などの内的な変化により、その時、有用なタスク管理も変わっていくものだと思う。

前うまくいっていたことが今うまくいかなかったりもするけど、落ち込まずに前を向いて、今最適と思える方法を探せばいい。探す時間なんてないんだけど探して試していくしかない。2分で調べて、すぐサインアップして、新しいツールを使い始めることもあると思う。でも探して試すことはずっと続く。覚悟を決めよう。

………

ところで、この記事を書いてる私のモチベーションは何なのか?

geoipupdateが動かなくなったのでいろいろ変更した件

cronで実行してたgeoipupdateが失敗するようになってた。そして、こんな感じのメールが届くようになった。

Received an unexpected HTTP status code of 401 from https://updates.maxmind.com/app/update_secure?db_md5=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx&challenge_md5=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx&user_id=xxxxxx&edition_id=xxx

このページに理由書いてた
GeoLite2 Free Downloadable Databases « MaxMind Developer Site
「古いのやめます。無償ユーザーはGeoLite2へ移行してね。」(超意訳)
geoipupdateで使うGeoIP.confの変更の仕方はここに書いてた
Automatic Updates for GeoIP2 and GeoIP Legacy Databases « MaxMind Developer Site
手元のCentOS6はgeoipupdateが2.5じゃなくepelで入れた古いものだったので、下記のような感じで設定変更

UserID 0
LicenseKey 000000000000
ProductIds GeoLite2-City GeoLite2-Country GeoLite2-ASN

これでgeoipupdateが通るようになるが、

# ls /usr/share/GeoIP/GeoLite2*
/usr/share/GeoIP/GeoLite2-ASN.mmdb  /usr/share/GeoIP/GeoLite2-City.mmdb  /usr/share/GeoIP/GeoLite2-Country.mmdb

こんな感じで、拡張子がmmdbっていう見たことない形式になってる…
※以前は拡張子dat

割愛するけど要するに独自形式ということで、
geoiplookupコマンドからは読めなくなってる
今はpythonperlphpくらいでやらないといけなくて、
誰か偉い人がgeoiplookupコマンドをmmdbに対応してくれるのを待つか考えよう。
一応手元では、pythonでやってみて、一応動いてるっぽい。

あとgeoipupdateのcron実行に関して

毎月第一火曜 GeoLite2-City GeoLite2-Country
毎週火曜 GeoLite2-ASN

にそれぞれ更新されるので、
更新された後に、実行されるようにスケジュール設定しよう。
こんな風に設定した。

# cat /etc/cron.d/geoipupdate
34 23 1-7 * * root [ "$(date '+\%w')" -eq 2 ] && geoipupdate -f /etc/GeoIP-City.conf
23 23 *   * 2 root geoipupdate -f /etc/GeoIP-ASN.conf

参考
crontabで第?曜日にタスクを実行する方法 - Webサービスで起業を目指すプログラマーblog

GeoIP-City.confは ProductIDs を GeoLite2-City だけにして、
GeoIP-ASN.confは ProductIDs を GeoLite2-ASN だけにしてる。
GeoLite2-Countryは多分使わない。

あったらいいな、こんなWiFiルーター

まあ妄想です。

基本機能

  • LinuxOSで動いてる
  • コマンドでガシガシイジれる
  • OpenFortiVPNとかSoftetherとか入る(入ってる)
  • L2TPクライアント
  • SSTPクライアント
  • IPSEC-VPNクライアント

公衆無線LANとかWAN側WiFi

  • WAN側WiFiとLAN側WiFiでルーティングできる
  • 加速度センサと連動して一定時間留まってたらそこの公衆無線LANWiFiにつながる機能が実装できる(入ってる)
  • 公衆無線LANSSID優先順位設定ができる
  • 公衆無線LANごとにどのVPNを自動で張るか決めれる
  • WiFiのSIM認証に対応

クレードル

  • 有線LANに接続できる
  • 有線LANをWANにしたりLANにしたりできる
  • WiFiをWANにしたりLANにしたりできる
  • キャリア系通信をWANにして有線とWiFiをLANにできる

その他

  • firewalldとかsnortとかその辺がいいかんじ、オンオフも可
  • 複数SIM挿し可能 DocomoLTEもWiMAX2+もつながって欲しい
  • マルチホーミング設定できて、アグリケーション的な?
  • StaticPressの発射台になれる
  • MovableTypeの発射台になれる
  • 定期的に速度を検出しながらしきい値以下になったら他の接続先に自動切り替えする機能
  • VPNの時には、Man In The Middle検出と通知して欲しい

メモ

速度検出って速度検出用のサービス使って容量の大きい通信をわざわざ発生させるんじゃなくて、実際の通信から簡易的に検出できるようなのないんだろうか。

ESXi6.0 Update3 のHPカスタムイメージでインストールした状態からパッチを2つあてたメモ

要するにストレージやNICのドライバが、VMware製のもので上書きされないように、気をつけながら作業する、という感じ。
※もしかしたら、以下のパッチは上書きされても良かったかもしれないが、それは確認していない

ESXiはメンテナンスモードに変更して、2つのパッチを転送しておく。

Build 5224934

KB2149568

VMWareのサイトでKB2149568を確認

2種類のプロファイルがあり
日付にsがついてる場合はSecurity Fix Onlyでついてないのが通常(このパッチはついてないのしかない)
no-toolsはVMwaretoolsなし

sなし、VMwaretoolsありのプロファイルのKBをさらに確認

何のVIBが更新されるかを見て、
HPのストレージやNICのドライバに影響がなさそうなことを確認する

今回はこれだけ、問題なし
VMware_bootbank_esx-base_6.0.0-3.58.5224934
VMware_bootbank_vsan_6.0.0-3.58.5224737
VMware_bootbank_vsanhealth_6.0.0-3000000.3.0.3.58.5224738

上記の esx-base vsan vsanhealth がVIB Nameになるので、これを明示的に指定して
アップデートじゃなくてインストールする
※明示的に指定せずにまるごとアップデートすると、なぜかドライバが外れてしまう

ドライランでアップデートテスト(ドライバが外れることが確認できる)

esxcli software profile update -d /vmfs/volumes/PATH_TO_STORAGE/vib/ESXi600-201703001.zip --dry-run -p ESXi-6.0.0-20170304001-standard

ドライランでインストールテスト(ドライバが外れずにアップデートできることを確認)

esxcli software vib install --dry-run -d /vmfs/volumes/PATH_TO_STORAGE/vib/ESXi600-201703001.zip -n esx-base -n vsan -n vsanhealth

インストールコマンド

esxcli software vib install -d /vmfs/volumes/PATH_TO_STORAGE/vib/ESXi600-201703001.zip -n esx-base -n vsan -n vsanhealth

Build 5572656

KB2149954

VMWareのサイトでKB2149954を確認

sなし、VMwaretoolsありのプロファイルのKBをさらに確認

今回はこれだけ -> テストで問題あり?
VMware_bootbank_esx-base_6.0.0-3.69.5572656
VMware_bootbank_vsan_6.0.0-3.69.5568629
VMware_bootbank_vsanhealth_6.0.0-3000000.3.0.3.69.5572665
VMware_bootbank_ehci-ehci-hcd_1.0-4vmw.600.3.69.5572656
VMware_bootbank_misc-drivers_6.0.0-3.69.5572656
VMware_bootbank_xhci-xhci_1.0-3vmw.600.3.69.5572656
VMware_bootbank_esx-ui_1.19.0-5387100

ドライランでアップデートテスト(ドライバが外れることが確認できる 改行をちょっと弄った)

esxcli software profile update -d /vmfs/volumes/PATH_TO_STORAGE/vib/ESXi600-201706001.zip --dry-run -p ESXi-6.0.0-20170604001-standard

   VIBs Installed:
   VMware_bootbank_ehci-ehci-hcd_1.0-4vmw.600.3.69.5572656,
   VMware_bootbank_esx-base_6.0.0-3.69.5572656, 
   VMware_bootbank_esx-ui_1.19.0-5387100, 
   VMware_bootbank_esx-xserver_6.0.0-3.66.5485776, 
   VMware_bootbank_misc-drivers_6.0.0-3.69.5572656, 
   VMware_bootbank_qlnativefc_2.1.50.0-1vmw.600.3.57.5050593, 
   VMware_bootbank_scsi-mpt2sas_19.00.00.00-1vmw.600.0.0.2494585, 
   VMware_bootbank_vsan_6.0.0-3.69.5568629, 
   VMware_bootbank_vsanhealth_6.0.0-3000000.3.0.3.69.5572665, 
   VMware_bootbank_xhci-xhci_1.0-3vmw.600.3.69.5572656, 
   VMware_locker_tools-light_6.0.0-3.66.5485776

   VIBs Removed: 
   Avago_bootbank_scsi-mpt2sas_15.10.06.00-1OEM.550.0.0.1331820, 
   QLogic_bootbank_qlnativefc_2.1.50.0-1OEM.600.0.0.2768847, 
   VMware_bootbank_ehci-ehci-hcd_1.0-3vmw.600.2.52.4600944, 
   VMware_bootbank_esx-base_6.0.0-3.58.5224934, 
   VMware_bootbank_esx-ui_1.14.0-4940836, 
   VMware_bootbank_esx-xserver_6.0.0-0.0.2494585, 
   VMware_bootbank_misc-drivers_6.0.0-3.57.5050593, 
   VMware_bootbank_vsan_6.0.0-3.58.5224737, 
   VMware_bootbank_vsanhealth_6.0.0-3000000.3.0.3.58.5224738, 
   VMware_bootbank_xhci-xhci_1.0-3vmw.600.2.52.4600944, 
   VMware_locker_tools-light_6.0.0-3.57.5050593

KBに掲載されているもの以外もアップデートがある模様
上記だとやはり scsi-mpt2sas と qlnativefc が消えてしまう

下記のように組み立ててテスト
ドライランでインストールテスト(ドライバが外れずにアップデートできることを確認)

esxcli software vib install --dry-run -d /vmfs/volumes/PATH_TO_STORAGE/vib/ESXi600-201706001.zip -n esx-base -n ehci-ehci-hcd -n esx-ui -n esx-xserver -n misc-drivers -n vsan -n vsanhealth -n xhci-xhci -n tools-light

インストールコマンド

esxcli software vib install -d /vmfs/volumes/PATH_TO_STORAGE/vib/ESXi600-201706001.zip -n esx-base -n ehci-ehci-hcd -n esx-ui -n esx-xserver -n misc-drivers -n vsan -n vsanhealth -n xhci-xhci -n tools-light

リブート

最後にリブートして適用完了

LinuxへのVMware-tools VMtools インストール方法のメモ

毎回、どうだったっけと考えることがあるのでメモ
とりあえずCentOS6でやった

perlをインストールしておく

インストール時の無難なオプション
./vmware-install.pl -d
返答なしですべてデフォルトで入れてくれる

これだけだとふるーいカーネル用のものが入るようなきがするので、多分コンパイルして入れたほうがいいような気がする

kernelが重複してインストールされてるなどして、
失敗しても起動できる環境じゃないとヤバいかも
あとgccとkernel-develを入れておくこと

で、インストール後にコンパイルして入れ直す場合のオプション
vmware-config-tools.pl -c --clobber-kernel-modules=vmxnet3,vmmemctl,pvscsi -d

起動に成功したら、gccやkernel-develなどは削除しても良い

VMware Fusion 6+Win8.1(BootCamp領域)でpvscsiを使うメモ

自分がやったことのメモ
今日やったところなのでとりあえず様子見

先にWindowsを起動してpvscsiのwin2008用ドライバのinfファイルを、右クリックからインストールしておく

Windowsをシャットダウンし、念のためFusionも終了後、vmxファイルを直接編集

scsi0.virtualDev = "lsisas1068"
ide0:0.present = "TRUE"
scsi0:0.present = "FALSE"
ide0:0.fileName = "Boot Camp.vmdk"
ide0:0.deviceType = "rawDisk"

これらを

scsi0.virtualDev = "pvscsi"
ide0:0.present = "FALSE"
scsi0:0.present = "TRUE"
scsi0:0.fileName = "Boot Camp.vmdk"
scsi0:0.deviceType = "rawDisk"

このように変更
普通に起動しようとすると警告が出るけど無視して試用中