- 対象環境:Amazon Linux 2023、PHP は AL2023 標準パッケージ(`php8.x*`)、Web サーバは Apache(`httpd`)+ PHP-FPM - コマンド中の `php8.4` は、使用している PHP のバージョンに読み替える --- ## 1. PHP の更新 > AL2023 の dnf コマンドには `--releasever=latest` を付ける。付けないと、OS のリリースバージョンが固定されているため新しいパッケージが見えない。 ### 1-1. 現状確認 ```bash # PHP バージョン(CLI / FPM の両方) php -v php-fpm -v # インストール済み PHP パッケージ rpm -qa | grep php ``` ### 1-2. 未適用の修正版・セキュリティアドバイザリの確認 ```bash # 1) キャッシュを捨てて、最新の情報を取り直す(古いキャッシュだと新しいパッケージが見えない) sudo dnf clean metadata # 2) インストール済みの PHP パッケージに更新があるか(何も出なければ更新なし) sudo dnf list --upgrades 'php8.4*' --releasever=latest # 3) PHP 関連の未適用アドバイザリ(ALAS) sudo dnf updateinfo list --security --releasever=latest | grep -i php # 4) 特定の CVE に対応するアドバイザリがあるか(例:CVE-2026-109618) sudo dnf updateinfo list --releasever=latest --cve CVE-2026-109618 ``` - 1):2)〜4) の出力に表示される「メタデータの期限切れの最終確認」の日時が古い場合は、1) をやり直す - 2):`dnf list available` はインストールしていないパッケージしか表示しないので、更新の確認には `dnf list --upgrades` を使う **AWS 側の対応状況の確認先** php.net で修正版が出ても、AL2023 のパッケージに反映されるまでは時間差がある(通常数日)。 | 確認したいこと | 確認先 | |---|---| | 特定の CVE の対応状況(パッケージごと) | `https://explore.alas.aws.amazon.com/.html`
例:https://explore.alas.aws.amazon.com/CVE-2026-109618.html | | AL2023 のセキュリティアドバイザリ一覧 | https://alas.aws.amazon.com/alas2023.html | CVE ページの「Status」の見方: | Status | 意味 | 対応 | |---|---|---| | Pending Fix | 影響あり、修正版を準備中 | 回避策を入れて、修正版が出るのを待つ | | Fixed | 修正版を公開済み(ALAS 番号と公開日が載る) | 1-3 以降で更新する | | No Fix Planned | 修正版は出ない予定(サポート終了のバージョンなど) | サポートされているバージョンへ移行する | | Not Affected | 影響なし | 対応不要 | PHP 本体の情報(脆弱性の内容、修正版のバージョン、回避策): - PHP 公式のお知らせ:https://www.php.net/ - PHP のセキュリティアドバイザリ(技術的な詳細):https://github.com/php/php-src/security/advisories ### 1-3. バックアップ - EC2 コンソールから **AMI またはスナップショットを取得**(切り戻し用) - 複数台ある場合は、1台で更新・動作確認してから残りに展開する ### 1-4. 更新 ```bash # インストール済みの PHP 関連パッケージをすべて最新に(一覧を確認してから y) sudo dnf upgrade --releasever=latest 'php8.4*' ``` - インストール済みの php8.4 関連パッケージ(拡張モジュールを含む)だけが最新版に置き換わる。パッケージの追加や削除はされない ### 1-5. 設定ファイルの競合を確認 ```bash # 何も出なければ競合なし sudo find /etc/php* /etc/php-fpm* /etc/httpd -name '*.rpmnew' 2>/dev/null ``` - `/etc/php.ini`、`/etc/php.d/*.ini`、`/etc/php-fpm.d/www.conf` などの変更は上書きされない - `*.rpmnew` が出た場合は、既存の設定との差分を確認する ### 1-6. サービスの再起動 ```bash sudo systemctl restart php-fpm # 必須:PHP 本体の反映 sudo apachectl configtest # 推奨:httpd の設定に問題がないか(Syntax OK を確認) sudo systemctl reload httpd # 推奨:httpd 用の設定ファイルの反映(接続は切れない) ``` PHP パッケージの更新では、次の2種類のファイルが置き換わるため、それぞれ反映する。 | 置き換わるもの | 反映方法 | |---|---| | PHP 本体(PHP-FPM で動いている) | `php-fpm` の再起動 | | httpd 用の設定ファイル(`/etc/httpd/conf.d/php.conf` など。`.php` へのリクエストを PHP-FPM に渡す設定) | `configtest` で確認してから、httpd の `reload` | ### 1-7. 更新後の確認 ```bash # バージョン php -v ; php-fpm -v rpm -qa | grep php8.4 # サービスの状態 systemctl status php-fpm --no-pager # active (running)、起動時刻が更新後になっているか systemctl status httpd --no-pager # active (running) か(reload では起動時刻は変わらない) # 未適用の PHP アドバイザリが残っていないか(何も出なければ OK) sudo dnf updateinfo list --security --releasever=latest | grep -i php # エラーログ sudo tail -n 50 /var/log/php-fpm/error.log sudo tail -n 50 /var/log/httpd/error_log ``` - ブラウザで各サイトの主な画面を確認する(ログイン、DB 参照、画像やファイルのアップロードなど、使用している拡張モジュールに関わる処理) ### 1-8. 定期確認(新しい修正が出ていないか) ```bash sudo dnf clean metadata sudo dnf list --upgrades 'php8.4*' --releasever=latest sudo dnf updateinfo list --security --releasever=latest | grep -i php ``` - 更新が表示されたら、1-3〜1-7 を行う - 修正待ちの CVE がある場合は、1-2 の CVE ページで Status が「Fixed」になったかも確認する --- ## 2. OS 全体の更新 ### 2-1. リリースバージョンの固定状況の確認 AL2023 のリポジトリには日付付きのバージョン(例:`2023.10.20260120`)があり、各サーバーは**起動に使った AMI のバージョンに固定**される。 - 普通の `dnf upgrade` は、固定されたバージョンの範囲内でしか更新しない - 新しいバージョンのパッケージを入れるには `--releasever=latest`(または特定の日付)を指定する - 自分でバージョンを進めないと、セキュリティ修正も入らない(構築時のバージョンのまま取り残される) ```bash # 今固定されているリリースのバージョン rpm -q system-release # 新しいリリースがあるか(出力にリリースノートの URL も表示される) sudo dnf check-release-update # 未適用のアドバイザリ件数 sudo dnf updateinfo summary --releasever=latest ``` - AL2023 のリリースノート:https://docs.aws.amazon.com/linux/al2023/release-notes/relnotes.html ### 2-2. 事前準備 **バックアップ** - EC2 コンソールから AMI またはスナップショットを取得する - 可能であれば、本番の AMI から検証用のインスタンスを起動して先に試す ```bash # /etc 全体のバックアップ(更新後の比較用) sudo tar czf /root/etc-backup-$(date +%Y%m%d).tar.gz /etc ``` **変更した設定ファイルの確認** パッケージに含まれるファイルを、インストール時の状態と比べて、内容を変更したものを洗い出す(全パッケージを調べるため数分かかる)。 ```bash # 1) 内容を変更した「設定ファイル」(更新しても基本的に変更は残る) sudo rpm -Va 2>/dev/null | grep '^..5' | awk '$2=="c"' # 2) 内容を変更した「設定ファイル以外」(更新で上書きされて変更が消える → 要対応) sudo rpm -Va 2>/dev/null | grep '^..5' | awk '$2!="c"' ``` 出力の例と見方: ``` S.5....T. c /etc/httpd/conf/httpd.conf ← 1) に出る:設定ファイル S.5....T. /usr/lib/systemd/system/xxx.service ← 2) に出る:設定ファイル以外 │ │ │ │ │ │ │ └ "c" があれば設定ファイル(なければ空欄) │ │ └ T:更新日時が変わっている │ └ 5:内容が変わっている(grep '^..5' でこれを含む行だけに絞っている) └ S:サイズが変わっている ``` - 先頭の9文字は、インストール時から変わった項目を表す(変わっていない項目は `.`) - `rpm -Va`:インストール済みの全パッケージ(`-a`)のファイルを検証(`-V`)する - 2) に出たファイルは、更新前に変更内容を控えておくか、上書きされない場所(systemd なら `/etc/systemd/system/`)に移しておく 更新時の設定ファイルの扱い: | 設定の種類 | 更新時の動き | |---|---| | 自分で新しく作ったファイル(例:`/etc/httpd/conf.d/サイト名.conf`) | 影響なし | | パッケージ付属の設定ファイルを編集したもの | 基本的に残る。新しい標準設定は `*.rpmnew` として置かれる | | 同上だが、パッケージ側が「上書き」指定にしているもの(少数) | 新しいものに置き換わり、元のファイルは `*.rpmsave` として退避される | | パッケージ付属の、編集していない設定ファイル | 新しいバージョンのものに黙って置き換わる | | 設定ファイル以外を直接編集したもの(例:`/usr/lib/systemd/system/*.service`) | 上書きされて変更が消える | | サービスの自動起動設定、ユーザー、cron、`/var/www` のデータなど | 影響なし | - `/usr/lib/systemd/system/` 配下などを直接編集している場合は、更新前に `sudo systemctl edit サービス名` で `/etc/systemd/system/` 側の上書き設定に移しておく ### 2-3. 更新 ```bash # OS 全体を最新リリースに更新(一覧を確認してから y) sudo dnf upgrade --releasever=latest # 特定のバージョンに揃えたい場合は日付を指定する # sudo dnf upgrade --releasever=2023.12.20261016 # 再起動が必要か確認して、必要なら再起動 sudo dnf needs-restarting -r sudo reboot ``` - 更新の中で `system-release` パッケージも新しくなり、固定先がそのバージョンに進む ### 2-4. 更新後の確認 ```bash # 固定先が進んだか rpm -q system-release # 新しい日付になっていれば OK sudo dnf check-release-update # 新しいリリースが表示されなければ最新 # 設定ファイルの競合(.rpmnew:新しい標準設定 / .rpmsave:元の設定が退避されたもの) sudo find /etc \( -name '*.rpmnew' -o -name '*.rpmsave' \) 2>/dev/null # 退避された設定がある場合は差分を確認して、必要な変更を戻す sudo diff /etc/xxx.conf.rpmsave /etc/xxx.conf # 起動に失敗しているサービスがないか systemctl --failed sudo apachectl configtest systemctl status php-fpm --no-pager systemctl status httpd --no-pager ``` - 1-7 と同様に、エラーログとブラウザでの動作を確認する ### 2-5. 定期的な更新の運用 - 固定先を定期的に進める(`sudo dnf upgrade --releasever=latest`)。SSM Patch Manager で自動化するのもおすすめ - `/etc/dnf/vars/releasever` に `latest` と書くと、常に最新のリポジトリを見るようになる(ただし勝手にリリースが進むので、検証環境と本番環境でバージョンを揃えたい場合は、毎回 `--releasever` を明示的に指定する運用にする) - 新しいサーバーを構築するときは、パッケージをインストールする前に `sudo dnf upgrade --releasever=latest` で最新リリースに上げておく(AMI 作成時点のバージョンに固定されているため) --- ## おまけ:作業ログの記録 ```bash # プロンプトに日時を表示する(コマンドごとの時刻がログに残る。このログイン中だけ有効) export PS1='[\D{%F %T}] \u@\h:\w\$ ' # 記録開始(入力したコマンドと出力をファイルに記録。-a:追記 / -f:すぐ書き込む) script -a -f ~/worklog_$(date +%Y%m%d_%H%M).log # 記録終了 exit ```
なせ(れ)ばなる
このブログは、趣味の記録と、知的生産活動のための道具です。
2026/10/22
PHP / OS 更新チートシート(Amazon Linux 2023 / Apache + PHP-FPM)
2026/10/09
nslookup チートシート
## 1. 基本の書式 ``` nslookup [オプション] <調べる名前> [問い合わせ先DNSサーバー] ``` | 部分 | 内容 | 例 | |---|---|---| | オプション | レコードの種類の指定やデバッグ表示など | `-type=mx`、`-debug` | | 調べる名前 | ドメイン名・ホスト名・IPアドレス(**名前の末尾に `.` を付けるのが確実**。3章参照) | `example.com.` | | 問い合わせ先 | 省略すると、PCに設定されたDNS(ルーターやプロバイダのDNSなど)を使う | `ns1.example.net` | ### 対話モード 引数なしで実行すると、対話モードになります。 | 対話モードのコマンド | コマンドラインでの同等の指定 | |---|---| | `set type=mx` | `-type=mx` | | `set debug` / `set nodebug` | `-debug` | | `server ns1.example.net` | 末尾に問い合わせ先 `ns1.example.net` を指定 | | `example.com.`(名前だけを入力) | 問い合わせの実行 | | `set all` | (なし)現在の設定(type、debug、問い合わせ先など)を一覧表示する | | `exit` | 対話モードの終了 | --- ## 2. よく使うオプション | オプション | 意味 | |---|---| | `-type=<種類>` | レコードの種類を指定する(`-q=<種類>` も同じ)。省略するとA(とAAAA) | | `-debug` | 実際に送った問い合わせ名(QUESTIONS)、応答の種類、TTLなどの詳細を表示する | | `-norecurse` | 問い合わせ先に「代わりに調べて」と頼まない(相手のDNSが持っている情報だけを見たいとき) | | `-timeout=<秒>` | 応答を待つ時間 | ### レコードの種類(`-type=`) | 種類 | 内容 | 主な用途 | |---|---|---| | `a` | 名前 → IPv4アドレス | Webサイトやサーバーの接続先の確認 | | `aaaa` | 名前 → IPv6アドレス | 同上(IPv6) | | `mx` | メールの受信先サーバー(優先度付き) | メールがどこに届くかの確認 | | `txt` | 任意の文字列 | SPF(`v=spf1 …`)、DMARC(`_dmarc.` の下)、ドメインの所有権確認 | | `ns` | そのドメインを管理するDNSサーバー(向き先) | どのDNSでゾーンが管理されているかの確認 | | `soa` | ゾーンの管理情報(管理元・シリアル番号・既定値など) | ゾーンの有無、変更の目安 | | `cname` | 別名 | 別名の参照先の確認 | | `ptr` | IPアドレス → 名前(逆引き) | IPアドレスがどのサーバーのものかの確認 | | `any`(`all` も同じ) | 全種類 | **確認には使わない**。DNSサーバーによって返る内容が異なり、最小限の応答(`HINFO RFC8482`)しか返さないものも多い。全レコードの一覧は得られない | --- ## 3. 注意点 ### 名前の末尾には `.` を付ける(Windowsの場合) Windows の `nslookup` は、末尾に `.` のない名前を問い合わせるとき、**まずPCのDNSサフィックス(例:`isp.example.ne.jp`)を補った名前で問い合わせます**。 ``` nslookup -type=ns example.com a.dns.jp → 実際には example.com.isp.example.ne.jp を問い合わせ、無関係な結果が表示されることがある nslookup -type=ns example.com. a.dns.jp → 意図どおり example.com を問い合わせる ``` (`a.dns.jp`:.jp ドメインを管理するJPRSのDNSサーバー) - 通常のDNSサーバーに問い合わせた場合は、補った名前が「存在しない」と返り、元の名前で問い合わせ直すので気付きにくい。 - 上位のDNSサーバー(`a.dns.jp` など)は「委任先の案内」を返すため、補った名前の結果がそのまま表示されてしまう。 - 実際に送った名前は、`-debug` の `QUESTIONS:` 欄で確認できる。 - PCに設定されているサフィックスは、`ipconfig /all` の「接続固有の DNS サフィックス」「DNS サフィックス検索一覧」で確認できる(Windowsの場合)。 ### レコードの種類を必ず指定する `-type` を省略するとAレコードとして問い合わせます。たとえばDMARC(TXTレコード)を種類なしで問い合わせると「ない」という結果になり、**設定されていないと誤認**します。 ### 問い合わせ先によって結果の意味が変わる | 問い合わせ先 | 得られるもの | |---|---| | 省略(PCのDNS) | キャッシュを含む結果。TTLは**残り時間**(カウントダウンされた値) | | 権威DNS(そのゾーンを持つDNS) | ゾーンに設定されている**正の値**。TTLは設定値 | | 上位のDNS(TLDを管理するDNS) | 「このドメインはどのDNSが管理しているか」という委任の情報 | --- ## 4. 出力の読み方 表示の文言は、Windowsの場合のものです。 | 表示 | 意味 | |---|---| | `Non-authoritative answer:` | キャッシュDNSからの応答(権威DNSの応答ではない) | | `auth. answer`(`-debug` のヘッダー) | 権威DNSからの応答 | | `ttl = 3600 (1 hour)`(`-debug`) | TTL。権威DNSに問い合わせたときは設定値 | | SOAだけが返る(`primary name server = …` だけ表示) | **その名前・種類のレコードはない**(ゾーン自体はある) | | `can't find … : Non-existent domain` | その名前自体が存在しない | | `Query refused` | そのDNSサーバーは、そのドメインを管理していない(または問い合わせを拒否している) | | `HINFO CPU = RFC8482` | `-type=any` への最小限の応答。全レコードの一覧ではない | | `??? unknown type 65 ???` | nslookupが表示に対応していない種類のレコード(例:65はHTTPSレコード) | | `default TTL = …`(SOAの表示) | SOAの最後の項目(MINIMUM)。現在の規格では**ネガティブキャッシュの時間**(「存在しない」という応答を保持する時間) | | 権威DNSなのにTTLが問い合わせのたびに減る | 参照先の値を返すエイリアス型(CNAMEフラットニング)のレコードと考えられる | --- ## 5. 用途別コマンド集 ### 5-1. ドメインを管理しているDNSサーバーはどこか(NSレコード) ``` nslookup -type=ns example.com. nslookup -type=ns example.jp. a.dns.jp ``` - 上位のDNSに問い合わせると、「どのDNSサーバーがこのドメインの設定(ゾーン)を管理しているか」という登録内容(委任)が分かる。**ここに出るDNSサーバーだけが外部から参照される。** - `a.dns.jp`:.jp を管理するJPRSのDNSサーバー(a〜hの8台)。.com・.net の場合は `a.gtld-servers.net` など。 - TLDを管理するDNSサーバーの一覧は、次のコマンドで確認できる。 ``` nslookup -type=ns jp. nslookup -type=ns com. ``` ### 5-2. DNSサーバーがそのドメインの設定(ゾーン)を持っているか(SOAレコード) ``` nslookup -type=soa example.com. ns1.example.net ``` - SOAが返れば、そのDNSサーバーはゾーンを持っている。 - シリアル番号は、日付形式(例:`2024010500`)で付けられていることが多く、最終変更の目安になる。 ### 5-3. メールがどのサーバーに届くか(MXレコード) ``` nslookup -type=mx example.com. nslookup -type=mx example.com. ns1.example.net ``` - 優先度(preference)の値が小さいサーバーから順に使われる。 ### 5-4. どのサーバーからのメール送信が許可されているか(SPF:TXTレコード) ``` nslookup -type=txt example.com. ns1.example.net ``` - 返ってきたTXTのうち、`v=spf1` で始まるものがSPF。**1本だけ**であることを確認する(2本以上あると無効)。 - 例:`v=spf1 include:spf.example.net ~all` は、`spf.example.net` で許可された送信元を許可し、それ以外は「怪しいが受け取ってよい」(`~all`)という意味。`-all` の場合は「拒否してよい」。 - 参考:include 先の名前のTXTを問い合わせると、許可されている送信元(IPアドレスなど)を見られる。 ``` nslookup -type=txt spf.example.net. ``` ### 5-5. 認証に失敗したメールの扱いが指定されているか(DMARC:TXTレコード) ``` nslookup -type=txt _dmarc.example.com. ns1.example.net ``` - **`-type=txt` を必ず指定する**。 - `p=none`(何もしない)、`p=quarantine`(迷惑メール扱い)、`p=reject`(拒否)のいずれかが指定されている。 ### 5-6. 送信メールの電子署名を検証する公開鍵があるか(DKIM:TXTレコード) ``` nslookup -type=txt <セレクタ>._domainkey.example.com. ``` - セレクタ名が分からないと照会できない。送信側の設定や、受信したメールのヘッダー(`DKIM-Signature` の `s=`)で確認する。 ### 5-7. レコードがどれくらいの時間キャッシュされるか(TTL) ``` nslookup -debug -type=mx example.com. ns1.example.net ``` - 権威DNSに `-debug` 付きで問い合わせると、`ttl =` に設定値が表示される。 - 何度か問い合わせて値が変わらなければ固定の設定値、減っていく場合はキャッシュの残り時間か、エイリアス型のレコード。 ### 5-8. 名前とIPアドレスの対応(Aレコード/逆引きのPTRレコード) ``` nslookup -type=a mail.example.com. nslookup -type=ptr 10.2.0.192.in-addr.arpa. nslookup 192.0.2.10 ← IPアドレスを渡すと逆引きになる ``` - 逆引きの名前は、IPアドレスを逆順に並べて `.in-addr.arpa.` を付けたもの(192.0.2.10 → `10.2.0.192.in-addr.arpa.`)。 ### 5-9. 実際にどの名前で問い合わせたか(補完の確認) ``` nslookup -debug -type=ns example.com a.dns.jp ``` - `QUESTIONS:` 欄に表示される名前が、実際に問い合わせた名前。サフィックスが補われていないかを確認できる(3章参照)。 ### 5-10. DNSの変更がすべての管理サーバーに反映されたか ``` nslookup -debug -type=mx example.com. ns1.example.net nslookup -debug -type=mx example.com. ns2.example.net nslookup -debug -type=txt example.com. ns1.example.net nslookup -debug -type=txt example.com. ns2.example.net ``` - 権威DNSが複数ある場合は、**すべてに問い合わせて**同じ新しい値が返ることを確認する(外部からは、どの権威DNSに問い合わせが行くか分からないため)。 - PCのDNS(問い合わせ先を省略)では、TTLが切れるまで古い値が返ることがある。 --- ## 6. 補足:WHOIS(ドメインの登録情報) WHOISのコマンドは、OSによっては標準で入っていない(Windowsでは、Sysinternals の Whois を別途導入する)。次のWebサービスでも確認できる。 - .jp ドメイン:JPRS WHOIS([https://whois.jprs.jp/](https://whois.jprs.jp/)) - .com・.net・.org などのgTLD:ICANN Lookup([https://lookup.icann.org/](https://lookup.icann.org/))。ドメイン名の国際的な管理団体(ICANN)の公式ページ - その他の国別ドメイン(.uk、.de など):IANA WHOIS([https://www.iana.org/whois](https://www.iana.org/whois))でTLDを検索すると、そのTLDを管理するレジストリとWHOISサーバーが分かる
2026/10/03
CVP分析グラフ
## CVPグラフ
## 損益構造の恒等式 | 区分 | 式 | |---|---| | 売上 | 変動費 + 固定費 + 利益 = 費用 + 利益 = 変動費 + 限界利益 | | 費用 | 変動費 + 固定費 = 売上 − 利益 | | 変動費 | 売上 × 変動費率 = 売上 − 限界利益 = 費用 − 固定費 | | 固定費 | 費用 − 変動費 = 限界利益 − 利益 | | 利益 | 売上 − 費用 = 限界利益 − 固定費 = 売上 × 限界利益率 − 固定費 | | 限界利益 | 売上 − 変動費 = 固定費 + 利益 = 売上 × 限界利益率 | | 変動費率 | 変動費 ÷ 売上 = 1 − 限界利益率 | | 限界利益率 | 限界利益 ÷ 売上 = 1 − 変動費率 |
## 損益の構造図
2026/09/29
Linux ネットワーク/Wi-Fi コマンド チートシート
## 0. コマンドの役割
| コマンド | 主な用途 | 備考 |
|---|---|---|
| `ip` | インターフェース、IPアドレス、ルート、MACアドレスの確認・一時操作 | `iproute2`に含まれる |
| `nmcli` | NetworkManagerの接続・プロファイル管理 | 設定を永続化できる |
| `iw` | Wi-Fiデバイス、接続先、周波数、電波情報の確認 | 無線LANの低レベル情報 |
| `rfkill` | Wi-Fiなどの無線機能のブロック状態確認 | ハード/ソフトブロックを確認 |
| `lsusb` | USBデバイスの認識確認 | USB Wi-Fiドングルの確認 |
| `ethtool` | NICのドライバーやリンク情報の確認 | 無線では主にドライバー確認に使用 |
> 対象: Debian/Ubuntu系およびRHEL/Rocky/AlmaLinux系。`nmcli`はNetworkManager使用環境が前提です。
## 1. インターフェース一覧
```bash
ip link
ip -br link
nmcli device status
iw dev
```
## 2. USB Wi-Fiドングルの認識確認
```bash
lsusb
sudo dmesg | grep -iE 'usb|wifi|wlan|wireless|firmware'
sudo journalctl -k | grep -iE 'usb|wifi|wlan|wireless|firmware'
sudo ethtool -i wlan1
readlink -f /sys/class/net/wlan1/device/driver
```
## 3. MACアドレスの確認
```bash
ip link show wlan1
cat /sys/class/net/wlan1/address
nmcli -g GENERAL.HWADDR device show wlan1
ip -br link
```
## 4. IPアドレスの確認
```bash
ip address
ip addr show dev wlan1
ip -br addr
nmcli device show wlan1
nmcli -g IP4.ADDRESS,IP4.GATEWAY,IP4.DNS device show wlan1
```
## 5. Wi-Fiアクセスポイントの検索
```bash
nmcli device wifi rescan
nmcli device wifi list
nmcli device wifi list ifname wlan1
nmcli -f IN-USE,SSID,BSSID,CHAN,FREQ,SIGNAL,SECURITY device wifi list ifname wlan1
sudo iw dev wlan1 scan
sudo iw dev wlan1 scan | grep -E 'BSS |SSID:|freq:|signal:'
```
## 6. Wi-Fiへ接続
### SSIDを指定
```bash
nmcli device wifi connect "SSID" password "PASSWORD" ifname wlan1
```
パスワードをコマンド履歴へ残したくない場合:
```bash
nmcli --ask device wifi connect "SSID" ifname wlan1
```
### BSSIDを指定
```bash
nmcli device wifi connect "AA:BB:CC:DD:EE:FF" password "PASSWORD" ifname wlan1
```
SSIDとBSSIDを両方指定:
```bash
nmcli device wifi connect "SSID" bssid "AA:BB:CC:DD:EE:FF" password "PASSWORD" ifname wlan1
```
### 既存プロファイルを有効化
```bash
nmcli connection up "接続名" ifname wlan1
```
## 7. 接続中のWi-Fi情報
```bash
iw dev wlan1 link
nmcli device show wlan1
nmcli -f IN-USE,SSID,BSSID,CHAN,FREQ,SIGNAL device wifi list ifname wlan1
```
`iw dev wlan1 link`の主な項目:
- `Connected to`: 接続中のBSSID
- `SSID`: 接続中のSSID
- `freq`: 中心周波数
- `signal`: 受信信号強度
- `tx bitrate`: 送信リンク速度
## 8. チャネル/周波数の確認
```bash
iw dev wlan1 link
iw dev wlan1 info
nmcli -f IN-USE,SSID,BSSID,CHAN,FREQ device wifi list ifname wlan1
```
### 代表的な周波数とチャネル
| 周波数 | チャネル |
|---:|---:|
| 2412 MHz | 1 |
| 2437 MHz | 6 |
| 2462 MHz | 11 |
| 5180 MHz | 36 |
| 5200 MHz | 40 |
| 5220 MHz | 44 |
| 5240 MHz | 48 |
| 5500 MHz | 100 |
| 5520 MHz | 104 |
| 5540 MHz | 108 |
| 5560 MHz | 112 |
## 9. 内蔵Wi-FiからUSB Wi-Fiへ切り替える
例:
- 内蔵Wi-Fi: `wlan0`
- USB Wi-Fi: `wlan1`
```bash
nmcli device disconnect wlan0
nmcli device wifi connect "SSID" password "PASSWORD" ifname wlan1
nmcli device status
iw dev wlan1 link
ip route
```
内蔵Wi-Fiを一時停止:
```bash
sudo ip link set wlan0 down
```
元に戻す:
```bash
sudo ip link set wlan0 up
```
NetworkManagerの管理対象外にする:
```bash
sudo nmcli device set wlan0 managed no
sudo nmcli device set wlan0 managed yes
```
## 10. 接続プロファイルの管理
```bash
nmcli connection show
nmcli connection show --active
nmcli connection show "接続名"
```
プロファイルを特定インターフェースへ固定:
```bash
nmcli connection modify "接続名" connection.interface-name wlan1
```
BSSIDを固定/解除:
```bash
nmcli connection modify "接続名" 802-11-wireless.bssid "AA:BB:CC:DD:EE:FF"
nmcli connection modify "接続名" 802-11-wireless.bssid ""
```
自動接続と優先度:
```bash
nmcli connection modify "接続名" connection.autoconnect yes
nmcli connection modify "接続名" connection.autoconnect-priority 100
```
設定反映:
```bash
nmcli connection down "接続名"
nmcli connection up "接続名"
```
## 11. Wi-Fi無線機能の有効/無効
```bash
nmcli radio wifi
nmcli radio wifi on
nmcli radio wifi off
rfkill list
sudo rfkill unblock wifi
sudo rfkill unblock all
```
## 12. インターフェースの有効/無効
```bash
sudo ip link set wlan1 down
sudo ip link set wlan1 up
nmcli device disconnect wlan1
nmcli connection up "接続名" ifname wlan1
```
## 13. デフォルトルートの確認
```bash
ip route
ip route get 8.8.8.8
ip -6 route
```
例:
```text
default via 192.168.1.1 dev wlan1 proto dhcp metric 600
```
この場合、デフォルト通信は`wlan1`を使用します。
## 14. インターフェースの優先順位
Linuxは通常、デフォルトルートの`metric`が小さい経路を優先します。
```bash
ip route
nmcli connection modify "USB-WiFi" ipv4.route-metric 100
nmcli connection modify "Internal-WiFi" ipv4.route-metric 600
nmcli connection modify "USB-WiFi" ipv6.route-metric 100
nmcli connection modify "Internal-WiFi" ipv6.route-metric 600
nmcli connection down "USB-WiFi"
nmcli connection up "USB-WiFi"
```
## 15. Wi-Fiの対応周波数・チャネル確認
```bash
iw phy
iw phy phy0 info
iw list
```
確認できる主な項目:
- 対応周波数・使用可能チャネル
- 無効化されたチャネル
- 対応インターフェースモード
- HT/VHT/HE/EHT対応状況
- 対応チャネル幅
## 16. リージョン/規制ドメイン
```bash
iw reg get
sudo iw reg set JP
iw reg get
iw list
```
> 恒久設定方法はディストリビューションと無線ドライバーによって異なります。
## 17. 通信状態の確認
```bash
ip -s link show wlan1
ip route
ping -c 4 192.168.1.1
ping -c 4 8.8.8.8
ping -c 4 example.com
nmcli general status
```
## 18. NetworkManagerログの確認
```bash
systemctl status NetworkManager
sudo journalctl -u NetworkManager -b
sudo journalctl -u NetworkManager -f
sudo journalctl -u NetworkManager -b | grep -iE 'wifi|wlan|802-11|supplicant'
systemctl status wpa_supplicant
```
## 19. 変更前後の確認セット
### 変更前
```bash
ip -br link
ip -br addr
ip route
nmcli device status
nmcli connection show --active
iw dev
iw dev wlan1 link
```
### 変更後
```bash
nmcli device status
nmcli connection show --active
iw dev wlan1 link
ip addr show dev wlan1
ip route
ip route get 8.8.8.8
```
## 20. トラブルシューティング基本フロー
### 1. USBデバイスとして認識されているか
```bash
lsusb
```
### 2. インターフェースが作成されているか
```bash
ip -br link
iw dev
```
### 3. ドライバー/ファームウェアエラーがないか
```bash
sudo journalctl -k -b | grep -iE 'firmware|wifi|wlan|wireless|usb|error|failed'
```
### 4. 無線機能がブロックされていないか
```bash
rfkill list
nmcli radio
```
### 5. NetworkManagerが管理しているか
```bash
nmcli device status
```
### 6. アクセスポイントを検出できるか
```bash
nmcli device wifi rescan ifname wlan1
nmcli device wifi list ifname wlan1
```
### 7. 接続できているか
```bash
iw dev wlan1 link
```
### 8. IPアドレスが割り当てられているか
```bash
ip addr show dev wlan1
```
### 9. デフォルトルートがあるか
```bash
ip route
```
### 10. 経路、外部疎通、DNSを切り分ける
```bash
ip route get 8.8.8.8
ping -c 4 8.8.8.8
ping -c 4 example.com
```
## 21. よく使うワンライナー
Wi-Fiインターフェース名:
```bash
iw dev | awk '$1=="Interface"{print $2}'
```
MACアドレス:
```bash
cat /sys/class/net/wlan1/address
```
接続中のBSSID:
```bash
iw dev wlan1 link | awk '/Connected to/{print $3}'
```
接続中のSSID:
```bash
iw dev wlan1 link | sed -n 's/^[[:space:]]*SSID: //p'
```
現在の周波数:
```bash
iw dev wlan1 link | awk '/freq:/{print $2 " MHz"}'
```
デフォルトルートで使用中のインターフェース:
```bash
ip route show default | awk '/default/{print $5}'
```
Wi-Fi接続情報をまとめて確認:
```bash
printf '%s\n' '=== Device ===' &&
nmcli device status &&
printf '%s\n' '=== Link ===' &&
iw dev wlan1 link &&
printf '%s\n' '=== Address ===' &&
ip -br addr show wlan1 &&
printf '%s\n' '=== Route ===' &&
ip route
```
## 注意事項
- `ip link set ... down`による変更は一時的です。
- `nmcli connection modify`は保存された接続プロファイルを変更します。
- `device`はインターフェースの現在状態、`connection`はNetworkManagerの設定プロファイルです。
- SSH接続中に使用中のインターフェースを停止すると、接続が切断されます。
- インターフェース名は`wlan0`、`wlp2s0`、`wlx...`など環境によって異なります。
- BSSID固定中は別のアクセスポイントへのローミングが制限されます。
- 実行前に対象インターフェース名と接続プロファイル名を確認してください。
Claude の共有範囲まとめ(claude.ai / デスクトップ / ターミナル / Web)
> 調査日: 2026-09-29 > 出典: Anthropic 公式ドキュメント(末尾の参考リンク)。 --- ## 基本の考え方 分ける軸は「Web / デスクトップ / ターミナル」ではなく、**どこに保存されるか**。 1. **アカウント(クラウド)に保存** → どの端末からでも見える 2. **PC のローカル(`~/.claude/` 配下)に保存** → そのPCの中ならターミナルとデスクトップで共有される。別のPCには同期されない 3. **Git リポジトリに保存** → push / pull で共有される --- ## ① claude.ai チャット | 項目 | Web / デスクトップ(Chat) / モバイル | Claude Code | |---|---|---| | チャット履歴 | ✅ 同期 | ❌ 見えない | | Projects(チャット用)、メモリ、カスタム指示、スタイル | ✅ 同期 | ❌ 読み込まれない | | コネクタ(claude.ai/customize/connectors で追加) | ✅ 同期 | ✅ 同じアカウントでログインすれば使える | - チャットと Claude Code は別の製品として扱われる。チャットの内容や claude.ai のメモリは Claude Code に引き継がれない。 --- ## ② Claude Code のセッション | 種類 | 保存場所 | 他の環境から見えるか | |---|---|---| | ターミナル(CLI) | そのPCの `~/.claude/projects/...jsonl` | 同じPCなら `claude --resume` や `/resume` で再開できる。別のPCからは基本的に見えない | | デスクトップ版 Code タブ(ローカル) | そのPC | ほかのPCや Web からは見えない | | Claude Code on the web(クラウド) | Anthropic のクラウド | ✅ Web(claude.ai/code)、モバイル、デスクトップから見える。`claude --teleport` でターミナルに取り込める | | Remote Control | ローカルで動いているセッションのまま | ローカルセッションをスマホやブラウザから操作する仕組み。PCの電源が切れたりスリープしたりすると止まる | - ローカルセッションを別の端末から扱いたいとき → **クラウドセッション** にするか **Remote Control** を使う --- ## ③ 設定・メモリ・スキル・MCP(Claude Code) | 項目 | 場所 | 同じPC内(CLI ⇔ デスクトップ) | 別のPC | |---|---|---|---| | ユーザー用 CLAUDE.md、settings.json | `~/.claude/` | ✅ 共有 | ❌ 同期なし(自分でコピーする) | | 自動メモリ(auto memory) | `~/.claude/projects//memory/` | ✅ 共有 | ❌ 同期なし | | ユーザー用スキル | `~/.claude/skills/` | ✅ 共有 | ❌ 同期なし | | ユーザー/ローカル用 MCP | `~/.claude.json` | ✅ 共有 | ❌ 同期なし | | プロジェクト用 CLAUDE.md、`.claude/settings.json`、`.claude/skills/`、`.mcp.json` | リポジトリ | ✅ 共有 | ✅ Git 経由で共有 | | `settings.local.json`、`CLAUDE.local.md` | リポジトリ(Git の管理外) | ✅ 共有 | ❌ 同期なし | --- ## 実務上のポイント - デスクトップ版の Code タブも、CLI と同じ `~/.claude` を使う。同じPCなら、メモリ、スキル、設定は共通。 - **どこでも使いたいスキルや指示はリポジトリ側(`.claude/skills/`、`CLAUDE.md`)に置く**。別のPCでもクラウドセッションでも、clone すれば同じように使える。 - クラウドセッションはリポジトリを clone して動くため、ローカルにしかない `~/.claude` の自動メモリやユーザー用スキルは読み込まれない。 --- ## 参考 - [Sessions](https://code.claude.com/docs/en/sessions.md) - [Claude Code on the web](https://code.claude.com/docs/en/claude-code-on-the-web.md) - [Remote Control](https://code.claude.com/docs/en/remote-control.md) - [Desktop](https://code.claude.com/docs/en/desktop.md) - [Memory](https://code.claude.com/docs/en/memory.md) - [Settings](https://code.claude.com/docs/en/settings.md) - [MCP](https://code.claude.com/docs/en/mcp-quickstart.md)
2026/08/26
AWS Transfer Family (SFTP → S3)
## News
[新サービス – AWS Transfer for SFTP – Amazon S3向けフルマネージドSFTPサービス](https://aws.amazon.com/jp/blogs/aws/new-aws-transfer-for-sftp-fully-managed-sftp-service-for-amazon-s3/)
## 全体構成
```
SFTPクライアント(IP指定/Port22)
│
▼
Elastic IP
│
▼
Transfer Family サーバー (SFTP / VPCエンドポイント)
│
▼
S3バケット
```
## 構築手順
### 1. Elastic IP を確保
- 新規EIPを1つ取得(対象リージョン)
### 2. サブネット・セキュリティグループ準備
- 既存VPC内の対象AZの**パブリックサブネット**を選択
- プライベートサブネットの場合、EIP付与不可(NAT経由では不可)
- セキュリティグループ
- インバウンド: TCP/22、送信元は接続元IPで絞る
### 3. IAMロール作成
- 信頼ポリシー: プリンシパル `transfer.amazonaws.com`
- 許可アクション: `s3:GetObject` `s3:PutObject` `s3:ListBucket` `s3:DeleteObject`
- Resourceは対象バケット/プレフィックスに限定推奨
### 4. S3バケット準備
- 既存流用 or 新規作成
- 複数ユーザー分離が必要ならプレフィックス設計(例: `bucket/user1/`)
### 5. Transfer Family サーバー作成
| 項目 | 設定値 |
|---|---|
| プロトコル | SFTP |
| エンドポイントタイプ | **VPC**(PUBLICだとIP固定不可) |
| VPC | 既存VPC |
| サブネット | 手順2の単一サブネット |
| セキュリティグループ | 手順2のもの |
| アイデンティティプロバイダー | サービスマネージド |
| Elastic IP | サーバー作成時にサブネットと合わせて指定可能(作成後の紐付け作業は不要) |
### 6. ユーザー作成
**事前準備(クライアント側で鍵ペア生成)**
```bash
ssh-keygen -t rsa -b 4096 -f ./transfer_user_key -C "user1"
```
- `transfer_user_key`(秘密鍵): クライアントが保管
- `transfer_user_key.pub`(公開鍵): AWS側に登録
**コンソール設定**
| 項目 | 内容 |
|---|---|
| ユーザー名 | 英数字・アンダースコアのみ |
| ロール | 手順3のIAMロール |
| ホームディレクトリタイプ | S3バケット |
| ホームディレクトリ | 下表参照 |
| 制限付き(Restricted) | 有効推奨(指定パス配下のみ表示) |
| SSH公開鍵 | `.pub`ファイルの中身をそのまま貼り付け |
**ホームディレクトリの指定でアップロード先が変わる**
| 設定 | アップロード先 |
|---|---|
| `my-bucket/user1` | `user1/` フォルダ配下 |
| `my-bucket`(プレフィックスなし) | バケット直下 |
- 複数ユーザーで同一バケット直下を共有する場合、ディレクトリ分離はされないためIAMロールでのアクセス制御が唯一の分離手段。誤って他ユーザーのファイルを上書き/削除するリスクがあるため、複数ユーザー運用時はプレフィックス分離推奨。
### 7. 接続確認
**sftpコマンド**
```bash
sftp -i ./transfer_user_key user1@<EIPのIPアドレス>
```
- 初回はknown_hostsの確認プロンプトが出る
- `ls` でホームディレクトリ配下が見えることを確認
**WinSCP等のGUIクライアント**
- WinSCP(PuTTY系エンジン)はPPK形式を要求する場合あり
- PuTTYgenで「Import key」→「Save private key」で`.ppk`に変換して指定
- WinSCP 5.x以降はOpenSSH形式の秘密鍵を直接読み込める場合もあるため、まずはそのまま指定してみる
2026/08/17
PMが知っておくべき代表的な法則
## 1. QCD(プロジェクトマネジメントの三角形) 品質(Quality)、コスト(Cost)、納期(Delivery)は相互に制約し合う。 - プロジェクト開始時に優先順位を明確化する - 品質・コスト・納期の変更時は影響分析を行う - ステークホルダーと優先順位を合意する --- ## 2. コーンの不確実性の円錐 プロジェクト初期の見積りには大きな誤差が存在する。 - 初期見積りを確定値として扱わない - 要件確定後に再見積りを行う - 見積りの前提条件を明確にする --- ## 3. ブルックスの法則 遅れているプロジェクトへの安易な増員は、さらに遅延を招く。 - 増員前に遅延原因を分析する - スコープ削減や優先順位変更を検討する - 早期にリスクを検知し対処する --- ## 4. パレートの法則(80:20の法則) 成果や問題の大部分は、少数の重要な要因から生じる。 - 重要タスクを特定する - クリティカルパスを重点管理する - 障害頻発箇所を優先的に改善する --- ## 5. マーフィーの法則 失敗する可能性があるものはいずれ失敗する。 - 障害発生を前提に計画する - リスク管理計画を作成する - バックアップや復旧手順を準備する --- ## 6. パーキンソンの法則 仕事は与えられた時間を使い切るまで膨張する。 - 適切な期限を設定する - 短いマイルストーンを設ける - 中間レビューを実施する --- ## 7. 学生症候群 人は締切直前まで作業着手を先送りしやすい。 - 中間マイルストーンを設定する - 定期的に進捗を確認する - 早期着手を促す仕組みを作る --- ## 8. コンウェイの法則 システム構造は組織構造を反映する。 - システム設計と組織設計を整合させる - 責任分界点を明確にする - 組織横断のコミュニケーションを確保する --- ## 9. リングルマン効果 チーム人数が増えるほど、一人当たりの生産性は低下する。 - 役割と責任を明確にする - 小規模なチームへ分割する - 意思決定経路を簡素化する --- ## 10. コミュニケーション経路数 コミュニケーション経路数は n(n-1)/2 で増加する。 例: - 5人 → 10経路 - 10人 → 45経路 - 20人 → 190経路 - 情報共有ルールを統一する - 窓口や責任者を明確にする - チームを適切な規模に分割する
登録:
投稿 (Atom)
人気の投稿
-
[AWS CloudFormation とは何ですか?](https://docs.aws.amazon.com/ja_jp/AWSCloudFormation/latest/UserGuide/Welcome.html) ## CloudFormationの動作概要 ポイン...
-
## CVPグラフ ## 損益構造の恒等式 | 区分 | 式 | |---|---| | 売上 | 変動費 + 固定費 + 利益 = 費用 + 利益 = 変動費 + 限界利益 | | 費用 | 変動費 + 固定費 = 売上 − 利益 | | 変動費 | 売上 × 変動費...
-
Dockerは、コンテナによりサーバ機能を提供する。コンテナは必要な時に起動し、不要になったら破棄する使い捨ての運用に適している。管理上、通常は1コンテナ1プロセスとして構成する。Dockerは、永続データを保存する用途には適さない。 # 仮想化技術 ## ホスト型仮想化 仮...
-
## 0. コマンドの役割 | コマンド | 主な用途 | 備考 | |---|---|---| | `ip` | インターフェース、IPアドレス、ルート、MACアドレスの確認・一時操作 | `iproute2`に含まれる | | `nmcli` | NetworkManag...
-
## 作業前確認 [Amazon Linux 2023 リリースノート](https://docs.aws.amazon.com/ja_jp/linux/al2023/release-notes/relnotes.html) ### インスタンスのネットワーク設定 ``` ...

