何が目的かと言うとPPPoE(IPv4)環境と、
IPv6(IPoE) + IPv4 over IPv6 環境とのトグル切替である。
そのためのコマンド要素について、下記に雑記としてまとめ…書き殴る。
※管理者権限で実行する必要がある (凡例:# hogehoge)
■ルーティングテーブルいじり
■■(デフォルト)ゲートウェイ変更
# route -p add <DEST> mask <MASK> <GWIP> metric <M>
意味:DEST/MASK宛てのIPパケットをGWIPにrouteするメトリックMのstatic routeを設定する。
ex) route -p add 0.0.0.0 mask 0.0.0.0 192.168.123.456 metric 1
# route -p delete <DEST> mask <MASK> <GWIP> metric <M>
意味:指定したパラメタに一致するstatic routeを削除する。
% route print
ルーティングテーブル表示。「固定ルート」の所が上記の対象。
(ちなみに0.0.0.0/0.0.0.0宛てのGWをDGW(デフォルトゲートウェイ)と普通呼ぶ)
■ネットワークアダプタの有効化/無効化
# netsh interface set interface "<アダプタ名>" disable
# netsh interface set interface "<アダプタ名>" enabled
意味:アダプタ名のネットワークアダプタを無効/有効にする。
アダプタ名はコンパネから弄る奴と同一の文字列を指定する。
応用:DGWだけ切り替えるとDoHを使うブラウザ等が混乱するため、
I/FのON/OFFにより全sessionを強制RST(リセット)。
■ネットワークアダプタのIPv6の有効化/無効化
これは少しややこしい。command lineには無さそうでPowershellを併用する。
(1)
次の1行ファイルをそれぞれ作成し適当な場所に設置する。
なおアダプタ名は上のnetshコマンドのものと同様。
"disable-ipv6.ps1":
Disable-NetAdapterBinding -Name "<アダプタ名>" -ComponentID ms_tcpip6
"enable-ipv6.ps1":
Enable-NetAdapterBinding -Name "<アダプタ名>" -ComponentID ms_tcpip6
(2)
次のコマンドを実行する。
ここでは、"C:\Program Files\hogehoge\"パス配下に(1)を設置した例である。
# powershell -ExecutionPolicy RemoteSigned C:\Program` Files\hogehoge\disable-ipv6.ps1
# powershell -ExecutionPolicy RemoteSigned C:\Program` Files\hogehoge\enable-ipv6.ps1
※ここで C:\Program` Files の ` は「バッククォート(0x60)」である。
決してアポストロフィ/シングルクォート(')ではない。
バッククォート(0x60) は、「Shift」+「@」で入力できます
※パス名に空白を含むので、空白自体をエスケープすると言う訳である。
つまりPowershellコマンドラインのエスケープは0x60である。
コマンドプロンプトと異なり ""や''で囲む指定はPowershellでは
うまく行かないようである。
■その他
% ipconfig /displaydns
意味:PCのDNSキャッシュを全て列挙する。クソ長いのでテキストファイルに
リダイレクト推奨
% ipconfig /flushdns
意味:DNSキャッシュをフラッシュするおなじみのコマンド。
% netsh interface ipv6 show neighbors
意味:IPv6における arp -a 相当。(詳しくはググって)
※ neighbours ではダメである。
(Powershell)
Get-NetAdapterBinding -Name "<アダプタ名>" -ComponentID ms_tcpip6
意味:ipv6の状態を表示する。
考察:ComponentID は他に色々ありそうだが調べてない。
Get-NetAdapterBinding -Name "<アダプタ名>"
とだけ実行すれば色々閃くかも知れない。
以上
IPv6(IPoE) + IPv4 over IPv6 環境とのトグル切替である。
そのためのコマンド要素について、下記に雑記としてまとめ…書き殴る。
※管理者権限で実行する必要がある (凡例:# hogehoge)
■ルーティングテーブルいじり
■■(デフォルト)ゲートウェイ変更
# route -p add <DEST> mask <MASK> <GWIP> metric <M>
意味:DEST/MASK宛てのIPパケットをGWIPにrouteするメトリックMのstatic routeを設定する。
ex) route -p add 0.0.0.0 mask 0.0.0.0 192.168.123.456 metric 1
# route -p delete <DEST> mask <MASK> <GWIP> metric <M>
意味:指定したパラメタに一致するstatic routeを削除する。
% route print
ルーティングテーブル表示。「固定ルート」の所が上記の対象。
(ちなみに0.0.0.0/0.0.0.0宛てのGWをDGW(デフォルトゲートウェイ)と普通呼ぶ)
■ネットワークアダプタの有効化/無効化
# netsh interface set interface "<アダプタ名>" disable
# netsh interface set interface "<アダプタ名>" enabled
意味:アダプタ名のネットワークアダプタを無効/有効にする。
アダプタ名はコンパネから弄る奴と同一の文字列を指定する。
応用:DGWだけ切り替えるとDoHを使うブラウザ等が混乱するため、
I/FのON/OFFにより全sessionを強制RST(リセット)。
■ネットワークアダプタのIPv6の有効化/無効化
これは少しややこしい。command lineには無さそうでPowershellを併用する。
(1)
次の1行ファイルをそれぞれ作成し適当な場所に設置する。
なおアダプタ名は上のnetshコマンドのものと同様。
"disable-ipv6.ps1":
Disable-NetAdapterBinding -Name "<アダプタ名>" -ComponentID ms_tcpip6
"enable-ipv6.ps1":
Enable-NetAdapterBinding -Name "<アダプタ名>" -ComponentID ms_tcpip6
(2)
次のコマンドを実行する。
ここでは、"C:\Program Files\hogehoge\"パス配下に(1)を設置した例である。
# powershell -ExecutionPolicy RemoteSigned C:\Program` Files\hogehoge\disable-ipv6.ps1
# powershell -ExecutionPolicy RemoteSigned C:\Program` Files\hogehoge\enable-ipv6.ps1
※ここで C:\Program` Files の ` は「バッククォート(0x60)」である。
決してアポストロフィ/シングルクォート(')ではない。
バッククォート(0x60) は、「Shift」+「@」で入力できます
※パス名に空白を含むので、空白自体をエスケープすると言う訳である。
つまりPowershellコマンドラインのエスケープは0x60である。
コマンドプロンプトと異なり ""や''で囲む指定はPowershellでは
うまく行かないようである。
■その他
% ipconfig /displaydns
意味:PCのDNSキャッシュを全て列挙する。クソ長いのでテキストファイルに
リダイレクト推奨
% ipconfig /flushdns
意味:DNSキャッシュをフラッシュするおなじみのコマンド。
% netsh interface ipv6 show neighbors
意味:IPv6における arp -a 相当。(詳しくはググって)
※ neighbours ではダメである。
(Powershell)
Get-NetAdapterBinding -Name "<アダプタ名>" -ComponentID ms_tcpip6
意味:ipv6の状態を表示する。
考察:ComponentID は他に色々ありそうだが調べてない。
Get-NetAdapterBinding -Name "<アダプタ名>"
とだけ実行すれば色々閃くかも知れない。
以上