せんとくん
バージョン7からNetworkManagerの利用が推奨されているようですが、7以前のようにファイル編集でも設定はできます。
■HOSTNAME確認・設定
hostnamectl
でカーネルやらOS情報やらまとめて見れます。
[root@host01 /]# hostnamectl
Static hostname: host01
Icon name: computer-vm
Chassis: vm
Machine ID: 07346a5e12704a78a073eb9f111d5765
Boot ID: 848c64cbc5d942d2a7064fbf42540590
Virtualization: vmware
Operating System: CentOS Linux 7 (Core)
CPE OS Name: cpe:/o:centos:centos:7
Kernel: Linux 3.10.0-693.el7.x86_64
Architecture: x86-64
hostname ホスト名
でホスト名を変更できますが、再起動すると元に戻ります。
設定ファイルとしては/etc/hostnameがあるのですが、ここが反映されません。
恒久的に変更する場合は、
hostnamectl set-hostname --static ホスト名
で設定。これで/etc/hostnameにも反映されます。
また、
HOSTNAME=ホスト名
と記載しても反映されます。クラウドでのオーダーなんかだとデフォでこのファイルに記載されている場合があります。
まあどっちゃでもいいでしょう。
■IP設定(NetworkManager使用)
設定はnmcliコマンドか、GUI設定ツールのnmtuiを使う方法があります。
・nmcliコマンド
systemctl start NetworkManager
でサービス起動。
systemctl start NetworkManager
でネットワークの確認。
[root@host01 ~]# nmcli
ens160: 接続済み to ens160
"VMware VMXNET3 Ethernet Controller"
ethernet (vmxnet3), 00:50:56:8D:FF:13, hw, mtu 1500
ip4 デフォルト
inet4 192.168.1.100/24
inet6 fe80::250:56ff:fe8d:ff13/64
lo: 管理無し
"lo"
loopback (unknown), 00:00:00:00:00:00, sw, mtu 65536
既知のデバイスに関する情報を取得するには、"nmcli device show" を使用します。
アクティブな接続プロファイルの概要を取得するには、"nmcli connection show" を使用します。
使用方法の詳細情報については、nmcli(1) と nmcli-examples(5) の man ページを参照してください。
ご丁寧にオプションの説明書いてくれてる。。
nmcli device show
nmcli connection show
でネットワークデバイスの確認ができます。
nmcli c modify eth0 ipv4.addresses 192.168.1.100/24
でeth0のIP設定。
nmcli c modify eth0 ipv4.gateway 192.168.1.1
でデフォゲ設定。
nmcli c modify eth0 ipv4.dns 192.168.1.10
でDNSの設定。
nmcli connection reload
で設定を反映。
ここでの設定は/etc/sysconfig/network-scripts/ifcfg-eth0に記述されます。
・nmtui
次は、nmtuiでの設定です。
TUIで接続の編集やホスト名変更が可能です。
設定項目みながらポチポチできます。
こんな感じ。
■IP設定(ファイル編集)
「NetworkManagerなんか必要ねぇんだよ!」て人もいると思うので、従来の方法も載せときます。
ip a
でアドレスなどの確認。インストールすればifconfigも使えますが、慣れればこっちの方が楽です。
/etc/sysconfig/network-scripts/ifcfg-eth0
を編集して設定。eth0は該当するデバイス名です。
NICが追加されるとそのデバイスの名前をつけた設定ファイルを作成しないといけません。そこは面倒ですね。
よくわからんパラメータが沢山ありますが、基本的に以下のパラメータがあれば大丈夫かなと。
DEVICE=eth0
ONBOOT=yes #OS起動時に有効化
TYPE=Ethernet
BOOTPROTO=none #直接IPを指定
IPADDR=192.168.1.100
PREFIX=24
NM_CONTROLLED=NO #NetworkManagerを使用しない
IPv6使わない場合は項目ごと消しちゃって大丈夫です。
PREFIXの箇所は、
NETMASK=255.255.255.0
のように記述することもできます。
また、IPエイリアスを設定したい場合は
IPADDR1=192.168.1.111
PREFIX1=24
のように追記することで設定できます。
デフォルトゲートウェイの設定は
GATEWAY=192.168.1.1
DEFROUTE=yes
と追記することで設定はできるのですが、NICが複数あったりする場合は以下のファイル1つに記述しておく方がいいです。
GATEWAY=192.168.1.1
ファイル編集後、サービス再起動。
systemctl restart network
■Bonding設定
複数NICを使ってLAGのインターフェースを組む場合です。チーミングだのbondingだのLAGだの名称を統一してくれ(小声)
・bondingモジュールのインストール
[root@host01 ~]# modprobe --first-time bonding
・bondingの種類
一応種類をまとめておきます。
mode=0 : balance-rr
⇒ラウンドロビンによる負荷分散。bondingを組んでいるすべてのインタフェースで受信。
mode=1 : active-backup
⇒active/backupの方式。activeポートが使用できなくなると、backupポートがactiveポートになる。
mode=2 : balance-xor
⇒送信元/宛先情報を元に負荷分散。情報はxmit_hash_policyによって設定。bondingを行っているすべてのインタフェースで受信。
mode=3 : broadcast
⇒すべてのインタフェースから同じパケットを送信。bondingを行っているすべてのインタフェースで受信。
mode=4 : 802.3ad
⇒LACP(Link Aggregation Control Protocol:リンクアグリゲーションの接続を確立させるプロトコル)を使用。情報はxmit_hash_policyによって設定可能。送信元/宛先情報を元に負荷分散を行い、受信はLACPでネゴシエーションが取れたインタフェースで行う。
mode=5 : balance-tlb
⇒スレーブインタフェースの負荷によって負荷分散され、送信。bondingを行っているすべてのインタフェースで受信。
mode=6 : balance-alb
⇒スレーブインタフェースの負荷によって負荷分散され、送信。受信は負荷に応じて変更。
・設定・確認
全体確認↓
[root@host01 ~]# ls /proc/net/bonding/
bond0 bond1 bond2
IFの確認。eth0と1でActive/Standby(mode1)でeth0をprimaryにしてbond0を組む場合。↓
[root@host01 ~]# cat /proc/net/bonding/bond0
Ethernet Channel Bonding Driver: v3.7.1 (April 27, 2011)
Bonding Mode: fault-tolerance (active-backup)
Primary Slave: None
Currently Active Slave: eth0
MII Status: up
MII Polling Interval (ms): 100
Up Delay (ms): 10000
Down Delay (ms): 0
Slave Interface: eth0
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 1
Permanent HW addr: 68:05:ca:e0:b4:1e
Slave queue ID: 0
Slave Interface: eth1
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 1
Permanent HW addr: 68:05:ca:e0:b4:1f
Slave queue ID: 0
[root@host01 ~]#
IFの確認。eth0と1でmode4でbond0を組む場合。
[root@host01 ~]# cat /proc/net/bonding/bond0
Ethernet Channel Bonding Driver: v3.7.1 (April 27, 2011)
Bonding Mode: IEEE 802.3ad Dynamic link aggregation
Transmit Hash Policy: layer2 (0)
MII Status: up
MII Polling Interval (ms): 100
Up Delay (ms): 0
Down Delay (ms): 0
802.3ad info
LACP rate: fast
Min links: 0
Aggregator selection policy (ad_select): stable
System priority: 65535
System MAC address: b4:96:91:c1:XX:XX
Active Aggregator Info:
Aggregator ID: 9
Number of ports: 2
Actor Key: 21
Partner Key: 32769
Partner Mac Address: 00:23:04:ee:XX:XX
Slave Interface: eth0
MII Status: up
Speed: 25000 Mbps
Duplex: full
Link Failure Count: 88
Permanent HW addr: b4:96:91:c1:XX:XX
Slave queue ID: 0
Aggregator ID: 9
Actor Churn State: none
Partner Churn State: none
Actor Churned Count: 1
Partner Churned Count: 2
details actor lacp pdu:
system priority: 65535
system mac address: b4:96:91:c1:XX:XX
port key: 21
port priority: 255
port number: 1
port state: 63
details partner lacp pdu:
system priority: 8192
system mac address: 00:23:04:ee:XX:XX
oper key: 32769
port priority: 32768
port number: 257
port state: 63
Slave Interface: eth1
MII Status: up
Speed: 25000 Mbps
Duplex: full
Link Failure Count: 5
Permanent HW addr: b4:96:91:c1:XX:XX
Slave queue ID: 0
Aggregator ID: 9
Actor Churn State: none
Partner Churn State: none
Actor Churned Count: 0
Partner Churned Count: 0
details actor lacp pdu:
system priority: 65535
system mac address: b4:96:91:c1:XX:XX
port key: 21
port priority: 255
port number: 2
port state: 63
details partner lacp pdu:
system priority: 8192
system mac address: 00:23:04:ee:XX:XX
oper key: 32769
port priority: 32768
port number: 16641
port state: 63
[root@host01 ~]#
設定はコンフィグファイルで行います.(一応nmcliを推奨のようですが...)
スレーブはファイル名とDEVICEの値以外は両方同じ設定。↓
DEVICE=eth0(1)
TYPE=Ethernet
ONBOOT=yes
BOOTPROTO=none
NM_CONTROLLED=no
MASTER=bond0
SLAVE=yes
DEVICE=bond0
TYPE=Bond
BONDING_MASTER=yes
ONBOOT=yes
BOOTPROTO=none
NM_CONTROLLED=no
BONDING_OPTS="mode=1 miimon=100 primary=eth0 updelay=10000"
mode4なら、BONDING_OPTS="mode=4 lacp_rate=1"
。
ちなみにVLANを設定したい場合は、/etc/sysconfig/network
にVLAN=yes
を追記してVLANを有効化した上で、
ifcfg-XXXファイル名に.VLAN番号をつけて作成。(このファイルにVLAN=yesを入れてもよい。)↓
DEVICE=bond0.1111
TYPE=Bond
BONDING_MASTER=yes
ONBOOT=yes
BOOTPROTO=static
NM_CONTROLLED=no
IPADDR=10.11.0.2
PREFIX=24
IPV6INIT=no
VLAN=yes
■Bridge設定
仮想ブリッジ ⇒ ホストLinux上に仮想的なL2スイッチを構成する機能
ホストLinuxの物理NICを仮想ブリッジに接続し、L2スイッチを経由してVMを外部ネットワークに接続します。VMには、外部ネットワークと同じサブネットのIPアドレスをアサインする必要があります。通信フローとしては、
VMの仮想NIC ⇒ ホストLinux側のTAPデバイス ⇒ 仮想ブリッジ ⇒ ホストの物理NIC ⇒ 外部NW
同じ仮想ブリッジに接続されたVM同士は、仮想ブリッジを経由して通信することが可能です。
確認↓
[root@host01 ~]$ brctl show
bridge name bridge id STP enabled interfaces
br2222 8000.b026286cdb90 no bond0.2222
vnet0
br3333 8000.20040ffaf61c no eth2
vnet1
virbr0 8000.525400e0da30 yes virbr0-nic
設定はコンフィグファイルで行う.(一応nmcliを推奨のようだが...)
ホストサーバにもアドレスを振る場合はここ。↓
DEVICE=br2222
TYPE=Bridge
ONBOOT=yes
BOOTPROTO=static
IPADDR=10.11.10.200
PREFIX=24
物理NICと仮想ブリッジを接続する。
bondingの場合、ブリッジファイルをここで指定↓
DEVICE=bond0.2222
TYPE=Bond
BONDING_MASTER=yes
ONBOOT=yes
BOOTPROTO=none
NM_CONTROLLED=no
IPV6INIT=no
BRIDGE=br2222
bondingでない場合はifcfg-ethXの物理IFのファイルでBRIDGE=brXXXX
を指定すればよい。
■静的経路の追加
route add -net 192.168.99.0/24 gw 192.168.0.254 eth0
route add -net IPアドレス/サブネット gw 宛先ルータアドレス 発信するデバイス名
で一時的に追加できます。またip routeコマンドでも設定できますが、これらは再起動すると消えます。
恒久的に追加する場合は
192.168.9.0/24 via 192.168.0.254 dev eth0
と記述。
ファイルで既に指定しているので、dev eth0は省略できます。
ip route
でルーティングテーブル確認。
■パケットキャプチャ
tcpdumpが入っていればパケットのキャプチャを取得できます。
tcpdump -i eth1 port 53 -nn -s 0 -tttt
eth1インターフェースを通過するポート53のトラフィックをキャプチャし、その内容をタイムスタンプ付きで表示
■DNS設定
ifcfgファイルに記述することもできますが、/etc/resolv.confに記述するのが一般的です。
nameserver 10.70.71.107
nameserver 10.70.71.108
で設定。
nslookup
で確認。コマンドがない場合は、yumなどでbind-utilsをインストールするか、
dig
,host
コマンドでも名前解決を調べられます。
dig -b 192.168.0.1 @10.0.0.1 www.google.co.jp +tries=1
192.168.0.1を送信元として、DNSのクエリを10.0.0.1のDNSサーバーに送信し、www.google.co.jpドメインのIPアドレスを取得しようとする。
+tries=1のオプションでDNSサーバーへのクエリ再試行の回数を1回のみの試行でドメインのIPアドレスを取得します。
アドレスだけ返して欲しい場合は以下
dig +short @参照先DNSサーバIP XXX.com
■CONNECTION状態
必須級。
netstat -nplt
-n
: IPアドレスとポート番号を数値形式で表示。DNSの逆引きなどは行われず、IPアドレスとポート番号をそのまま表示。
-p
: 各接続やソケットに紐付いているプログラム名(プロセス名)を表示。ポート番号とプロトコルの組み合わせをプロセスにマッピングするために使用。
-l
: リスニング(Listen)状態のソケットや接続を表示。つまりローカルマシンが他のマシンからの接続を受け入れるために待機しているポート。
-t
: TCP接続を表示
-u
: UDP接続を表示
後継としてssコマンドもある。
ss -antp
-a
:LISTEN,NOLISTEN両方の情報を表示。-lでListenのみ
-n
:アドレスやポートを数値で表示
-t
:TCP接続を表示
-p
:プロセス名を表示
■HTTPS通信確認
openssl s_client -connect xxxx.com:443
openssl s_client
: OpenSSLコマンドでSSL/TLSクライアントを起動
-connect xxxx.com:443
: 接続先のホスト名とポート番号を指定
このコマンドを実行すると、指定されたホストとポート上のサーバーに対してSSL/TLS接続が試みられる。
接続が成功すると、サーバーの証明書情報や使用されるSSL/TLSバージョンなどの詳細な情報が表示される。
ちなみに証明書ファイルの内容を表示したい場合は以下
openssl x509 -in xxxx.crt -text -noout
■cURL確認
curl "http://xxxx.com/zzz"
-L
:リダイレクトがあればリダイレクト先の情報を取得
-s
:進捗状況を非表示。-sSとすることが多い
-S
:エラーは表示。-sSとすることが多い
-v
:詳細ログを出力
-I
:HTTPレスポンスヘッダを取得
-k
:SSL接続で証明書エラーをスキップ
-O
:ダウンロード
curl ifconfig.me
使用しているグローバルアドレスを確認できる便利コマンド