Mazn.net

やってみて 調べてみて 苦労しなけりゃ 箱は動かじ

network

固定IPの設定@Ubuntu 20.04 LTS

以前のUbuntuでは、固定IPを使いたい場合 /etc/network/interfaces に設定を書いてましたが、ubuntu 20.04ではこのファイルはなく、/etc/netplan に設定ファイルをyaml形式で書く必要があります。

(例) /etc/netplan/99-network.yaml
※ /etc/netplan/ には 50-cloud-init.yaml というファイルがありますが、これを書き換えるのではなく、このファイルより辞書順で後になるようなファイル名で新規にファイルを作成します。参考

network:
    version: 2
    renderer: networkd
    ethernets:
       eth0:
           dhcp4: false
           dhcp6: false
           addresses: [172.16.0.2/16]
           gateway4: 172.16.0.1
           nameservers:
              addresses: [1.1.1.1]

設定項目は説明する程ではないと思いますが、上記では8行目で固定IP(ipv4)として172.16.0.2/16を設定してます。またデフ2ォルトGWに172.16.0.1, DNSに1.1.1.1を設定しています。

上記ファイルを作成し以下のコマンドを叩くと設定が反映されます。

# netplan apply

applyではその設定がすぐに反映されますが、リモートでのIPの変更はリスクを伴います。そのリスクを避けたければ、代わりに以下のコマンドを叩いてみてください。以下ではコマンド実行後5秒間以内にEnterを押さないと設定が元に戻ります。

# netplan try --timeout 5
 Warning: Stopping systemd-networkd.service, but it can still be activated by:
   systemd-networkd.socket
 Do you want to keep these settings?
 Press ENTER before the timeout to accept the new configuration
 Changes will revert in  3 seconds   [Enterをここで押す]
 Configuration accepted.

IPアドレス計算に使えるLinuxコマンド ipcount ipcalc sipcalc

以前、コマンドラインでIP計算に使えるコマンドとして、perl-Net-IPというパッケージに入ってる ipcountを紹介しました。これ以外にも、ipcalc や sipcalc というIP計算に使えるコマンドがあるので紹介します。
※ 環境にコマンドが入ってない場合は、apt や dnf, yum 等のコマンドで簡単にインストールできると思います。

まず最初に、ipcount, ipcalc, sipcalc の使い分けですが、ざっくり書くとこのような感じです。

  • ipcount
    • IPの範囲 (最初のIPと最後のIP) に関する計算ができます。範囲からホストアドレスやプレフィックスを計算したり、その範囲のIPの数などが簡単に分かります。
  • ipcalc
    • 与えられたIPの情報を表示できます。また、IP の表記が間違ってないかのチェックや、IPからホスト名の逆引きなどもできます。
  • sipcalc
    • ipcalcの高機能版と言われてますが、どちからというとipcalcよりIPの詳細情報を表示するコマンドというイメージで、IPの表記を2, 10, 16進数に変換することができます。ipcalcと互換性はなく、ipcalcでできるホスト名逆引きなどはできません。

ipcount

ネットワークアドレスとプレフィックスを指定すると、IPの範囲が分かります。

# 192.168.0/24 192.168.0.0 - 192.168.0.255 [256]ipcount 192.168.0.0/24
192.168.0/24 192.168.0.0 - 192.168.0.255 [256]

IPの範囲を以下のようにハイフンを挟んで指定すると、逆にネットワークアドレスやプレフィックスが分かります。

# ipcount 192.168.0.0 - 192.168.0.255
192.168.0/24 192.168.0.0 - 192.168.0.255 [256]

一つのサブネットで表現できない場合、複数のネットワークに分けて表示されます。

# ipcount 192.168.0.200 - 192.168.0.255
192.168.0.200/29 192.168.0.200 - 192.168.0.207 [8]
192.168.0.208/28 192.168.0.208 - 192.168.0.223 [16]
192.168.0.224/27 192.168.0.224 - 192.168.0.255 [32]
192.168.0.200/29,/28,/27 192.168.0.200 - 192.168.0.255 [56]

ちなみに、プレフィックスの代わりにサブネットマスク(255.255.255.0)は指定できないようです。サブネットマスクへの読み替えには、iptab コマンドを使いましょう。

