windows でも ip addr add したい。
mac や Linux を使っていると、 ip addr add のようなコマンドで、一つのネットワークカード(イーサネット・アダプタ)に、複数のIPアドレスを割り当てることが出来ます。
linux での例
Linux では設定を書き換えなくても、次のコマンドで手軽に、IPを追加することが出来ますよね。
ip addr add 192.168.1.10/24 dev eth1 ip addr add 192.168.2.10/24 dev eth1 ip addr add 192.168.4.10/24 dev eth1
また、IPごとにゲートウェイを変えることができるので、便利なんですが。。。
Windowsでも同じことがしたい
windows でもコマンドから書き換えが可能。netsh を使えば可能(利用例は最後にまとめておきます。)
## windows の場合は、次のようなコマンドを使う netsh interface ipv4 show config name=eth01
Windowsでも、ネットワーク・アダプタに複数のIPアドレスを割り当てたい。ネットワークを構築しているといちいち差し替えるのがだるいので、同じようなことがしたいなと思っていた。
windows 特有の制限(DHCPオフでStaticが必須・管理者)
DHCPをオンにしたままでは、複数のIPを追加できません。(やり方はあるだろうけど、netsh で単純にやるのは不可能に近いと思います。)
Linuxだと、DHCPをオンにしたままで、IPアドレスを追加することが出来ますが、Windowsでは出来ないようです。いったん、Staticに変えてあげる必要があります。
また、ネットワークの設定変更には管理者権限が必要です。
PS C:\Users\takuya> netsh interface ipv4 add address name=eth01 address=192.168.4.1 mask=255.255.255.0 The requested operation requires elevation (Run as administrator).
netshを使って、IPアドレスを複数割り当てる。
IPアドレスを、一つに複数を追加することが出来ます。
このコマンドを実行するとStatic設定になります。DHCPと共存が出来ません。
DHCP取得済みのIPアドレスとデフォルトゲートウェイは削除されます。DHCPのデフォルトゲートウェイと通信できなくなるので注意してください。
PS C:\WINDOWS\system32> netsh interface ipv4 add address name=アダプタ名 address=192.168.5.1 mask=255.255.255.0
管理者権限で、IPアドレスを追加する。
PS C:\WINDOWS\system32> netsh interface ipv4 add address name=eth01 address=192.168.5.1 mask=255.255.255.0
ゲートウェイを正しく設定し直す。
Staticになるので、デフォルトゲートウェイが消えちゃうので、デフォルトゲートウェイを設定し直す。
PS C:\WINDOWS\system32> netsh interface ipv4 add route 0.0.0.0./0 'my-eth01' 192.168.11.1
または
route add 0.0.0.0/0 192.168.11.1
DHCPがオフになっちゃうので結局は、ゲートウェイを設定しなくちゃいけないんですよね。Windows のネットワークのDHCPとStatic の排他処理はなんとかならないものか。
省略形
引数名を明示しなくても、順番で指定できる、またネットマスクも省略できる。
netsh interface ipv4 add address name=アダプタ名 address=192.168.5.1 mask=255.255.255.0
netsh interface ipv4 add address アダプタ名 192.168.5.2/24
消す(利用後)
netsh interface ipv4 delete address eth01 192.168.5.2
使いにくい・・・慣れよう
linux の ip addr add みたいにアドレスを手軽に追加できないのが辛い。DHCPをオフにしてデフォルトゲートウェイとゲートウェイの設定をし直ししなくちゃいけないのが辛い。
うまくメトリックを調整できればいいんだけど。
まとめ windows の netsh の例(書式は2パターン)
netsh は他の書式でも使えます。具体的にはname=valueを指定する形式になります。
name=eth01 はコントロールパネル(または設定)で確認できる「アダプタ名称」です。日本語担っている場合もあります。扱い易さを重視して、私はアルファベットへ変更しています。
現在のIPアドレスを表示する
## 基本書式 netsh interface ipv4 show config name=eth01 netsh interface ipv4 show address name=eth01 ## 省略版 netsh interface ipv4 show config eth01 netsh interface ipv4 sh addr eth01
指定したIPアドレスを指定したアダプタから除去する
## 基本書式 netsh interface ipv4 del addr address=192.168.0.10 name=eth01 ## 簡易書式 netsh interface ipv4 delete address eth01 192.168.5.2 netsh interface ipv4 del addr eth01 192.168.5.1
指定したIPアドレスをアダプタに追加する
## 基本書式 netsh interface ipv4 add address name=eth01 address=192.168.5.1 mask=255.255.255.0 ## 省略版 netsh interface ipv4 add addr eth01 address=192.168.5.1/24