Linux(CentOS5)のネットワーク設定メモ

What

Linux(CentOS5)のネットワーク設定をちゃんとしたい。
今回は、LAN内で固定IPを持つサーバーを見てみます。


実験する環境

[root@localhost ~]# uname -a
Linux localhost.localdomain 2.6.18-8.1.1.el5xen #1 SMP Mon Apr 9 11:46:46 EDT 2007 i686 i686 i386 GNU/Linux
[root@localhost ~]# cat /etc/redhat-release
CentOS release 5 (Final)

現状把握

CentOS5では、インストール時にほとんど設定されている。

[root@localhost ~]# ping -c 2 localhost
PING localhost.localdomain (127.0.0.1) 56(84) bytes of data.
64 bytes from localhost.localdomain (127.0.0.1): icmp_seq=1 ttl=64 time=0.109 ms
64 bytes from localhost.localdomain (127.0.0.1): icmp_seq=2 ttl=64 time=0.063 ms

--- localhost.localdomain ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 999ms
rtt min/avg/max/mdev = 0.063/0.086/0.109/0.023 ms
[root@localhost ~]#


大丈夫っぽい。

[root@localhost ~]# ping google.com
connect: Network is unreachable

なんかいろいろだめっぽい・・・orz
デフォルトゲートウェイの設定か?

  • route
[root@localhost ~]# route -v
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
169.254.0.0     *               255.255.0.0     U     0      0        0 eth0
10.0.0.0        *               255.0.0.0       U     0      0        0 eth0

ん?デフォルトゲートウェイが設定されていない?


route 〜ルーティングテーブルの表示/設定を行う:ネットワークコマンド使い方 - @IT

[root@localhost ~]# netstat -r
Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
169.254.0.0     *               255.255.0.0     U         0 0          0 eth0
10.0.0.0        *               255.0.0.0       U         0 0          0 eth0
  • nslookup
[root@localhost ~]# nslookup google.com
Server:         10.20.138.1
Address:        10.20.138.1#53

Non-authoritative answer:
Name:   google.com
Address: 64.233.167.99
Name:   google.com
Address: 64.233.187.99
Name:   google.com
Address: 72.14.207.99

あれ?nslookupだとIPとれるぞ?
/etc/resolv.conf でLAN内DNSが設定されているからかな?


nslookup 〜DNSサーバに名前解決の問い合わせを行う:ネットワークコマンド使い方 - @IT
> nslookupコマンドは、DNSクライアントの名前解決機能を手動実行するためのコマンドだ。

  • traceroute
[root@localhost ~]# traceroute google.com
traceroute to google.com (64.233.167.99), 30 hops max, 40 byte packets
connect: ネットワークに届きません

デフォルトゲートウェイが設定されてないからかな・・・。とりあえず今は状況確認なので次。

参考
traceroute(tracert) 〜ネットワークの経路を調査する:ネットワークコマンドの使い方 - @IT

  • ifconfig
[root@localhost ~]# ifconfig -a
eth0      Link encap:Ethernet  HWaddr 00:04:23:64:97:92  
         inet addr:10.20.138.13  Bcast:10.20.138.255  Mask:255.0.0.0
         inet6 addr: fe80::204:23ff:fe64:9792/64 Scope:Link
         UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
         RX packets:2688473 errors:0 dropped:0 overruns:0 frame:0
         TX packets:175613 errors:0 dropped:0 overruns:0 carrier:0
         collisions:0 txqueuelen:0
         RX bytes:421431826 (401.9 MiB)  TX bytes:246706281 (235.2 MiB)

eth1      Link encap:Ethernet  HWaddr 00:04:23:64:97:93  
         BROADCAST MULTICAST  MTU:1500  Metric:1
         RX packets:0 errors:0 dropped:0 overruns:0 frame:0
         TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
         collisions:0 txqueuelen:1000
         RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)
         Base address:0xdc80 Memory:fcf80000-fcfa0000

lo        Link encap:Local Loopback  
         inet addr:127.0.0.1  Mask:255.0.0.0
         inet6 addr: ::1/128 Scope:Host
         UP LOOPBACK RUNNING  MTU:16436  Metric:1
         RX packets:1693 errors:0 dropped:0 overruns:0 frame:0
         TX packets:1693 errors:0 dropped:0 overruns:0 carrier:0
         collisions:0 txqueuelen:0
         RX bytes:153985 (150.3 KiB)  TX bytes:153985 (150.3 KiB)