# iptab
+----------------------------------------------+
| addrs   bits   pref   class  mask            |
+----------------------------------------------+
|     1      0    /32          255.255.255.255 |
|     2      1    /31          255.255.255.254 |
|     4      2    /30          255.255.255.252 |
|     8      3    /29          255.255.255.248 |
|    16      4    /28          255.255.255.240 |
|    32      5    /27          255.255.255.224 |
|    64      6    /26          255.255.255.192 |
|   128      7    /25          255.255.255.128 |
|   256      8    /24      1C  255.255.255.0   |
|   512      9    /23      2C  255.255.254.0   |
|    1K     10    /22      4C  255.255.252.0   |
|    2K     11    /21      8C  255.255.248.0   |
|    4K     12    /20     16C  255.255.240.0   |
|    8K     13    /19     32C  255.255.224.0   |
|   16K     14    /18     64C  255.255.192.0   |
|   32K     15    /17    128C  255.255.128.0   |
|   64K     16    /16      1B  255.255.0.0     |
|  128K     17    /15      2B  255.254.0.0     |
|  256K     18    /14      4B  255.252.0.0     |
|  512K     19    /13      8B  255.248.0.0     |
|    1M     20    /12     16B  255.240.0.0     |
|    2M     21    /11     32B  255.224.0.0     |
|    4M     22    /10     64B  255.192.0.0     |
|    8M     23     /9    128B  255.128.0.0     |
|   16M     24     /8      1A  255.0.0.0       |
|   32M     25     /7      2A  254.0.0.0       |
|   64M     26     /6      4A  252.0.0.0       |
|  128M     27     /5      8A  248.0.0.0       |
|  256M     28     /4     16A  240.0.0.0       |
|  512M     29     /3     32A  224.0.0.0       |
| 1024M     30     /2     64A  192.0.0.0       |
| 2048M     31     /1    128A  128.0.0.0       |
| 4096M     32     /0    256A  0.0.0.0         |
+----------------------------------------------+

ipcalc , sipcalc

ipcalcでIPを指定すると、そのIPのクラスとプライベートアドレスなのかどうかを表示します。--all-info オプションを付けると、さらにIPを保有している国や、大まかな位置情報なども表示されます。

