ネットワーク
ネットワーク:記事リスト
ネットワークのカテゴリーには以下の記事がリストされています。
CentOS7でネットワークデバイス名を変更する
任意の名前を付けるようになりました。
例としては「eno1」、「eno2」や、「p4p2」など本当にバリエーションは様々です。
※CentOS6系では、eth0、eth1と付けていました。
しかし、この新しいネットワークデバイス名だと
システム的に不具合がある場合があります。
例えば、古いソフトウェアを使用したいという場合、
eth0やeth1でないと正しく動作しないというケースです。
そのような場合は、ネットワークデイバイス名を
従来のCentOS6系のものに編集することで対応できます。
現在のネットワーク状況を確認
下記例では、ネットワークデバイス名がp4p2になっています。これをeth0に変更します。
# ip addr
1: lo:
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: p4p2:
link/ether 58:8a:5a:29:2b:ba brd ff:ff:ff:ff:ff:ff
inet 192.168.0.37/24 brd 192.168.0.255 scope global noprefixroute p4p2
valid_lft forever preferred_lft forever
inet6 fe80::5a8a:5aff:fe29:2bba/64 scope link
valid_lft forever preferred_lft forever
3: wlan0:
link/ether 9c:30:5b:2b:32:6f brd ff:ff:ff:ff:ff:ff
/etc/default/grubファイルの編集
/etc/default/grubファイルを編集します。GRUB_CMDLINE_LINUXの行に「net.ifnames=0」と「biosdevname=0」を追加します。
編集後は「:wq」で保存終了します。
# vi /etc/default/grub
GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
GRUB_DEFAULT=saved
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL_OUTPUT="console"
GRUB_CMDLINE_LINUX="crashkernel=auto rd.lvm.lv=centos_tiger/root
rd.lvm.lv=centos_tiger/swap net.ifnames=0 biosdevname=0 rhgb quiet"
GRUB_DISABLE_RECOVERY="true"
dig
digコマンドとは
digコマンドは、DNSサーバーにドメイン名を元にIPアドレスを問い合わせる(正引き)コマンドになります。
CentOS6系まではnslookupが使用されていましたが、
CentOS7からはdigコマンドの使用が推奨されています。
digコマンドの書式
dig<オプション><@DNSサーバ>ドメイン名<クエリタイプ><クエリクラス>※<>の物は省略可
| 書式項目 | 意味 |
| オプション | digコマンドのオプション |
| @DNSサーバー | 名前解決の問い合わせを行うDNSサーバーを指定します。 省略時は/etc/resolve.confに設定されている DNSサーバーを使用します。 |
| クエリタイプ | どのタイプ(レコード)の名前解決を行いたいか設定します。省略時は「a」(正引き)となる |
| クエリクラス | クエリタイプを指定しない場合、 「in」のインターネットクラスドメインになります。 |
| クエリオプション | 表示結果の指定や問い合わせ方法を細かく指定できます。 |
CentOS7のNICをCentOS6系のeth0にする
CentOS7では、NICのパーティション名を自動で割り当てるよう仕様変更されています。
しかし、その仕様でNICを命名されると、一部正しく動作しないソフトウェアが存在します。
そのようなソフトウェアを利用したい場合、従来のCentOS6系で使用されているeth0に
NICの名前を変更します。
1.「/etc/default/grub」を編集します。
[root@Tiger src]# grep net.ifnames /etc/default/grub || sed '/^GRUB_CMDLINE_LINUX/s/\"$/ net.ifnames=0 biosdevname=0\"/g' /etc/default/grub
GRUB_CMDLINE_LINUX="crashkernel=auto rd.lvm.lv=centos_tiger/root rd.lvm.lv=centos_tiger/swap net.ifnames=0 rhgb quiet"
2.設定を反映させます。
[root@Tiger src]# grub2-mkconfig -o /boot/grub2/grub.cfg
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-3.10.0-693.el7.x86_64
Found initrd image: /boot/initramfs-3.10.0-693.el7.x86_64.img
Found linux image: /boot/vmlinuz-0-rescue-8680acc02b184dddaeb10d6dafc68539
Found initrd image: /boot/initramfs-0-rescue-8680acc02b184dddaeb10d6dafc68539.img
done
3.NICの設定ファイルをリネームします。
※ifcfg-p4p2 の「ip4p2」の箇所は環境によって異なりますので変更してください。
[root@Tiger src]# mv /etc/sysconfig/network-scripts/ifcfg-p4p2 /etc/sysconfig/network-scripts/ifcfg-eth0
4.デバイス情報を表示し、MACアドレスを確認します。
[root@Tiger ~]# nmcli device show
GENERAL.デバイス: p4p2
GENERAL.タイプ: ethernet
GENERAL.ハードウェアアドレス: 58:8A:5A:29:2B:BA ←控える
GENERAL.MTU: 1500
GENERAL.状態: 100 (接続済み)
GENERAL.接続: eth0
GENERAL.CON パス: /org/freedesktop/NetworkManager/ActiveConnection/1
WIRED-PROPERTIES.キャリア: オン
IP4.アドレス[1]: 192.168.0.36/24
IP4.ゲートウェイ: 192.168.0.1
IP4.DNS[1]: 192.168.0.1
IP6.アドレス[1]: fe80::5a8a:5aff:fe29:2bba/64
IP6.ゲートウェイ: --
GENERAL.デバイス: wlan0
GENERAL.タイプ: wifi
GENERAL.ハードウェアアドレス: C6:A5:AA:5F:4B:0A
GENERAL.MTU: 0
GENERAL.状態: 30 (切断済み)
GENERAL.接続: --
GENERAL.CON パス: --
GENERAL.デバイス: lo
GENERAL.タイプ: loopback
GENERAL.ハードウェアアドレス: 00:00:00:00:00:00
GENERAL.MTU: 65536
GENERAL.状態: 10 (管理無し)
GENERAL.接続: --
GENERAL.CON パス: --
IP4.アドレス[1]: 127.0.0.1/8
IP4.ゲートウェイ: --
IP6.アドレス[1]: ::1/128
IP6.ゲートウェイ: --
5.NICのデバイスファイルを編集します。
3でリネームしたファイルを編集します。
[root@Tiger ~]# vi /etc/sysconfig/network-scripts/ifcfg-eth0
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=none
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=no
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=eth0 ←eth0に修正します。
HWADDR=58:8A:5A:29:2B:BA ←4で確認したMACアドレスを追加します。
UUID=22f748d6-6718-47ac-bc27-7188a419465f
DEVICE=eth0 ←eth0に修正します。
ONBOOT=yes
IPADDR=192.168.0.36
PREFIX=24
GATEWAY=192.168.0.1
DNS1=192.168.0.1
6.サーバーを再起動します。
[root@Tiger ~]# shutdown -r now
7.再起動後、NIC名をを確認します。
[root@Tiger ~]# nmcli device show
CentOS7のホスト名設定(nmcliコマンド)
CentOS6までは、ホスト名の設定は「/etc/sysconfig/network」ファイルで
管理していましたが、CentOS7では、「/etc/hostname」ファイルで管理します。
ホスト名を変更するには、、「/etc/hostname」ファイルを直接編集するか、
または、nmcliコマンドでもホスト名設定が可能です。
現在設定されているホスト名を確認するには下記コマンドを実行します。
[root@Tiger ~]# nmcli general hostname
Tiger.linuxmaster.jp
上記の例ではホスト名に「Tiger.linuxmaster.jp」が設定されていることが確認できます。
ホスト名を「Leo.linuxmaster.jp」に変更します。
[root@Tiger ~]# nmcli general hostname Leo.linuxmaster.jp
変更後のホスト名を確認します。
[root@Tiger ~]# hostname
Leo.linuxmaster.jp
「/etc/hostname」ファイルの内容も確認します。
[root@Tiger ~]# cat /etc/hostname
Leo.linuxmaster.jp
CentOS7のネットワーク管理
CentOS7のネットワーク管理はNetworkManagerを利用して行います。
CentOS6系では、Network Administration Toolに含まれる
system-config-networkを使用した管理、管理ファイルを直接編集する
運用が一般的でしたが、CentOS7では、NetworkManagerを使用した
管理が推奨されています。
従来のNetworkManagerは、すべてのネットワーク機能を制御できなかった為、
直接ファイルを編集し、サービスの起動や停止を行っていましたが、
CentOS7のNetworkManagerでは、ネットワーク関連の操作が大幅に強化され、
設定ファイルを直接編集しなくても、コマンドラインやGUIツールで設定ファイルを
生成することが可能になっています。
また、NIC(Network Interface Card)に付与されるインタフェース名の命名管理も
これまでのCentOS6系とは全く異なる仕様となっています。
CentOS7では、ネットワークインタフェース名に永続的に変わらない名前が付与がされます。
この永続的な命名をConsistent Network Device Namingと言い、一般的なx86サーバーに
搭載されているオンボードのNICでは、eno1、eno2、拡張カードスロットに装着するNICでは
ens1、ens2、またはens7f0、ens7f1などの名前が付与されます。
■nmcliコマンド
nmcli(Network Manager Command Line Interface)コマンドは、
CentOS7のネットワーク設定を行なうNetworkManager基本コマンドになります。
nmcliコマンドには、下記パラメーターが用意されています。
・connection:接続の設定
・device:デバイス管理
・general:ホスト名設定、ロギング、権限操作、状態の表示
・networking:コネクティビティのチェック、有効化、無効化管理
・radio:ワイヤレスネットワークの設定有効化、無効化管理
■インタフェースの接続状態確認
[root@Tiger ~]# nmcli connection
名前 UUID タイプ デバイス
eno1 4a181dd8-0bac-43c5-8d4f-9e89c31e14b1 802-3-ethernet eno1
上記の例では、NICのインタフェース名がeno1として割当られています。
デバイスの項目にインタフェース名が表示されている場合は
ネットワークに接続されていることを表します。
■インタフェースの接続と切断
「nmcli connection」でupやdownを指定すると、
インタフェースの接続、切断を制御できます。
下記例ではインタフェースeno1を切断しています。
[root@Tiger ~]# nmcli connection down eno1
[root@Tiger ~]# nmcli connection
名前 UUID タイプ デバイス
eno1 4a181dd8-0bac-43c5-8d4f-9e89c31e14b1 802-3-ethernet --
デバイスの項目gが「--」になり、切断されていることが分かります。
再度接続するには、下記コマンドを実行します。
[root@Tiger ~]# nmcli connection up eno1
■デバイス名とデバイスの状態確認
インタフェースのデバイス名とその状態を確認するには「device」を指定します。
[root@Tiger ~]# nmcli device
デバイス タイプ 状態 接続
eno1 ethernet 接続済み eno1
lo loopback 管理無し --
物理NICが1ポートあるサーバーで、デバイス名がeno1と割り当てられています。
またループバックデバイスとしてloが認識されています。状態と接続からeno1が
ネットワークに接続されていることが分かります。
■詳細なデバイス情報を表示
デイバイスのMACアドレス、IPアドレス、MTUなどの詳細を確認するには、
「nmcli device」に「show」を付けて実行します。
[root@Tiger ~]# nmcli device show
GENERAL.デバイス: eno1
GENERAL.タイプ: ethernet
GENERAL.ハードウェアアドレス: 00:0C:29:37:80:B6
GENERAL.MTU: 1500
GENERAL.状態: 100 (接続済み)
GENERAL.接続: eno1
GENERAL.CON パス: /org/freedesktop/NetworkManager/ActiveConnection/0
WIRED-PROPERTIES.キャリア: オン
IP4.アドレス[1]: 192.168.0.36/24
IP4.ゲートウェイ: 192.168.0.1
IP4.DNS[1]: 192.168.0.1
IP6.アドレス[1]: fe80::20c:29ff:fe37:80b6/64
IP6.ゲートウェイ:
GENERAL.デバイス: lo
GENERAL.タイプ: loopback
GENERAL.ハードウェアアドレス: 00:00:00:00:00:00
GENERAL.MTU: 65536
GENERAL.状態: 10 (管理無し)
GENERAL.接続: --
GENERAL.CON パス: --
IP4.アドレス[1]: 127.0.0.1/8
IP4.ゲートウェイ:
IP6.アドレス[1]: ::1/128
IP6.ゲートウェイ:
「nmcli device show」だけでは複数のNICが存在した場合、
そのすべての状態を表示してしまいます。
しかし、インタフェース名を指定することで出力を絞ることができます。
[root@Tiger ~]# nmcli device show eno1
GENERAL.デバイス: eno1
GENERAL.タイプ: ethernet
GENERAL.ハードウェアアドレス: 00:0C:29:37:80:B6
GENERAL.MTU: 1500
GENERAL.状態: 100 (接続済み)
GENERAL.接続: eno1
GENERAL.CON パス: /org/freedesktop/NetworkManager/ActiveConnection/0
WIRED-PROPERTIES.キャリア: オン
IP4.アドレス[1]: 192.168.0.36/24
IP4.ゲートウェイ: 192.168.0.1
IP4.DNS[1]: 192.168.0.1
IP6.アドレス[1]: fe80::20c:29ff:fe37:80b6/64
IP6.ゲートウェイ:
■接続情報の変更
・IPアドレス・ゲートウェイの変更
インタフェースに割り当てたIPアドレスやゲートウェイを変更するには、
「nmcli connection」に「modify」を指定します。
下記例では、IPアドレス192.168.0.36/24、ゲートウェイが192.168.0.1が
割り当てられている環境で、eno1のIPアドレスを192.168.0.20/24、
ゲートウェイを192.168.0.254に変更しています。
[root@Tiger ~]# nmcli connection modify eno1 ipv4.addresses "192.168.0.20/24 192.168.0.254"
[root@Tiger ~]# nmcli connection down eno1 && nmcli connection up eno1
「nmcli connection down eno1」が従来のifdown、
「nmcli connection up eno1」がifupに相当し、eno1を再起動しています。
・DNS・静的ルーティング変更
DNSサーバーと静的ルーティングを変更するには「ipv4.dns」、「ipv4.routes」を指定します。
下記の例では、eno1のDNSサーバーのIPアドレスを「8.8.8.8」、「4.4.4.4」を指定しています。
[root@Tiger ~]# nmcli connection modify eno1 ipv4.dns "8.8.8.8 4.4.4.4"
[root@Tiger ~]# nmcli connection down eno1 && nmcli connection up eno1
下記の例では、静的ルーティングとして、「10.0.0.0/24」のネットワークアドレスで
ルーターのIPアドレス「10.0.0.1」を指定しています。
[root@Tiger ~]# nmcli connection modify eno1 ipv4.routes "10.0.0.0/24 10.0.0.1"
[root@Tiger ~]# nmcli connection down eno1 && nmcli connection up eno1
IPv6アドレスを確認する
基本的にCentOSをインストールすると、従来のIPv4アドレスとIPv6アドレスが併用して割り当てられます。
IPv6のIPアドレスを確認するには、ifconfigコマンドを実行します。
IPv6のIPアドレスが表示される箇所は、eth0とloのinet6 addr:行になります。
[pakira@Tiger ~]$ ifconfig
eth0 Link encap:Ethernet HWaddr 00:0C:29:2C:4C:AA
inet addr:192.168.0.36 Bcast:192.168.0.255 Mask:255.255.255.0
inet6 addr: 2001:c90:****:****:****:****:****:4caa/64 Scope:Global
inet6 addr: fe80::****:****:****:****/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:133 errors:0 dropped:0 overruns:0 frame:0
TX packets:77 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:15654 (15.2 KiB) TX bytes:12553 (12.2 KiB)
Interrupt:19 Base address:0x2000
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:4 errors:0 dropped:0 overruns:0 frame:0
TX packets:4 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:240 (240.0 b) TX bytes:240 (240.0 b)
inet6 addr: 2001の行は固定で割り当てたIPv6アドレスになり、
inet6 addr: fe80の行は、自動で割り当てられたIPv6アドレスになります。
fe80で始まる自動構成されたIPv6アドレスは、リンクローカルアドレスと呼ばれ、
隣接したコンピュータと通信できますが、インターネットとは直接通信できません。
IPv6アドレスを使用してインターネットに接続するには、プロバイダーに申請する
必要があります。
また、loのinet6 addr: 行は、Ipv6のループバックアドレスが表示されており、
システム共通で「::1」となっています。
nmapでポートスキャンを実施する
Linuxサーバーのポートの使用状況を外部ネットワークから確認するには
ポートスキャン用ツールnmapを使用します。
nmapがインストールされていない場合は、インストールしてから実行します。
[root@Tiger ~]# yum install nmap ←nmapをインストールします。
[root@Tiger ~]# nmap -p 1-99 192.168.0.36 ←ポート1~99までをポートスキャン
Starting Nmap 5.51 ( http://nmap.org ) at 2012-10-18 14:46 JST
Nmap scan report for 192.168.0.36
Host is up (0.00065s latency).
Not shown: 96 filtered ports
PORT STATE SERVICE
21/tcp open ftp
22/tcp open ssh
80/tcp open http
MAC Address: 00:0C:29:2C:4C:AA (VMware)
Nmap done: 1 IP address (1 host up) scanned in 14.36 seconds
上記の例では、ホスト192.168.0.36のポート番号1〜99に対してポートスキャンを実施しています。
デフォルトではTCPプロトコルがスキャン対象になりますが、「-sU」オプションを指定することで
UDPプロトコルが対象になります。
またTCPプロトコルのオプションは「-sT」になります。
「-p」オプションはポート範囲を指定できます。
上記の例では、ポート21、22、80が開いていることが分かります。
※ポートスキャンは自分が管理しているサーバーに実施してください。
他人が管理しているサーバーに無断で行うとハッキング行為と見なされる事があるのでご注意ください。
名前解決の参照順を変更する(/etc/host.conf)
名前解決システムを参照する設定は、/etc/host.confファイルでも行えます。
但し、このファイルは古いライブラリで使用されるため、最近のlibc6では、
/etc/nsswitch.confファイルが使用されます。
名前解決の参照順を変更する(/etc/nsswitch.conf)
通常は、編集する必要はありませんが、何らかの古いアプリケーションを使用する場合に
その必要性が出てくることも考えられます。
[root@Tiger ~]# vi /etc/host.conf
order hosts,bind
項目は、order だけでhosts,bindと並んでいます。
hostsは「/etc/hosts」ファイルを意味し、これを参照後、bind、つまりDNSサーバーを参照します。
名前解決の参照順を変更する(/etc/nsswitch.conf)
名前解決システムを参照する設定は、/etc/nsswitch.confファイルになります。
古いライブラリでは、/etc/host.confファイルで参照順を設定しますが、
現在において/etc/nsswitch.confファイルを編集することがほとんどです。
[root@Tiger ~]# vi /etc/nsswitch.conf
#hosts: db files nisplus nis dns
hosts: files dns
上記は/etc/nsswitch.confファイルの抜粋ですが、「hosts:」行に参照順位が
設定されています。左からfiles、dnsとされており、filesは/etc/hostsファイルを
dnsは、DNSサーバーを意味します。
デフォルトでは、hostsファイルを参照後、名前が解決できない場合、
DNSサーバーを参照します。
参照項目としては、LDAPサーバーの場合、「ldap」、NISの場合「nis」と記述します。
プロトコル番号を確認する
ネットワーク上を流れるデータには、送信元情報や、宛先IPアドレス情報を格納した
IPヘッダが付加されています。
このIPヘッダには、プロトコル番号も含まれており、
Linuxもプロトコルとプロトコル番号の情報を対応表として
「/etc/protocols」ファイルに保持しています。
moreコマンドを使用して/etc/protocolsを参照することができます。
通常、/etc/protocolsファイルを編集する機会はありません。
[root@Tiger ~]# more /etc/protocols
/etc/protocols:
# $Id: protocols,v 1.9 2009/09/29 15:11:55 ovasik Exp $
#
# Internet (IP) protocols
#
# from: @(#)protocols 5.1 (Berkeley) 4/17/89
#
# Updated for NetBSD based on RFC 1340, Assigned Numbers (July 1992).
# Last IANA update included dated 2009-06-18
#
# See also http://www.iana.org/assignments/protocol-numbers
ip 0 IP # internet protocol, pseudo protocol number
hopopt 0 HOPOPT # hop-by-hop options for ipv6
icmp 1 ICMP # internet control message protocol
igmp 2 IGMP # internet group management protocol
ggp 3 GGP # gateway-gateway protocol
ipencap 4 IP-ENCAP # IP encapsulated in IP (officially ``IP'')
st 5 ST # ST datagram mode
tcp 6 TCP # transmission control protocol
cbt 7 CBT # CBT, Tony Ballardie
egp 8 EGP # exterior gateway protocol
igp 9 IGP # any private interior gateway (Cisco: for IGRP)
bbn-rcc 10 BBN-RCC-MON # BBN RCC Monitoring
nvp 11 NVP-II # Network Voice Protocol
pup 12 PUP # PARC universal packet protocol
argus 13 ARGUS # ARGUS
emcon 14 EMCON # EMCON
xnet 15 XNET # Cross Net Debugger
chaos 16 CHAOS # Chaos
udp 17 UDP # user datagram protocol
mux 18 MUX # Multiplexing protocol
dcn 19 DCN-MEAS # DCN Measurement Subsystems
hmp 20 HMP # host monitoring protocol
prm 21 PRM # packet radio measurement protocol
xns-idp 22 XNS-IDP # Xerox NS IDP
trunk-1 23 TRUNK-1 # Trunk-1
trunk-2 24 TRUNK-2 # Trunk-2
leaf-1 25 LEAF-1 # Leaf-1
Linuxのホスト名をファイルで変更する
Linuxのホスト名をファイルで変更するには、/etc/sysconfig/networkファイルを編集します。
[root@Tiger ~]# vi /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=Tiger
GATEWAY=192.168.0.1
「HOSTNAME」の箇所を変更したいホスト名に変更します。
続いて、/etc/hostsファイルを編集します。
[root@Tiger ~]# vi /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
127.0.0.1 Tiger
設定したホスト名を反映するには、システムの再起動を行います。
ファイルでホスト名を変更する場合には、/etc/sysconfig/networkファイルと、
/etc/hostsファイルの両方を必ず編集してください。
ホスト名設定は、/etc/rc.sysinitスクリプトで実行されるため、システムの再起動が必要です。
ネットワークの再起動では反映されませんので、注意してください。
Linuxのホスト名をコマンドで変更する
Linuxのホスト名を一時的に変更する場合、/bin/hostnameコマンドを実行します。
変更したいホスト名を、hostnameコマンドの引数として指定して実行します。
[root@Tiger ~]# hostname Leo
[root@Tiger ~]# hostname
Leo
しかし、hostnameコマンドでの変更は、あくまで一時的なものであり、
システムを再起動すると消えてしまいます。
また、ホスト名とIPアドレスとの対応表である/etc/hostsファイルにも反映されません。
恒久的にホスト名を変更する場合は、下記ページを参照してください。
Linuxのホスト名をファイルで変更する
Linuxでパケットをキャプチャ(ダンプ)する
Linuxでパケットをキャプチャするには、/usr/sbin/tcpdumpコマンドを利用します。
tcpdumpのみを実行するだけで、キャプチャされたパケットが表示されます。
tcpdumpコマンドを終了するには、「Ctrl」+「c」キーを入力します。
[root@Tiger ~]# tcpdump
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes
04:22:05.749445 IP6 fe80::da5:6247:e055:19.51436 > fe80::b116:235a:44ef:e0c2.microsoft-ds: Flags [S], seq 2271766518, win 8192, options [mss 1440,nop,wscale 2,nop,nop,sackOK], length 0
〜以下省略〜
下記の例は、eth0を指定し、192.168.0.162宛てのパケットをキャプチャしている例です。
[root@Tiger ~]# tcpdump -i eth0 dst 192.168.0.162
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes
04:19:31.162101 IP 192.168.0.150.hostmon > 192.168.0.162.62483: UDP, length 56
ファイルへキャプチャの結果を保存する場合には、下記コマンドを実行します。
[root@Tiger ~]# tcpdump > ファイル名
[root@Tiger ~]# tcpdump -i eth0 dst 192.168.0.162 > ファイル名
ファイル名には任意の名前をつけてください。
上記を実行することで、任意の名前を付けたファイルにキャプチャ結果が保存されます。
設定ファイルでIPアドレスを設定するには
コマンドでIPアドレスを設定するにはでは、コマンドを利用してIPアドレスを設定しましたが、
設定ファイルでもIPアドレスの設定が行えます。
コマンドでの設定は反映が一時的でしたが、設定ファイルの場合、
恒久的にIPアドレスの設定反映が行えます。
(システムやネットワークの再起動を行なっても設定は元に戻りません。)
設定するファイルと箇所は、/etc/sysconfig/network-scripts/ifcfg-eth0のIPADDR項目になります。
このIPADDRにIPアドレスを設定します。
設定後は、「/etc/init.d/network restart」や、「service network restart」などで
ネットワークの再起動を行い設定を反映をさせます。
[root@Tiger ~]# vi /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE="eth0"
BOOTPROTO="static"
BROADCAST="192.168.0.255"
DNS1="192.168.0.1"
GATEWAY="192.168.0.1"
HWADDR="00:0C:29:EF:7C:51"
IPADDR="192.168.0.36"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
NETMASK="255.255.255.0"
NM_CONTROLLED="yes"
ONBOOT="yes"
TYPE="Ethernet"
UUID="7bff9c7e-05b3-4619-a0bf-2ce1dd32e473"
[root@Tiger ~]# service network restart
インターフェース eth0 を終了中: [ OK ]
ループバックインターフェースを終了中 [ OK ]
ループバックインターフェイスを呼び込み中 [ OK ]
インターフェース eth0 を活性化中: [ OK ]
コマンドでIPアドレスを設定するには
IPアドレスの設定を行うには、/sbin/ifconfigコマンドを実行します。
ifconfigコマンドで設定したIPアドレスは、一時的に設定されるだけで、
システムの再起動やネットワークサービスを再起動すると、
設定したIPアドレスは消えてしまいますので注意が必要です。
主に機能や動作検証する際に利用するケースが多いです。
[root@Tiger ~]# ifconfig eth0 192.168.0.38 ←IPアドレスを192.168.0.38に設定
[root@Tiger ~]# ifconfig -a
eth0 Link encap:Ethernet HWaddr 00:0C:29:EF:7C:51
inet addr:192.168.0.38 Bcast:192.168.0.255 Mask:255.255.255.0
inet6 addr: 2001:c90:8247:6dd4:20c:29ff:feef:7c51/64 Scope:Global
inet6 addr: fe80::20c:29ff:feef:7c51/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:11573 errors:0 dropped:0 overruns:0 frame:0
TX packets:552 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:1415240 (1.3 MiB) TX bytes:59891 (58.4 KiB)
Interrupt:19 Base address:0x2000
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: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)
[root@Tiger ~]# /etc/init.d/network restart ←ネットワークを再起動
インターフェース eth0 を終了中: [ OK ]
ループバックインターフェースを終了中 [ OK ]
ループバックインターフェイスを呼び込み中 [ OK ]
インターフェース eth0 を活性化中: [ OK ]
[root@Tiger ~]# ifconfig -a
eth0 Link encap:Ethernet HWaddr 00:0C:29:EF:7C:51
inet addr:192.168.0.36 Bcast:192.168.0.255 Mask:255.255.255.0 ←IPアドレスが元に戻っています。
inet6 addr: 2001:c90:8247:6dd4:20c:29ff:feef:7c51/64 Scope:Global
inet6 addr: fe80::20c:29ff:feef:7c51/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:11783 errors:0 dropped:0 overruns:0 frame:0
TX packets:682 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:1438904 (1.3 MiB) TX bytes:76888 (75.0 KiB)
Interrupt:19 Base address:0x2000
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: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)
[root@Tiger ~]#
恒久的にIPアドレスの設定を行いたい場合は、
設定ファイルでIPアドレスを設定するにはを参照してください。
LinuxのDNS設定方法|resolv.confが元に戻る原因とnmcliの手順
現代のLinuxを触り始めたエンジニアが、かなりの確率でハマるネットワーク設定の罠です。
この記事では、LinuxにおけるDNSサーバー(参照先)の設定・変更方法を解説します。古い記事にある「設定ファイルを直接書き換える方法」が現代では非推奨となっている理由と、最新の環境(AlmaLinux 9やRHEL 9など)で再起動しても消えない正しいDNS設定の手順を現場目線でまとめました。
「設定したはずなのに反映されない...」というトラブルの原因と対処法もあわせて解説していますので、ぜひ最後まで読んでみてください。
なぜ /etc/resolv.conf を直接編集してはいけないのか?
かつてのLinux(CentOS 6など)では、/etc/resolv.conf というファイルに nameserver 8.8.8.8 のように記述するのが当たり前でした。しかし、現代のLinux環境では「NetworkManager」というシステムがネットワーク設定を一元管理しています。
NetworkManager(ネットワークマネージャー)とは、RHEL 7以降のRed Hat系ディストリビューションで標準搭載されているネットワーク管理デーモン(サービス)です。IPアドレス、ルーティング、DNSなどのネットワーク設定を自動で制御しています。
そのため、人間が手動で
/etc/resolv.conf を書き換えても、ネットワークの再起動やOSの再起動のタイミングでNetworkManagerによって上書き(初期化)されてしまいます。実際に
/etc/resolv.conf の中身を見てみると、一番上に「Generated by NetworkManager(ネットワークマネージャーによって自動生成されました)」という警告文が書かれているはずです。# cat /etc/resolv.conf # Generated by NetworkManager search example.com nameserver 192.168.1.1
サービスのポート番号を確認する
Linuxで稼働するサービスは、デフォルトでサービス固有のポート番号が使用されます。
例えば、httpならTCPポートの80番、httpsなら443番などです。
これらのポート番号を把握するには、サービス独自の設定ファイルを確認しなければなりませんが、
一般的に想定されているポート番号は、/etc/servicesファイルに記載されています。
/etc/servicesファイルには、各行ごとにサービス名とポート番号/プロトコル名が記載されています。
[root@Tiger ~]# view /etc/services
# /etc/services:
# $Id: services,v 1.48 2009/11/11 14:32:31 ovasik Exp $
#
# Network services, Internet style
# IANA services version: last updated 2009-11-10
#
# Note that it is presently the policy of IANA to assign a single well-known
# port number for both TCP and UDP; hence, most entries here have two entries
# even if the protocol doesn't support UDP operations.
# Updated from RFC 1700, ``Assigned Numbers'' (October 1994). Not all ports
# are included, only the more common ones.
#
# The latest IANA port assignments can be gotten from
# http://www.iana.org/assignments/port-numbers
# The Well Known Ports are those from 0 through 1023.
# The Registered Ports are those from 1024 through 49151
# The Dynamic and/or Private Ports are those from 49152 through 65535
#
# Each line describes one service, and is of the form:
#
# service-name port/protocol [aliases ...] [# comment]
tcpmux 1/tcp # TCP port service multiplexer
tcpmux 1/udp # TCP port service multiplexer
rje 5/tcp # Remote Job Entry
rje 5/udp # Remote Job Entry
echo 7/tcp
echo 7/udp
discard 9/tcp sink null
discard 9/udp sink null
〜中略〜
ssh 22/tcp # The Secure Shell (SSH) Protocol
ssh 22/udp # The Secure Shell (SSH) Protocol
telnet 23/tcp
telnet 23/udp
# 24 - private mail system
lmtp 24/tcp # LMTP Mail Delivery
lmtp 24/udp # LMTP Mail Delivery
smtp 25/tcp mail
smtp 25/udp mail
〜中略〜
http 80/tcp www www-http # WorldWideWeb HTTP
http 80/udp www www-http # HyperText Transfer Protocol
http 80/sctp # HyperText Transfer Protocol
kerberos 88/tcp kerberos5 krb5 # Kerberos v5
kerberos 88/udp kerberos5 krb5 # Kerberos v5
supdup 95/tcp
supdup 95/udp
hostname 101/tcp hostnames # usually from sri-nic
hostname 101/udp hostnames # usually from sri-nic
iso-tsap 102/tcp tsap # part of ISODE.
csnet-ns 105/tcp cso # also used by CSO name server
csnet-ns 105/udp cso
以下省略
※但し、各種サービスの設定ファイルでポート番号を任意に変更できるため、
ここに記載されているポートで実際にサービスが動いているとは限りません。
そのため注意が必要です。
デフォルトゲートウェイ(ルータ)を設定する
Linuxはインストール時にデフォルトゲートウェイ(ルータ)の設定を行いますが、
ネットワークの構成変更に伴い、デフォルトゲートウェイを変更する必要が
生じる場合があります。
また、インストール時に設定したデフォルトゲートウェイが
実は誤りだった場合も正しいものに変更する必要があります。
私が主催してる「Linuxサーバー構築講座」でも、
希に誤った設定をして、正しいものに修正するには
どうすれば良いのかという質問を頂く事があります。
Linuxサーバー構築講座
https://www.linuxmaster.jp/2009/12/post-4.html
Linuxに触れたばかりの初心者の方には、まずは慣れてもらう事が
先決であるため、インストールからやり直してもらうことにしていますが、
ある程度慣れてきた時には、今日紹介する方法を使用して
デフォルトゲートウェイの設定すると良いでしょう。
pingによる死活確認
ネットワークに関するトラブルが発生した時、まず通信したい
相手の機器との通信経路が有効なのかを確認する必要があります。
相手機器(ホスト)との通信が可能であるかどうかを確認するコマンドは
pingコマンドになり、このpingコマンドはICMP(Internet Control Message Protocol)
というプロトコルを使用しています。
このICMPは要求パケットを相手ホストへ向けて送ると、相手ホストが正常に
受信した場合に、応答パケットを返す仕組みになっています。
この仕組みを利用してpingコマンドを相手ホストにICMPを送り、
死活確認を行います。
Linuxのftpコマンドの使い方|接続からアップロード・ダウンロードまで
「FTPコマンドで複数ファイルを一気にダウンロード・アップロードしたい」
ファイル転送の現場では、いまだに従来のFTPコマンドを使用する場面に直面することがあります。
この記事では、Linuxにおける
ftp コマンドの基本的な使い方を体系的に解説します。サーバーへの接続から、単一・複数ファイルのダウンロード(get/mget)とアップロード(put/mput)の手順まで、現場ですぐに使える内容をまとめました。1. FTPサーバーに接続・ログインする
まずは、対象のFTPサーバーに接続します。$ ftp 192.168.1.100
接続が成功すると、ユーザー名とパスワードの入力が求められます。
Name (192.168.1.100:root): user_name ←ユーザー名を入力 331 Please specify the password. Password: ←パスワードを入力(画面には表示されません) 230 Login successful. ftp>
ftp> に変わり、FTPコマンドの受付状態になります。FTPコマンドでファイルの途中からダウンロードする
ファイルのダウンロード途中で、何らかの原因によりダウンロードが
中断してしまった場合、サイズが大きいファイルをダウンロードしていたら
最初からやり直すのは、時間のロスが大きくなってしまいます。
そんな時、中断したダウンロードの途中から再開するコマンドとして
FTPコマンドのregetコマンドを使用します。
IPアドレスからドメイン名を調べるには
IPアドレスからドメイン名を調べるには
ドメイン名からIPアドレスを得る事を正引き名前解決と言いますが、
今回はその逆、IPアドレスからドメイン名を調べる方法になります。
これは正引き名前解決に対して、逆引き名前解決と言いますので
覚えておいてください。
この処理はDNSサーバーに対してクラインとから問い合わせを行ない
それに対する返答を受け取る事で結果が表示されます。
基本動作としては「正引き名前解決」と同じ処理になりますが、
問い合わせに使う情報、表示される結果が逆になります。
IPアドレスからドメイン名への対応はPTRレコードと呼ばれ、
このレコード上では、192.168.1.1というIPアドレスは、
1.1.168.192.in-addr.arpa.(IPアドレスの逆順.in-addr.arpa.)
という形式で記述されます。
これはドメイン名同様にIPアドレスも階層構造を持った名前として
認識し、正引き名前解決と同じプロセスで逆引き名前解決が行なわれる
ようにするためです。
ちなみに名前解決はhostコマンド、nslookupコマンドを使用します。
hostコマンドはnslookupコマンドに代わるものとして開発され、
現在においては、hostコマンドを使用する事が推奨されています。
(正引き名前解決に使用したdigコマンドと同じ扱いですね。)
文法
host IPアドレス
nslookup -type=ptr IPアドレス
ドメイン名からメールサーバーを調べるには
ドメイン名からメールサーバーを調べるには
あるドメイン内でメールサーバーとして稼働しているホストを調べるには、
そのドメインに設定されたMX(Mail Exchanger)レコードを調べると良いでしょう。
MXレコードとは前回ちょっと紹介したAレコードと同様、ドメイン情報を
構成する要素のひとつになります。
例えば、hogehoge.comというドメインの中でメールサーバーがmail1.hogehoge.com
というホスト名だった場合、pakira@hogehoge.com のようなメールアドレスに
メールが配送されるためには、このメールサーバーがhogehoge.comドメインの
MXレコードに指定されている必要があります。
MXレコードは、ドメイン名とそのドメインのメールサーバーのホストの
対応関係を記述したものになります。自分宛のメールが届かないような時は、
ドメインのMXレコードに正しくメールサーバーが指定されているか確認を
する必要があります。
文法
dig (調べるレコードの種類) (ドメイン名)
nslookup -type=(調べるレコードの種類) ドメイン名
ホスト名からIPアドレスを調べるには
ホスト名からIPアドレスを調べるには
ホスト名からIPアドレスを調べることを「正引き名前解決」と言います。
この処理はネームサーバー(DNS)に対して、問い合わせをすることで、
IPアドレス情報を受け取ることができます。
ホスト名からIPアドレスへの対応をA(address)レコードと呼ばれています。
また、DNSサーバーに名前解決の問い合わせを行なうコマンドは、digとnslookupが
あり、これらのコマンドは、問い合わせ先のDNSサーバーが指定されない場合、
/etc/resolv.confに記述されているDNSサーバーを利用して名前解決を試みます。
この/etc/resolv.confに設定されるDNSサーバーはLinuxのインストールの際に
入力したDNSサーバーが設定されています。
文法
dig ドメイン名
nslookup ドメイン名
ポートを使用しているプロセスを確認する
ポートを使用しているプロセスを確認する
今回はポートを使用しているプロセスを確認する方法をご紹介します。
Linux上でポートが開いている場合、そのポートを使用しているプロセスを
確認するのもサーバー管理者として重要な仕事です。
今日の内容を理解することで、不要プログラムが実行されてないか、不正な
バックドアが仕掛けられてないか等を調べ、Linuxのセキュリティ状況を確認する
ことができるようになりますので、ぜひあなた自身で実行してみて結果の
確認をしてくださいね。
lsofコマンドはLinuxが使用してるプロセス名や実行ユーザ名を表示するコマンドです。
ポートの利用情報のみを確認したい場合は、オプション「-i」を付けて実行します。
また、lsofコマンドで表示できるのは、このコマンドを実行するユーザーに対して
読み取り権限が設定されるファイルに限ります。
つまり、ポートなどの利用情報すべてを確認するためには、rootユーザーでlsof
コマンドを実行しなければなりません。
このlsofコマンドを実行する一番の目的は、稼働中のプロセスを確認することで
不要プログラムが実行されてないか、不正なバックドアが仕掛けられてないかを調べ、
Linuxのセキュリティ状況を確認することにあります。
文法
lsof (オプション)
オプション
-i 利用されているポートを表示する
Linuxのポート開放を確認するコマンド|ss・lsofの使い方
「Webサーバーを立ち上げたのにアクセスできない」
・・・サーバー構築やセキュリティ監査の現場では、ポートの開放状況の確認が必須の作業です。
この記事では、Linuxで現在開いているポート(接続待ちのポート)を確認するためのコマンドを体系的に解説します。現代の主流である
ss コマンドや、プロセスを特定する lsof コマンドの実践的な使い方から、ファイアウォールの確認手順までまとめました。ポートとは?IPアドレスとの違い
ポートとは、ネットワーク通信において「どのプログラムと通信するか」を識別するための出入り口(扉)の番号です。IPアドレスを「建物の住所」に例えるなら、ポート番号は「部屋番号(または窓口)」に相当します。Webサイト(HTTP)なら80番、SSHなら22番というように、サービスごとに使うポート番号(ウェルノウンポート)が決められています。サーバー管理においては「意図したポートだけが正しく開いているか」を常に意識する必要があります。
現場でよく使うポート番号の早見表
| ポート番号 | プロトコル | 用途 |
|---|---|---|
| 22 | TCP | SSH(リモートログイン) |
| 25 | TCP | SMTP(メール送信) |
| 53 | TCP/UDP | DNS(名前解決) |
| 80 | TCP | HTTP(Web) |
| 123 | UDP | NTP(時刻同期) |
| 443 | TCP | HTTPS(暗号化Web) |
| 3306 | TCP | MySQL/MariaDB |
Linuxのネットワーク環境を確認するためには
Linuxのネットワーク環境を確認するためには
Linuxサーバーを構築する上で、インストールの次にネックになるのが
ネットワーク設定になります。
Linuxのインストールは出来たけど、ネットワークに繋がらないという
エラーに悩まされる方が多いようです。
もし、あなたがネットワークの接続で悩まされたら、今日紹介する
テクニックでネットワーク環境の確認を行なってみてください。
使っているルータやプロバイダー環境の違いで細かい設定については
個別でアドバイスするしかありませんが、現在のLinuxに設定されている
ネットワーク環境については、Linuxすべてに共通する事ですので
このようなメールマガジンでお答えすることが出来ます。
Linuxのネットワーク環境を確認するためには、
下記の5カ所について確認を行なってください。
1.[root@ leopard root]# cat /etc/sysconfig/network-scripts/ifcfg-eth0
2.[root@ leopard root]# cat /etc/resolv.conf
3.[root@ leopard root]# cat /etc/sysconfig/network
4.[root@ leopard root]# netstat -r
5.[root@ leopard root]# ping ルータのIPアドレス
※pingコマンドを停止するには「Ctrl + c」キーを入力してください。
LANカードの設定確認
Linuxでネットワークの状況を確認するには、コマンドを実行して確認する方法と、設定ファイルの内容を確認する方法があります。
今回はLANカードに設定された設定内容を確認する方法を紹介します。
LinuxでIPアドレスを確認するコマンド|ip a・hostname -I・ifconfigの使い分け
「ifconfig を打ったら command not found と言われた」
Linuxサーバーの構築や障害対応で、自分のサーバーのIPアドレスを確認する場面は日常的に発生します。
この記事では、LinuxでIPアドレスを確認する実践的なコマンドを解説します。現代の標準である
ip コマンドを中心に、hostname -I、nmcli、旧来の ifconfig まで、環境に応じた使い分けと実行例をまとめました。1. 【結論】現場で使うIPアドレス確認コマンド一覧
LinuxでIPアドレスを確認する代表的なコマンドは以下の4つです。| コマンド | 特徴 | 対応環境 |
|---|---|---|
ip a |
現代の標準。最も確実 | RHEL 7以降 / Ubuntu 16.04以降 |
hostname -I |
IPアドレスだけをシンプルに表示 | ほぼすべてのディストリビューション |
nmcli device show |
ゲートウェイやDNSも同時に確認 | NetworkManager導入環境 |
ifconfig |
旧来のコマンド(非推奨) | CentOS 6以前 / 別途インストール |
ip a を使ってください。現在のLinuxディストリビューションではほぼ確実に使えます。続きを読む "LinuxでIPアドレスを確認するコマンド|ip a・hostname -I・ifconfigの使い分け"