peth0     Link encap:Ethernet  HWaddr FE:FF:FF:FF:FF:FF  
         inet6 addr: fe80::fcff:ffff:feff:ffff/64 Scope:Link
         UP BROADCAST RUNNING NOARP  MTU:1500  Metric:1
         RX packets:2689492 errors:0 dropped:0 overruns:0 frame:0
         TX packets:244190 errors:0 dropped:0 overruns:0 carrier:0
         collisions:0 txqueuelen:100
         RX bytes:432272021 (412.2 MiB)  TX bytes:251764952 (240.1 MiB)
         Base address:0xdcc0 Memory:fcfa0000-fcfc0000

sit0      Link encap:IPv6-in-IPv4  
         NOARP  MTU:1480  Metric:1
         RX packets:0 errors:0 dropped:0 overruns:0 frame:0
         TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
         collisions:0 txqueuelen:0
         RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)

veth1     Link encap:Ethernet  HWaddr 00:00:00:00:00:00  
         BROADCAST MULTICAST  MTU:1500  Metric:1
         RX packets:0 errors:0 dropped:0 overruns:0 frame:0
         TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
         collisions:0 txqueuelen:0
         RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)

veth2     Link encap:Ethernet  HWaddr 00:00:00:00:00:00  
         BROADCAST MULTICAST  MTU:1500  Metric:1
         RX packets:0 errors:0 dropped:0 overruns:0 frame:0
         TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
         collisions:0 txqueuelen:0
         RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)

veth3     Link encap:Ethernet  HWaddr 00:00:00:00:00:00  
         BROADCAST MULTICAST  MTU:1500  Metric:1
         RX packets:0 errors:0 dropped:0 overruns:0 frame:0
         TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
         collisions:0 txqueuelen:0
         RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)

vif0.0    Link encap:Ethernet  HWaddr FE:FF:FF:FF:FF:FF  
         inet6 addr: fe80::fcff:ffff:feff:ffff/64 Scope:Link
         UP BROADCAST RUNNING NOARP  MTU:1500  Metric:1
         RX packets:175676 errors:0 dropped:0 overruns:0 frame:0
         TX packets:2688504 errors:0 dropped:0 overruns:0 carrier:0
         collisions:0 txqueuelen:0
         RX bytes:246715663 (235.2 MiB)  TX bytes:421433732 (401.9 MiB)

vif0.1    Link encap:Ethernet  HWaddr FE:FF:FF:FF:FF:FF  
         BROADCAST MULTICAST  MTU:1500  Metric:1
         RX packets:0 errors:0 dropped:0 overruns:0 frame:0
         TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
         collisions:0 txqueuelen:0
         RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)

vif0.2    Link encap:Ethernet  HWaddr FE:FF:FF:FF:FF:FF  
         BROADCAST MULTICAST  MTU:1500  Metric:1
         RX packets:0 errors:0 dropped:0 overruns:0 frame:0
         TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
         collisions:0 txqueuelen:0
         RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)

vif0.3    Link encap:Ethernet  HWaddr FE:FF:FF:FF:FF:FF  
         BROADCAST MULTICAST  MTU:1500  Metric:1
         RX packets:0 errors:0 dropped:0 overruns:0 frame:0
         TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
         collisions:0 txqueuelen:0
         RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)

xenbr0    Link encap:Ethernet  HWaddr FE:FF:FF:FF:FF:FF  
         UP BROADCAST RUNNING NOARP  MTU:1500  Metric:1
         RX packets:2493252 errors:0 dropped:0 overruns:0 frame:0
         TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
         collisions:0 txqueuelen:0
         RX bytes:358672815 (342.0 MiB)  TX bytes:0 (0.0 b)
  • hostname
[root@localhost ~]# hostname
localhost.localdomain

ネットワーク系の設定ファイルの現状把握、確認

Googles様に聴いたら、下のページを発見。

http://www.a-yu.com/
http://www.ysd.bne.jp/linux/network.html
http://park15.wakwak.com/~unixlife/linux/net-ip.html

よさげです。読んだところ以下のファイルが重要なようです。
一つ一つ見ていきましょう。

バイスNIC)ごとの設定(/etc/sysconfig/network-scripts/ifcfg-eth0)

バイスはeth0を使っているので、確認する。

  • 修正前
