192.168.012.1 が 192.168.12.1 ではない(ことがある)
今更ではある内容だが、ミスタイプしてtelnet アドレス直打ちのコマンドを叩いたら、おかしな挙動をしていたので、メモしておくそす。
ちなみにどうなるのかというと、192.168.012.1
は 192.168.10.1
として解釈され実行される。
C:\Users\user> ping 192.168.012.1
192.168.10.1 に ping を送信しています 32 バイトのデータ:
Ctrl+C
^C
C:\Users\user>
[user@linux ~]$ ping 192.168.012.1
PING 192.168.012.1 (192.168.10.1) 56(84) bytes of data.
^C
--- 192.168.012.1 ping statistics ---
2 packets transmitted, 0 received, 100% packet loss, time 999ms
[user@linux ~]$
お、どうやら、Linuxだけじゃなくて、WinNTでも再現するっぽい...
確認したのは以下の環境そす
- Windows10 20H2
- Microsoft Windows [Version 10.0.19042.1348]
- CentOS Linux release 7.9.2009 (Core)
- 3.10.0-1160.25.1.el7.x86_64
- Ubuntu 20.04.3 LTS
- 5.4.0-1045-raspi
ちなみにubuntu(raspi)は結果同じだったので省略
じゃあ、192.168.012 にtypoしたらどうなるのか
いわゆる、第4オクテットの入力せずにEnterKeyターンっしたパターン
C:\Users\user> ping 192.168.012
192.168.0.10 に ping を送信しています 32 バイトのデータ:
Ctrl+C
^C
C:\Users\user>
[user@linux ~]$ ping 192.168.012
PING 192.168.012 (192.168.0.10) 56(84) bytes of data.
^C
--- 192.168.012 ping statistics ---
3 packets transmitted, 0 received, 100% packet loss, time 1999ms
[user@linux ~]$
ん、192.168.012
→ 192.168.0.10
になった。
ドット無し10進数ってのもある
[user@linux ~]$ ping 3232238081
PING 3232238081 (192.168.10.1) 56(84) bytes of data.
^C
--- 3232238081 ping statistics ---
2 packets transmitted, 0 received, 100% packet loss, time 1000ms
[user@linux ~]$
これは知ってた。
ちなみにブラウザでも http://3232238081/
ってやると、http://192.168.10.1/
に勝手に置き換わる。
ちなみにIPアドレス→10進数への変換は面倒だったので、そうゆうサイトを使った
あ、そういえば、さっきの8進数と10進数の混在アドレスをブラウザに打ち込んだらどうなるんだろうか。
://192.168.012.1
http://192.168.012.1/
ってやると、http://192.168.10.1/
ってなった。やっぱりOSレベル?カーネルレベル?で動いてるっぽい
他のOSではどうなるんだろうか
追加で Cisco-IOS で動作する Ciscoルータ(C891FJ/K9)(version: 15.4) と Junos で動作する Juniper(20.4R3.8) で確かめたら、Junosでは発生した。(出力結果がLinuxそのままだったので省略)
ちなみに、Ciscoでは置き換わりは起きなかった。うーんOS設計のレベルまで行くのかな。。。
cisco# ping 192.168.012.1
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 192.168.12.1, timeout is 2 seconds:
.....
Success rate is 0 percent (0/5)
cisco#
参考までに