自宅勤務でネットワーク設定の切り替えをする

どうも、ゆるめのミニマリスト&へっぽこSEのアシアです。
今日の話は…

avatar

アシア

なんか、おかしいと思ったんだよ。
家では無線LANを使っているのですが、リモート会議になると音飛びがすると指摘されました。
なので、LANケーブルを挿し込んだけど、動きや設定表示がなんかおかしい…。
よく考えたら、

  • 職場のネットワーク設定
    • IPアドレス 指定(DHCPサーバ未使用)
    • DNSサーバ 指定
  • 家の固定回線
    • IPアドレス 未指定(DHCPサーバ使用)
    • DNSサーバ 未指定

この環境で社内ネットワーク設定が有効になっているので、おかしいの当たり前だった…。
いつの間にかDHCP設定は無効化されていたけど、DNSサーバは社内サーバを指定しっぱなしで、URLの名前解決ができていない感じ。

解決策

『代替の構成』を設定する(全自動)

ネットワークのアダプタ設定を開きます。
私のパソコンでは「イーサネット」が有線LANのアダプタ設定です。

イーサネット(有線LAN)のIPv4設定を開きます

まず、基本設定は家にあわせてIPアドレス指定なし&DNSサーバ指定なしにします。

代替の構成を社内ネットワークの設定にします。
WINSサーバはDSNサーバと同じアドレスを指定するか悩んだけど、一旦は空欄で。

設定バッチを実行する(環境がかわる度に実行)

『代替の構成』じゃダメな人向け。
ちなみに私もダメでした。
地味にDHCPサーバが居るらしくて、職場環境でも『代替の構成』に切り替わらない。
下記をコピペして、Shift_JISエンコード+拡張子batで保存します。
アドレスやアダプタ名は適宜変更してください。

@echo off

set interface_name=xxxxxxx

echo 0:職場(固定IP) 1:自宅(DHCP)から選択
set mode=
set /p mode=

if "%mode%"=="0" goto IP_SETTING_START
if "%mode%"=="1" goto DHCP_SETTING_START
echo "入力エラー"
goto SETTIN_END

:IP_SETTING_START
echo %interface_name%を固定IP設定に変更します
netsh interface ipv4 set add name="%interface_name%" source=static addr="xxx.xxx.xxx.xxx" mask="yyy.yyy.yyy.yyy" gateway="zzz.zzz.zzz" gwmetric=1
netsh interface ipv4 set dns "%interface_name%" source=static addr="XXX.XXX.XXX.XXX" register=non validate=no
netsh interface ipv4 add dns "%interface_name%" addr="YYY.YYY.YYY.YYY" index=2 validate=no
goto SETTIN_END

:DHCP_SETTING_START
echo %interface_name%のDHCPを有効にします
netsh interface ipv4 set address "%interface_name%" dhcp
netsh interface ipv4 set dns "%interface_name%" dhcp
goto SETTIN_END

:SETTIN_END
pause
exit
置き換え文字置き換え
xxxxxxx有線LANのアダプタ名(例:イーサネット)
xxx.xxx.xxx.xxxIPアドレス
yyy.yyy.yyy.yyyサブネットマスク
zzz.zzz.zzz.zzzデフォルトゲートウェイ
XXX.XXX.XXX.XXX優先DNSサーバ
YYY.YYY.YYY.YYY代替DNSサーバ

Shift_JISエンコードを指定しないと、文字化けします。
あとは環境が変わるたびに管理者として実行します。

環境が変わるたびに、管理者として、実行します(面倒なので2度言う)

プロキシ設定を設定・削除する

ついでに、社内ではプロキシ(http://hogehoge:8080)を設定する・自宅では削除するようにしたいです。
下の例では除外対象として192,168.*を指定しています。
複数ある場合にはセミコロン;で列挙します。

reg add "HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings" /f /v ProxyEnable /t reg_dword /d 1
reg add "HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings" /f /v ProxyServer /t reg_sz /d http://hogehoge:8080
reg add "HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings" /f /v ProxyOverride /t reg_sz /d "192.168.*;<local>"

削除する場合はこっち。

reg add "HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings" /f /v ProxyEnable /t reg_dword /d 0

有線LANと無線LANの優先度を指定する

仕事の都合で社内LAN設定で2台のパソコンを優先LANでつなぎつつ、インターネットには無線LANからアクセスしたくなりました。

コマンドプロンプトで以下のコマンド叩いて、Idx値とMetを確認しておきます。
このMetが小さいものほど優先される回線です。

netsh interface ipv4 show interface

Metを優先したい方を小さくします。
以下は有線LANを優先したい場合。

set interface_idx=19
set interface_idx_wifi=15
set interface_met_pri=10
set interface_met_sub=15

netsh interface ipv4 set interface %interface_idx% met=%interface_met_pri%
netsh interface ipv4 set interface %interface_idx_wifi% met=%interface_met_sub%

というわけで、こんな感じになりました。

職場設定:IP固定、DNS指定、有線LANを優先
自宅設定:DHCP使用、DNS未指定、有線LANを優先
自宅で複数PC接続:IP固定、DNS指定、無線LANを優先
の3択で。

@echo off

set interface_name=イーサネット
set interface_idx=19
set interface_idx_wifi=15
set interface_met_pri=10
set interface_met_sub=15

echo 0:職場(固定IP) 1:自宅(DHCP)から選択 2:職場(固定IP)でプロキシ設定なし
set mode=
set /p mode=

if "%mode%"=="0" goto PROXY_SETTING_START
if "%mode%"=="1" goto DHCP_SETTING_START
if "%mode%"=="2" goto IP_SETTING_START
echo "入力エラー"
goto SETTIN_END

:PROXY_SETTING_START
echo プロキシを設定します
reg add "HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings" /f /v ProxyEnable /t reg_dword /d 1
reg add "HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings" /f /v ProxyServer /t reg_sz /d http://hogehoge:8080
reg add "HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings" /f /v ProxyOverride /t reg_sz /d "*.hoge.hogehoge.co.jp;*.in.hogehoge.co.jp;192.168.*;<local>"
echo %interface_name%を優先LANにします
netsh interface ipv4 set interface %interface_idx% met=%interface_met_pri%
netsh interface ipv4 set interface %interface_idx_wifi% met=%interface_met_sub%
:IP_SETTING_START
echo %interface_name%を固定IP設定に変更します
netsh interface ipv4 set add name="%interface_name%" source=static addr="192.168.13.89" mask="255.255.254.0" gateway="192.168.13.254" gwmetric=1
netsh interface ipv4 set dns "%interface_name%" source=static addr="192.168.99.10" register=non validate=no
netsh interface ipv4 add dns "%interface_name%" addr="192.168.99.11" index=2 validate=no
if "%mode%"=="2" goto PROXY_SETTING_DELETE_START

goto SETTIN_END

:DHCP_SETTING_START
echo %interface_name%のDHCPを有効にします
netsh interface ipv4 set address "%interface_name%" dhcp
netsh interface ipv4 set dns "%interface_name%" dhcp

:PROXY_SETTING_DELETE_START
echo プロキシの設定を解除します
reg add "HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings" /f /v ProxyEnable /t reg_dword /d 0
echo %interface_name%を次優先LANにします
netsh interface ipv4 set interface %interface_idx% met=%interface_met_sub%
netsh interface ipv4 set interface %interface_idx_wifi% met=%interface_met_pri%

goto SETTIN_END

:SETTIN_END
pause
exit

他にもニッチなIT関連要素をまとめていますので、よければ一覧記事もご覧ください。

返信を残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)