[root@localhost ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0
# Intel Corporation 82546EB Gigabit Ethernet Controller (Copper)
DEVICE=eth0
BOOTPROTO=static
#HWADDR=00:04:23:64:97:92
BROADCAST=10.20.138.255
IPADDR=10.20.138.13
NETMASK=255.0.0.0
NETWORK=10.20.138.0
GATEWAY=10.20.138.254
ONBOOT=yes
TYPE=Ethernet
[root@localhost ~]#

IPはDHCPからの自動取得ではなく固定を使っている。
HWADDRがコメントアウトされている。HWADDRは"HardWare address"、つまりMACアドレスということだ。
たしかに、ifconfigで見た時に、eth0のところに同じようにかいてある。
コメントアウトしてある意味も見当たらないので、コメントアウトを外した。

  • 修正後のファイル
[root@localhost ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0
# Intel Corporation 82546EB Gigabit Ethernet Controller (Copper)
DEVICE=eth0
BOOTPROTO=static
HWADDR=00:04:23:64:97:92
BROADCAST=10.20.138.255
IPADDR=10.20.138.13
NETMASK=255.0.0.0
NETWORK=10.20.138.0
GATEWAY=10.20.138.254
ONBOOT=yes
TYPE=Ethernet
[root@localhost ~]#


エディタで修正後再起動。

しかし、デフォルトゲートウェイが設定が反映していない。
LAN内のデフォルトゲートウェイは 10.20.138.254 は間違っていない。

[root@localhost ~]# route -v
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
169.254.0.0     *               255.255.0.0     U     0      0        0 eth0
10.0.0.0        *               255.0.0.0       U     0      0        0 eth0


ここに表示されなくても、/etc/sysconfig/network-scripts/ifcfg-eth0 に書いてあればおkなのか?
確認してみよう。

[root@localhost ~]# ping 64.233.167.99
connect: Network is unreachable
[root@localhost ~]#


これって、外にいけてないってことですよね。。。
もし、LAN内に設置してあるDNSを利用して、IPを取得出来ても、アクセスできないってことですよね。。。違う?



デフォルトゲートウェイを設定する

[root@localhost ~]# route add default gw 10.20.138.254
[root@localhost ~]#

テストしてみる。

[root@localhost ~]# ping 64.233.167.99
PING 64.233.167.99 (64.233.167.99) 56(84) bytes of data.
64 bytes from 64.233.167.99: icmp_seq=1 ttl=241 time=137 ms
64 bytes from 64.233.167.99: icmp_seq=2 ttl=241 time=138 ms

--- 64.233.167.99 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 999ms
rtt min/avg/max/mdev = 137.785/138.359/138.933/0.574 ms
[root@localhost ~]#


帰ってくるようになった。

[root@localhost ~]# route -v
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
169.254.0.0     *               255.255.0.0     U     0      0        0 eth0
10.0.0.0        *               255.0.0.0       U     0      0        0 eth0
default         10.20.138.254   0.0.0.0         UG    0      0        0 eth0
[root@localhost ~]#

route にも表示されている。

しかし、これは一時的な設定だから、サーバー再起動後にまたやらないといけない。
ヒントは、 /etc/sysconfig/network にありそうだ。


ネットワーク全体の設定(/etc/sysconfig/network)

  • 修正前
[root@localhost ~]# cat /etc/sysconfig/network
NETWORKING=yes
NETWORKING_IPV6=yes
HOSTNAME=localhost.localdomain
GATEWAY=10.20.138.254

現在設定されていないのが、 「GATEWAYDEV」 と「DOMAINNAME」だが、設定する必要はあるのか?

  • DOMAINNAME

省略可。LAN内のサーバーなのでドメインはつけていないのでない。書かないことにした。

  • GATEWAYDEV

省略可。しかし、
こちらに、
Product Documentation for Red Hat Enterprise Linux 8.0 Beta - Red Hat Customer Portal
>GATEWAYDEV=、ここで、 は eth0 などのゲートウェイバイスです。
また、こちらに、
http://park15.wakwak.com/~unixlife/linux/net-gateway.html
GATEWAYを有効にするインターフェースを指定する場合は、以下のように記入します。

とかいてあるので、GATEWAYDEV=eth0 を追記することにした。

  • 修正後
[root@localhost ~]# cat /etc/sysconfig/network
NETWORKING=yes
NETWORKING_IPV6=yes
HOSTNAME=localhost.localdomain
GATEWAY=10.20.138.254
GATEWAYDEV=eth0
  • 再起動
[root@localhost ~]# /etc/init.d/network restart
インターフェース eth0 を終了中:  RTNETLINK answers: Network is unreachable
                                                          [  OK  ]
ループバックインターフェースを終了中                       [  OK  ]
ループバックインターフェイスを呼び込み中                   [  OK  ]
インターフェース eth0 を活性化中:                          [  OK  ]
[root@localhost ~]#


特に問題なし。
これで、サーバー再起動後もデフォルトゲートウェイが設定されるはず。



こちらに、
ぷらっとホーム - サポート - 技術情報 - OpenBlockS - ネットワークの設定
>上位のDHCPサーバによりアドレスを割り当てられている場合。 「GATEWAY」と「GATEWAYDEV」はDHCPにより設定されるので空白にして下さい。

つまり、今回の例はDHCPではなく、固定のIPを持っていたため、「GATEWAY」と「GATEWAYDEV」を設定しないとデフォルトゲートウェイが再起動時に反映しなかったのですね。