Windows Server 2012 で ProxyArp を設定する
積極的に設定する理由はありませんが、Windows での Proxy 設定手順をメモしておきます。 今回は Windows Server 2012 でテストしました。
Step.1
ネットワークアダプターには IPv4 アドレスを設定するものの、(最初は) 意図的にデフォルトゲートウェイは未指定とします。 Step.4 で Windows 自身を NextHop に指定した経路を route add
していますが、この段階で GUI から NextHop に自身を登録しても ProxyArp 動作します。 今回は「通信出来ない → ProxyArp 設定すると通信出来るようになる」という変化を観測する為、ここでは意図的にゲートウェイを設定しません。
Step.2
ネットワークアダプターにデフォルトゲートウェイを設定していませんので、route print
の実行結果を見てもデフォルトゲートウェイ (0.0.0.0) が表示されません。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35 | > route print
===========================================================================
インターフェイス一覧
12...00 50 56 bc fb d3 ......vmxnet3 Ethernet Adapter
1...........................Software Loopback Interface 1
13...00 00 00 00 00 00 00 e0 Microsoft ISATAP Adapter
===========================================================================
IPv4 ルート テーブル
===========================================================================
アクティブ ルート:
ネットワーク宛先 ネットマスク ゲートウェイ インターフェイス メトリック
127.0.0.0 255.0.0.0 リンク上 127.0.0.1 306
127.0.0.1 255.255.255.255 リンク上 127.0.0.1 306
127.255.255.255 255.255.255.255 リンク上 127.0.0.1 306
172.20.0.0 255.255.255.0 リンク上 172.20.0.155 261
172.20.0.155 255.255.255.255 リンク上 172.20.0.155 261
172.20.0.255 255.255.255.255 リンク上 172.20.0.155 261
224.0.0.0 240.0.0.0 リンク上 127.0.0.1 306
224.0.0.0 240.0.0.0 リンク上 172.20.0.155 261
255.255.255.255 255.255.255.255 リンク上 127.0.0.1 306
255.255.255.255 255.255.255.255 リンク上 172.20.0.155 261
===========================================================================
固定ルート:
なし
IPv6 ルート テーブル
===========================================================================
アクティブ ルート:
If メトリック ネットワーク宛先 ゲートウェイ
1 306 ::1/128 リンク上
1 306 ff00::/8 リンク上
===========================================================================
固定ルート:
なし
|
Step.3
デフォルトゲートウェイの設定が無い為、ネットワークアダプターに割当てた IPv4 アドレスと異なるネットワーク宛のパケットを送信することが出来ません。 異なるネットワーク宛に Ping すると 「一般エラー」 と表示されます。
| > ping 8.8.8.8
8.8.8.8 に ping を送信しています 32 バイトのデータ:
ping: 転送に失敗しました。一般エラーです。
ping: 転送に失敗しました。一般エラーです。
ping: 転送に失敗しました。一般エラーです。
ping: 転送に失敗しました。一般エラーです。
8.8.8.8 の ping 統計:
パケット数: 送信 = 4、受信 = 0、損失 = 4 (100% の損失)、
|
Step.4
異なるネットワーク宛のパケットもネットワークアダプターから出力させる為、NextHop を Windows 自身のアドレスにした経路 を追加します (※ このネットワークにおいて、正しいゲートウェイは 172.20.0.254
です)。
| > route add 0.0.0.0 mask 0.0.0.0 172.20.0.155
OK!
|
Step.5
route print
を確認すると行かのように見えます。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36 | > route print
===========================================================================
インターフェイス一覧
12...00 50 56 bc fb d3 ......vmxnet3 Ethernet Adapter
1...........................Software Loopback Interface 1
13...00 00 00 00 00 00 00 e0 Microsoft ISATAP Adapter
===========================================================================
IPv4 ルート テーブル
===========================================================================
アクティブ ルート:
ネットワーク宛先 ネットマスク ゲートウェイ インターフェイス メトリック
0.0.0.0 0.0.0.0 リンク上 172.20.0.155 6
127.0.0.0 255.0.0.0 リンク上 127.0.0.1 306
127.0.0.1 255.255.255.255 リンク上 127.0.0.1 306
127.255.255.255 255.255.255.255 リンク上 127.0.0.1 306
172.20.0.0 255.255.255.0 リンク上 172.20.0.155 261
172.20.0.155 255.255.255.255 リンク上 172.20.0.155 261
172.20.0.255 255.255.255.255 リンク上 172.20.0.155 261
224.0.0.0 240.0.0.0 リンク上 127.0.0.1 306
224.0.0.0 240.0.0.0 リンク上 172.20.0.155 261
255.255.255.255 255.255.255.255 リンク上 127.0.0.1 306
255.255.255.255 255.255.255.255 リンク上 172.20.0.155 261
===========================================================================
固定ルート:
なし
IPv6 ルート テーブル
===========================================================================
アクティブ ルート:
If メトリック ネットワーク宛先 ゲートウェイ
1 306 ::1/128 リンク上
1 306 ff00::/8 リンク上
===========================================================================
固定ルート:
なし
|
Step.6
Windows 自身とは異なるネットワーク宛に Ping してみます。 先程の Step.3 とは異なり、応答があります!
| > ping -n 1 8.8.8.8
8.8.8.8 に ping を送信しています 32 バイトのデータ:
8.8.8.8 からの応答: バイト数 =32 時間 =25ms TTL=56
8.8.8.8 の ping 統計:
パケット数: 送信 = 1、受信 = 1、損失 = 0 (0% の損失)、
ラウンド トリップの概算時間 (ミリ秒):
最小 = 25ms、最大 = 25ms、平均 = 25ms
|
| > ping -n 1 8.8.4.4
8.8.4.4 に ping を送信しています 32 バイトのデータ:
8.8.4.4 からの応答: バイト数 =32 時間 =19ms TTL=58
8.8.4.4 の ping 統計:
パケット数: 送信 = 1、受信 = 1、損失 = 0 (0% の損失)、
ラウンド トリップの概算時間 (ミリ秒):
最小 = 19ms、最大 = 19ms、平均 = 19ms
|
Step.7
Ping した 8.8.8.8
や 8.8.8.8
等が全て、同じ MAC アドレスとして学習されていることが分かります。 これは本来のゲートウェイである 172.20.0.254
の MAC アドレスと同じです。 172.20.0.254
は Cisco Catalyst を用いており、ip proxy-arp
コマンドを有効にしてあるので、ProxyArp 動作をしてくれ、結果として Windows は異なるネットワーク宛に通信が出来ます。
| > arp -a
インターフェイス: 172.20.0.155 --- 0xc
インターネット アドレス 物理アドレス 種類
8.8.4.4 00-19-aa-XX-XX-c1 動的
8.8.8.8 00-19-aa-XX-XX-c1 動的
104.116.243.154 00-19-aa-XX-XX-c1 動的
172.20.0.254 00-19-aa-XX-XX-c1 動的
172.20.0.255 ff-ff-ff-ff-ff-ff 静的
224.0.0.22 01-00-5e-00-00-16 静的
224.0.0.252 01-00-5e-00-00-fc 静的
|