sipcalcの場合、IPを指定すると主にIPの別進数(10,16表記が表示される。--all オプションを付けると、2進数表記も表示されるほか、IPのクラス等の情報が表示される。

ipcalcでIPを指定

# ipcalc 8.8.8.8
Address: 8.8.8.8
Address space: Internet
Address class: Class A











ipcalc に--all-info オプションを付与

# ipcalc 8.8.8.8 --all-info
Address: 8.8.8.8
Reverse DNS: 8.8.8.8.in-addr.arpa.
Address space: Internet
Address class: Class A

Country code: US
Country: United States
Coordinates: 37.751000,-97.822000

sipcalcでIPを指定

# sipcalc 8.8.8.8
-[ipv4 : 8.8.8.8] - 0
[CIDR]
Host address - 8.8.8.8
Host address (decimal) - 134744072
Host address (hex) - 8080808
Network address - 8.8.8.8
Network mask - 255.255.255.255
Network mask (bits) - 32
Network mask (hex) - FFFFFFFF
Broadcast address - 8.8.8.8
Cisco wildcard - 0.0.0.0
Addresses in network - 1
Network range - 8.8.8.8 - 8.8.8.8


sipcalc--allオプションを付与

# sipcalc 8.8.8.8 --all
-[ipv4 : 8.8.8.8] - 0
[Classful]
Host address - 8.8.8.8
Host address (decimal) - 134744072
Host address (hex) - 8080808
Network address - 8.0.0.0
Network class - A
Network mask - 255.0.0.0
Network mask (hex) - FF000000
Broadcast address - 8.255.255.255
[CIDR]
Host address - 8.8.8.8
Host address (decimal) - 134744072
Host address (hex) - 8080808
Network address - 8.8.8.8
Network mask - 255.255.255.255
Network mask (bits) - 32
Network mask (hex) - FFFFFFFF
Broadcast address - 8.8.8.8
Cisco wildcard - 0.0.0.0
Addresses in network - 1
Network range - 8.8.8.8 - 8.8.8.8
[Classful bitmaps]
Network address - 00001000.00000000.00000000.00000000
Network mask - 11111111.00000000.00000000.00000000
[CIDR bitmaps]
Host address - 00001000.00001000.00001000.00001000
Network address - 00001000.00001000.00001000.00001000
Network mask - 11111111.11111111.11111111.11111111
Broadcast address - 00001000.00001000.00001000.00001000
Cisco wildcard - 00000000.00000000.00000000.00000000
Network range - 00001000.00001000.00001000.00001000 -
00001000.00001000.00001000.00001000
[Networks]
Network - 8.8.8.0 - 8.8.8.0
Network - 8.8.8.1 - 8.8.8.1
Network - 8.8.8.2 - 8.8.8.2
Network - 8.8.8.3 - 8.8.8.3
~省略~

プレフィックスを付けると以下の表示になります。青字がプレフィックスを付けない時との差分です。両コマンドとも、IPの範囲や数が表示されるようになります。

ipcalcでIPをプレフィックス付きで指定

# ipcalc 8.8.8.8/24
Address: 8.8.8.8
Network: 8.8.8.0/24
Netmask: 255.255.255.0 = 24
Broadcast: 8.8.8.255

Address space: Internet
Address class: Class A
HostMin: 8.8.8.1
HostMax: 8.8.8.254
Hosts/Net: 254




ipcalcはサブネットマスクを指定することもできます。

※ ipcalc 8.8.8.8 255.255.255.0
(表示は同じ)

sipcalcでIPをプレフィックス付きで指定

# sipcalc 8.8.8.8/24
-[ipv4 : 8.8.8.8/24] - 0
[CIDR]
Host address - 8.8.8.8
Host address (decimal) - 134744072
Host address (hex) - 8080808
Network address - 8.8.8.0
Network mask - 255.255.255.0
Network mask (bits) - 24
Network mask (hex) - FFFFFF00
Broadcast address - 8.8.8.255
Cisco wildcard - 0.0.0.255
Addresses in network - 256
Network range - 8.8.8.0 - 8.8.8.255
Usable range - 8.8.8.1 - 8.8.8.254

sipcalcもサブネットマスクを指定することもできます。

# sipcalc 8.8.8.8 255.255.255.0
(表示は同じ)

ipcalcはDNSへの問い合わせもできます。IPからホスト名(dig -x コマンド相当)を確認します。なお、sipcalc には同様の機能は無いようです。

ipcalcでホスト名を確認

# ipcalc -h 8.8.8.8
HOSTNAME=dns.google

他にも、ipcalcでは、IPの表記が間違ってないか確認したり、サブネットマスクからプレフィックスの値だけを表示したりすることもできます。

ipcalcでIP表記やプレフィックス付きのIPが有効な表記か確認

# ipcalc -c 8.8.8.8
# echo $?
0   ※ 有効なアドレスなのでコマンドの戻り値が0

# ipcalc -c 8.8.8.300
ipcalc: bad IPv4 address: 8.8.8.300
# echo $?
1   ※ 無効なアドレスなのでコマンドの戻り値が1

# ipcalc -c 8.8.8.8/24
# echo $?
0   ※ 有効なアドレスなのでコマンドの戻り値が0

# ipcalc -c 8.8.8.8/99
ipcalc: bad IPv4 prefix: 99
# echo $?
1   ※ 無効なアドレスなのでコマンドの戻り値が1

ipcalcでサブネットのプレフィックス値を確認

# ipcalc --prefix 8.8.8.8 255.255.255.0
PREFIX=24

nslookupでホスト名引けるのにpingに失敗する@Windows

自前のDNSサーバをたてて、ホストを登録してWindowsから登録したホストにpingを飛ばそうとしたら失敗します。

例えば、centos というホスト名を登録したとします。この時、nslookupの結果は以下のようになります。

C:\Users\user1>nslookup centos
サーバー: dns1
Address: 172.16.0.1

名前: centos
Address: 172.16.0.10

 

なのに、ping を打つと以下のようにエラーとなります。

C:\Users\user1>ping centos
ping 要求ではホスト centos が見つかりませんでした。ホスト名を確認してもう一度実行してください。

 

これは、Windowsのネットワークの名前解決の仕様に原因があります。

Windowsは、"." (ドット) を含まないホスト名は、DNSを見に行きません!

つまり、今回登録したホスト名 "centos" に ping を打つ場合、DNS を使いません。その結果、上記のエラーが発生していたようです。

よって、ホスト名に"."をつけるとDNSを見に行ってくれます。

C:\Users\user1>ping centos.
centos [172.16.0.10]に ping を送信しています 32 バイトのデータ:
172.16.0.10 からの応答: バイト数 =32 時間 =3ms TTL=63

 

参考 : https://docs.microsoft.com/en-us/previous-versions/windows/it-pro/windows-xp/bb457118(v=technet.10)

b-mobileのプロキシ

b-mobileのプロキシって三つあるんですね。

marion 低圧縮 marion.bmobile.ne.jp 32080
michelle 中圧縮 michelle.bmobile.ne.jp 32080
ian 高圧縮 ian.bmobile.ne.jp 32080

このサイトをプロキシなしで表示すると105秒、marionだと90秒ぐらい、ianだと80秒ぐらいだったので、それなりに効果はあるみたいだ。

VMware Player 3.0 でのネットワーク設定

VMware Player 3.0 にはネットワーク設定の画面がついていないのですが、実はダウンロードしたファイルには含まれています。

コマンドプロンプトにて、インストーラーを以下のように実行すると、

VMware-player-3.0.0-xxxxxx.exe /e .\extract

extractフォルダができ、その中にファイルが展開されます。その中に、network.cabがあるので、これをさらに普通の圧縮・解凍ソフトで展開するとvmnetcfg.exe が現れるので、これをVMware Player のインストールフォルダにコピーして実行すれだけです。

ところが、VMの設定画面には、上記設定したネットワーク(VMnet1とかVMnet2など)が表示されません。基本的にブリッジ、NAT、ホストオンリーしか選べません。よって、設定ファイルを手動で編集します。

VMのフォルダにある、拡張子がvmxのファイルをテキストエディターで開きます。ネットワークの設定部分を編集します。

ethernet0が1番目のネットワークアダプタを意味します。ここではネットワークアダプタにVMnet2を割り当てています。

ethernet0.present = "true"
ethernet0.connectionType = "custom"
ethernet0.vnet = "VMnet2"

すでに同じ設定が項目がある場合は、そこを修正してください。ない場合は追記してください。

PXEブートでネットワークインストール@RHEL5 or CentOS5

最近のPCやサーバーではPXEというネットワークブートを使って、CDやDVDを使わずにOSをインストールすることができます。

もちろんネットワークインストールするためには、 インストールするサーバー以外にすでに動いているサーバーが必要になります。そのため、一台だけインストールする場合はあまり意味がないのですが、複数のサーバーにインストールする場合や、頻繁にインストールする場合などは結構便利になります。

まず、PXEでネットワークインストールするには、もちろんネットワーク環境とDHCPサーバー、tftpサーバー、ファイル配信用サーバー(HTTPやFTPなど)が必要になります。ここではサーバーもRHEL5を使用しているとします。

まずtftpサーバーで、最小限のブートイメージを配信するための設定が必要になります。RHEL5でtftp-serverのRPMがインストールされていれば、/tftpbootというディレクトリがあります。

まずは、tftpサーバーを有効にします。 disable=noにするだけです。

$ vi /etc/xinetd.d/tftp
service tftp
{
        socket_type             = dgram
        protocol                = udp
        wait                    = yes
        user                    = root
        server                  = /usr/sbin/in.tftpd
        server_args             = -s /tftpboot
        disable                 = no
        per_source              = 11
        cps                     = 100 2
        flags                   = IPv4
}

設定を反映するには、xinetdを再起動します。

# /etc/init.d/xinetd restart

/tftpboot/の中はこんな感じです。initrd.imgやpxelinux.0, vmlinuzなどはインストールDVDにありますので、コピーしてきます。

/tftpboot/linux-install:
合計 9168
-r--r--r-- 1 root root 7399936 12月  4 11:03 initrd.img
drwxr-xr-x 2 root root    4096 10月  1 02:22 msgs
-rw-r--r-- 1 root root   13100 12月 20  2005 pxelinux.0
drwxr-xr-x 2 root root    4096 12月  4 11:19 pxelinux.cfg
-r--r--r-- 1 root root 1932316 12月  4 11:03 vmlinuz

/tftpboot/linux-install/msgs:
合計 48
-rw-r--r-- 1 root root 439  4月  7  2008 boot.msg
-rw-r--r-- 1 root root 668  4月  7  2008 expert.msg
-rw-r--r-- 1 root root 871  4月  7  2008 general.msg
-rw-r--r-- 1 root root 860  4月  7  2008 param.msg
-rw-r--r-- 1 root root 530  4月  7  2008 rescue.msg
-rw-r--r-- 1 root root 545  4月  7  2008 snake.msg

/tftpboot/linux-install/pxelinux.cfg:
合計 4
-rw-r--r-- 1 root root 91 12月  4 11:19 default

最後のdefaultはテキストファイルで、自分で書く必要があります。内容はこんな感じです。

default rhel

label rhel
kernel vmlinuz
append load initrd=initrd.img devfs=nomount

次はDHCPです。DHCPサーバーがRPMでインストールされているとして、/etc/dhcpd.confは以下のようにします。基本的に普通のdhcpサーバーの設定にnext-serverという設定とfilenameの設定が必要になります。

ddns-update-style interim;
ignore client-updates;

subnet 192.168.0.0 netmask 255.255.255.0 {
        next-server 192.168.0.2;        #これが必要。HTTPやFTPサーバーのIPを指定する
        option routers                  192.168.0.1;
        option subnet-mask              255.255.255.0;
        option domain-name-servers      192.168.0.1;
        option time-offset              -18000; # Eastern Standard Time
        range dynamic-bootp 192.168.0.200 192.168.0.254;
        default-lease-time 21600;
        max-lease-time 43200;
        filename "/linux-install/pxelinux.0";
}

最後はインストールイメージを配信するサーバー、ここではapacheを使います。

まず、インストールのDVD ISOイメージを用意します。

httpdがrpmでインストールされているとして、デフォルトは/var/www/htmlがWEBサーバーのルートなので、ここに適当なディレクトリを作って、上記のISOイメージをマウントします。ここでは、/var/www/html/rhelにマウントするとします。

# mount  -o loop ISOイメージ名 /var/www/html/rhel

apacheを起動します。

# /etc/init.d/httpd restart

以上で設定は完了です。BIOSでPXEブートができるようにしたマシンをネットワークに繋いで電源を入れると、起動するはずです。インストーラーが立ち上がる前に、インストールイメージの場所を指定する画面が出てきます。HTTPを選択後、上記の設定では、URLに192.168.0.2(サーバーのIP) 、パスに/rhelを入力すればインストーラーが立ち上がります。

国別 IP アドレス割り当てリスト

サーバを立てているとあちこちから不正アクセスがくるもので、特に不正アクセスが多い国はアクセス禁止にしているサイトもあると思います。

そこで、どの国がどの IPを使っているかは、IPを管理している組織 IANA(Internet Assigned Numbers Authority) で調べることができます。といっても、IANAは地域別に以下のように分かれているので、実際の国別のIPの管理はこれらの組織が行っていますが、どこにリストがあってどうやって見ればよいかよくわからなかったので、調べてみました。組織へのリンクと、割り当てのリストへのリンク(allocation and assignment reports)です。delegated-apnic-日付というファイル名でアップロードされています。

ファイルには、以下のようなリストが載っています。ipv4と書いてある行が調査の対象行です。

apnic|NZ|asn|2.102|1|20090305|allocated
apnic|NZ|asn|2.104|1|20090409|allocated
apnic|AU|asn|2.105|1|20090421|allocated
・・・
apnic|JP|ipv4|58.0.0.0|131072|20050106|allocated
apnic|IN|ipv4|58.2.0.0|65536|20050110|allocated
apnic|JP|ipv4|58.3.0.0|32768|20050304|allocated
・・・・

ヘッダにフォーマットの説明へのリンクが載っていましたので見てみたところ、以下のようなフォーマットらしいです。(サイトから引用)

registry|cc|type|start|value|date|status[|extensions...]
registry One value from the set of defined strings:
{afrinic,apnic,arin,iana,lacnic,ripencc};
cc ISO 3166 2-letter code of the organisation to which the allocation or assignment was made, and the enumerated variances of:
{AP,EU,UK}
These values are not defined in ISO 3166 but are widely used.
type Type of Internet number resource represented in this record. One value from the set of defined strings:{asn,ipv4,ipv6}
start In the case of records of type 'ipv4' or 'ipv6' this is the IPv4 or IPv6 'first address' of the range.In the case of an 16 bit AS number the format is the integer value in the range 0 to 65535, in the case of a 32 bit ASN the value is in the range 0 to 4294967296. No distinction is drawn between 16 and 32 bit ASN values in the range 0 to 65535.
value In the case of IPv4 address the count of hosts for this range. This count does not have to represent a CIDR range.In the case of an IPv6 address the value will be the CIDR prefix length from the 'first address' value of <start>.In the case of records of type 'asn' the number is the count of AS from this start value.
status Type of allocation from the set:
{allocated, assigned}
This is the allocation or assignment made by the registry producing the file and not any sub-assignment by other agencies.
extensions Any extra data on a line is undefined, but should conform to use of the field separator used above.

説明を読む限り、startが割り当て開始のIPアドレス、valueがそのアドレスから割り当てられているIPアドレス数のようです。

つまり以下の行の場合、

apnic|JP|ipv4|58.65.32.0|8192|20060921|allocated

JP(日本)に、58.65.32.0から8192個のIPのIPが割り当てられているということになります。これをIPの範囲で計算すると、8192/256=32なので、

58.65.32.0 ~ 58.65.63.255

となります。 計算できなくIPの基本を知らない人は別途勉強してください。

下記参考ページに、これらの計算を処理してくれるperlのスクリプトを公開してくれていますので、リストを作成したい場合は参照してみてください。

参考 http://fetus.k-hsu.net/document/network/ipv4assign/

http://www.nminoru.jp/~nminoru/memo/ip-address/what_country_from.html

USB LANアダプタ GU-1000Air 購入@Ubuntu 9.04 beta

プラネックスのUSBギガビットLANアダプタ GU-1000Airを購入。

搭載コントローラにASIX AX88178と書いてあり、なんとなくLinuxでも動きそうなので選択。案の定Ubuntu 9.04では何もせずに認識され、普通に使えました。(ギガビットのスイッチないので、100Mでしか試していません)

# dmesg | grep asix
[   15.402716] eth1: register 'asix' at usb-0000:00:1d.7-2, ASIX AX88178 USB 2.0 Ethernet, 00:90:xx:xx:xx:xx
[   15.407852] usbcore: registered new interface driver asix
# lsmod | grep as
asix                   22528  0
usbnet                 23944  1 asix
mii                    13312  4 asix,usbnet,8139too,8139cp

Linuxで動くUSB-LANアダプタを探している人はご参考あれ。

ちなみに、付属のCDに入っているWindowsやMacのドライバがネット上で公開されていません。 CDバックアップとっておかないとやばいな。

akamaitechnologies.comってなに??

ふとWindowsでnetstatを叩くと、akamaitechnologies.comというドメインに繋がっています。なんだここ?って思って調べてみると、どうやら多くのユーザにコンテンツを配信するサービスを行っている会社のドメインだといういうことがわかりました。

Windowsのアップデートや動画共有サイトでの動画配信等々を使用すると繋がるみたいです。トロイでなくて一安心。

アカマイ・テクノロジーズ

sendip

ネットワークのテストをしたいとき、任意のパケットを送出したい場合があります。Windowsの場合はipsendwinや、Linuxの場合はsendipといったツールがあるようです。

ipsendwinを使用してみたところ、MACアドレスからTCPやUDP, ICMPなどのパケットの内容をいろいろといじることができました。しかし、あまりに変なパケットだとドライバではじいているのか、パケットがネットワークインタフェースから出ていかないこともありました。

このブログについて
プライバシーポリシー・お問い合わせ等
購読する(RSS)
記事検索
アーカイブ
カテゴリー
  • ライブドアブログ