独り言


VirtualBox ネットワークの設定

ページトップへ


前回までにVirtualBox のインストールとCentOS7 のインストールが完了していると思います。
今回は、ネットワークの設定を行っていきます。
アダプター1:「NAT」⁼ ゲストOSからWANへの接続、HTTP、HTTPS、SSH接続を設定します。
アダプター2:「ホストオンリーアダプター」= ホストOS<=>ゲストOS間の接続を設定します。
今回の想定では特に必要ありませんが、ホストOS側でIISを使用している。
ゲストOSを複数立ち上げる等の場合には必要になりますので、設定しておきます。


  1. VirtualBox のネットワーク設定

    • ます、今開いているターミナルウィンドウを閉じます。操作の選択ウィンドウが開きますので、「仮想マシンの電源オフ」をチェックして「OK」ボタンをクリックします。
    • ターミナルウィンドウが閉じたら、仮想マシンの設定を開きます。ネットワークを選択します。「アダプター1」で、「割り当て」NAT、高度をクリックしてメニューを展開します。「ポートフォワーディング」をクリックして下さい。
    • ポートフォワーディングルールが開きますので、右上にあるグリーンの「+」ボタンをクリックして、ホストIP「127.0.0.1」で80(HTTP)、443(HTTPS)、22(SSH)を追加します。「OK」ボタンをクリックします。
    • 次に「アダプター2」を選択します。割り当てで「ホストオンリーアダプター」を選択します。「OK」ボタンをクリックして、一度設定を閉じます。(この作業は不要です。)
    • windowsボタンを右クリック->ネットワーク接続->ネットワークと共有センター->アダプター設定の変更をたどり、「VirtualBox Host-Only Network」が表示されていることを確認してください。表示されていない場合は、前記作業を再度確認してください。

    Windowsのコマンドプロンプトを立ち上げます。「ipconfig」と入力し、ネットワークの設定を確認します。
    以下のように表示がされます。(ネットワークの構成により、Wi-Fiのアダプターが表示されたりします。)以下の例では、自分のPCは、192.168.203.20 のアドレスが割り振られ、ホストオンリーアダプターには192.168.56.1が設定されている事がわかります。

    C:\User\myname> ipconfig
    Windows IP 構成
    イーサネット アダプター ローカル エリア接続:
     接続固有の DNS サフィックス . . . . .:
     IPv4 アドレス . . . . . . . . . . . .: 192.168.203.20
     サブネット マスク . . . . . . . . . .: 255.255.255.0
     デフォルト ゲートウェイ . . . . . . .: 192.168.203.1
    イーサネット アダプター VirtualBox Host-Only Network:
     接続固有の DNS サフィックス . . . . .:
     リンクローカル IPv6 アドレス. . . . .: fe80::b534:d8aa:34da:f21f%10
     IPv4 アドレス . . . . . . . . . . . .: 192.168.56.1
     サブネット マスク . . . . . . . . . .: 255.255.255.0
     デフォルト ゲートウェイ . . . . . . .:
    Tunnel adapter Teredo Tunneling Pseudo-Interface:
     接続固有の DNS サフィックス . . . . .:
     IPv6 アドレス . . . . . . . . . . . .: 2001:0:4137:9e76:97:222c:3f57:34eb
     リンクローカル IPv6 アドレス. . . . .: fe80::97:222c:3f57:34eb%9
     デフォルト ゲートウェイ . . . . . . .: ::
    
  2. CentOS7 のネットワーク設定

    次に、CentOS のネットワークを確認します。仮想マシンを立ち上げて、「root」ユーザーでログインしてください。「ip addr」と入力します。

    [root@localhost ~]# ip addr
    1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1
        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: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
        link/ether 08:00:27:90:14:a6 brd ff:ff:ff:ff:ff:ff
        inet 10.0.2.15/24 brd 10.0.2.255 scope global dynamic enp0s3
           valid_lft 85043sec preferred_lft 85043sec
        inet6 fe80::e3b2:bc3d:af9c:ffd4/64 scope link 
           valid_lft forever preferred_lft forever
    3: enp0s8: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
        link/ether 08:00:27:1b:bd:11 brd ff:ff:ff:ff:ff:ff
        inet 192.168.56.125/24 brd 192.168.56.255 scope global enp0s8
           valid_lft forever preferred_lft forever
        inet6 fe80::e48a:6a4f:ee67:b1a4/64 scope link 
           valid_lft forever preferred_lft forever
    

    2: enp0s3(環境によって異なります。)を確認します。ここでは「10.0.2.15」というipアドレスが割り振ら手ています。アダプター1でNATを選択した場合、だいたいこのアドレスが割り当てられます。

    3:emp0s8はホストオンリーアダプターとなっています。ここでは、「192.168.56.125/24」というアドレスが割り当てられています。先ほどWindows 側で確認したアドレス「192.168.56.1」と192.168.56までが同じになっています。

    上記のようになっていない場合は、設定を修正します。同じになっている場合は修正は不要ですので、疎通の確認に進んでください。

    ディレクトリーを移動しまます。
    [root@localhost ~]# cd /etc/sysconfig/network-scripts
    
    ディレクトリー内のファイルを確認します。
    [root@localhost network-scripts]# ls
    ifcfg-enp0s3      ifdown-Team      ifdown-eth      ifdown-ipv6      ifdown-ppp
    ifcfg-lo          ifdown           ifdown-bnep     ifdown-ippp      ifup
    ifdown-TeamPort   ifdown-ib        ifdown-isdn     ifdown-routes
    

    enp0s3 用の設定ファイル「ifcfg-enp0s3」が確認できます。
    編集には、vi エディタを使用します。必要最低限の操作方法は以下の通りです。

    ■viエディターの基本的な使い方

    編集モード

    操作 動作
    カーソルが右に移動
    カーソルが左に移動
    カーソルが次の行に移動
    カーソルが前の行に移動
    i カーソルのある場所から編集を開始
    a カーソルのある次の文字の後から編集を開始
    Esc 編集モードからコマンドモードへ変更

    コマンドモード

    操作 動作
    :set number 行番号の表示
    :w + Enter 文書の保存
    :q + Enter 文書を閉じる
    :wq + Enter 文書を保存して閉じる
    :q! + Enter 文書を強制的に閉じます。変更を反映したくない場合などに便利です。

    ※他にも様々な使い方がありますので、興味のある方は調べてみてください。

    ◆enp0s3 がおかしい時

    「ip addr」コマンドで正しくアドレスが割り当てられているか確認してください。

    設定ファイルを開きます。
    [root@localhost network-scripts]# vi ifcfg-enp0s3
    以下のような内容が表示されます。
    TYPE=Ethernet 
    PROXY_METHOD=none
    BROWSER_ONLY=no
    BOOTPROTO=dhcp
    DEFROUTE=yes
    IPV4_FAILURE_FATAL=no
    IPV6INIT=yes
    IPV6_AUTOCONF=yes
    IPV6_DEFROUTE=yes
    IPV6_FAILURE_FATAL=no
    IPV6_ADDR_GEN_MODE=stable-privacy
    NAME=enp0s3
    UUID=713e6650-e55e-4860-9d89-59405688c864
    DEVICE=enp0s3
    ONBOOT=no <=ここを「yes」に修正します。
    ONBOOT=yes
    ONBOOT=yes は起動時にインターフェースを有効にする設定です。他はこのままで構いません。
    「:wq」+ 「Enter」で保存してください。次にネットワークを再起動します。
    [root@localhost network-scripts]# systemctl restart network             
    
    ◆enp0s8がおかしい時

    通常は、enp0s8用の設定ファイル「ifcfg-enp0s8」は存在していないと思います。ifcfg-enp0s3をコピーして編集します。

    設定ファイルをコピーします。
    [root@localhost network-scripts]# cp ifcfg-enp0s3 ifcfg-enp0s8
    
    ネットワークの情報を確認します。
    [root@localhost network-scripts]# nmcli connection show
    名前        UUID                                  タイプ          デバイス 
    enp0s3      713e6650-e55e-4860-9d89-59405688c864  802-3-ethernet  enp0s3   
    有線接続 1  17457336-6b6f-3cce-b06c-ddf0e9e34b5b  802-3-ethernet  enp0s8
    [root@localhost network-scripts]# nmcli
    enp0s3: 接続済み to enp0s3
            "Intel 82540EM Gigabit Ethernet Controller (PRO/1000 MT Desktop Adapter)"
            ethernet (e1000), 08:00:27:8A:C3:B3, hw, mtu 1500
            ip4 デフォルト
            inet4 10.0.2.15/24
            inet6 fe80::ac33:3c2f:e976:60fd/64
    enp0s8: 接続済み to 有線接続 1
            "Intel 82540EM Gigabit Ethernet Controller (PRO/1000 MT Desktop Adapter)"
            ethernet (e1000), 08:00:27:52:CA:EE, hw, mtu 1500
            inet4 xxx.xxx.xxx.xxx/24
            inet6 fe80::ae7f:bfbb:4b4f:4e16/64
    lo: 管理無し
            "lo"
            loopback (unknown), 00:00:00:00:00:00, sw, mtu 65536
    
    設定ファイルを開きます。
    [root@localhost network-scripts]# vi ifcfg-enp0s8
    
    以下のように内容を修正します。
    HWADDR=08:00:27:52:CA:EE <=先ほど調べたMACアドレスを追加します
    TYPE=Ethernet
    PROXY_METHOD=none
    BROWSER_ONLY=no
    BOOTPROTO=dhcp
    DEFROUTE=yes <=ここをnoに変更します。
    DEFROUTE=no
    IPV4_FAILURE_FATAL=no
    IPV6INIT=yes
    IPV6_AUTOCONF=yes
    IPV6_DEFROUTE=yes
    IPV6_FAILURE_FATAL=no
    IPV6_ADDR_GEN_MODE=stable-privacy
    NAME=enp0s3
    UUID=713e6650-e55e-4860-9d89-59405688c864 <=先ほど調べたUUIDにします。
    UUID=17457336-6b6f-3cce-b06c-ddf0e9e34b5b
    DEVICE=enp0s3 <=デバイスを変更します。
    DEVICE=enp0s8
    ONBOOT=yes
    
    「:wq」+ 「Enter」で保存してください。次にネットワークを再起動します。
    [root@localhost network-scripts]# systemctl restart network             
    

    「ip addr」コマンドで正しくアドレスが割り当てられているか確認してください。どうしてもアドレスがうまく割り振られない場合は、以下を設定してみてください。

    • BOOTPROTO=static
    • IPADDR=192.168.56.101
    • NETMASK=255.255.255.0
  3. 疎通の確認

    pingで疎通の確認をします。Windows と違い「Ctrl」+「c」を押すまで延々と続きますので、疎通が確認出来たらCtrl」+「c」を押してください。
    自分のPCのアドレスと、10.0.2.2を確認します。疎通の確認が取れたらネットワークの設定は完了です。

    仮想ルーターとの疎通を確認します。
    [root@localhost network-scripts]# ping 10.0.2.2
    PING 10.0.2.2 (10.0.2.2) 56(84) bytes of data.
    64 bytes from 10.0.2.2: icmp_seq=1 ttl=64 time=0.099 ms
    64 bytes from 10.0.2.2: icmp_seq=2 ttl=64 time=0.412 ms
    64 bytes from 10.0.2.2: icmp_seq=3 ttl=64 time=0.386 ms
    ^C
    --- 10.0.2.2 ping statistics ---
    3 packets transmitted, 3 received, 0% packet loss, time 2000ms
    rtt min/avg/max/mdev = 0.099/0.299/0.412/0.141 ms 
    
    ホストOSとの疎通を確認します。
    [root@localhost network-scripts]# ping 192.168.203.20
    PING 192.168.203.20 (192.168.203.20) 56(84) bytes of data.
    64 bytes from 192.168.203.20: icmp_seq=1 ttl=127 time=0.385 ms
    64 bytes from 192.168.203.20: icmp_seq=2 ttl=127 time=1.24 ms
    64 bytes from 192.168.203.20: icmp_seq=3 ttl=127 time=1.12 ms
    ^C
    --- 192.168.203.20 ping statistics ---
    3 packets transmitted, 3 received, 0% packet loss, time 2002ms
    rtt min/avg/max/mdev = 0.385/0.919/1.247/0.381 ms
    

    ネットワークが正しく設定されているのにping が通らない場合は、ルートを確認します。
    正しく設定されている場合はdefault は一つだけです。

    ルートを表します。
    [root@localhost ~]# ip route
    default via 10.0.2.2 dev enp0s3 proto static metric 100
    10.0.2.0/24 dev enp0s3 proto kernel scope link src 10.0.2.15 metric 100
    default via 192.168.56.1 dev enp0s8 proto static metric 100
    192.168.56.0/24 dev enp0s8 proto kernel scope link src 192.168.56.101 metric 100
    
    default が2つ存在する場合は、192.168 のdefault を削除します。
    [root@localhost ~]# ip route del 192.168.56.1/24
    
  4. SELinux の停止と Firewalld の設定

    構築している環境では、外部からの接続はできませんので、ファイアーフォールの設定とSELinux を停止します。

    SELinuxの状態を確認します。
    [root@localhost ~]# getenforce
    Enforcing
    
    設定ファイルを開きます。
    [root@localhost ~]# vi /etc/selinux/config
    
    設定を修正します。
    # This file controls the state of SELinux on the system.
    # SELINUX= can take one of these three values:
    #     enforcing - SELinux security policy is enforced.
    #     permissive - SELinux prints warnings instead of enforcing.
    #     disabled - No SELinux policy is loaded.
    SELINUX=enforcing この行を修正します。
    SELINUX=disabled
    # SELINUXTYPE= can take one of three two values:
    #     targeted - Targeted processes are protected,
    #     minimum - Modification of targeted policy. Only selected processes are protected.
    #     mls - Multi Level Sec
    
    ファイアーウォールを設定します。今回は、httpとhttpsを開放します。
    1.現在のゾーンを確認します。
    [root@localhost ~]# firewall-cmd --get-active-zones                                                                                                                                     
    public
      interfaces: enp0s3 enp0s8
    
    2.現在の設定を確認します。
    [root@localhost ~]#  firewall-cmd --list-all --zone=public
    public (active)
      target: default
      icmp-block-inversion: no
      interfaces: enp0s3 enp0s8
      sources: 
      services: ssh dhcpv6-client <=ssh と dhcpv6-client だけが開放されている。
      ports: 
      protocols: 
      masquerade: no
      forward-ports: 
      source-ports: 
      icmp-blocks: 
      rich rules: 
    
    3.http、httpsは許可されていないので追加します。他に必要なサービスがあれば追加します。
    --permanent は恒久的に追加する為のオプションです。 
    [root@localhost ~]#  firewall-cmd --add-service=http --zone=public --permanent
    [root@localhost ~]#  firewall-cmd --add-service=https --zone=public --permanent       
    
    4.firewall をリロードして設定を確認します。 
    [root@localhost ~]#  firewall-cmd --reload
    success
    [root@localhost ~]#  firewall-cmd --list-all --permanent --zone=public
    public
      target: default
      icmp-block-inversion: no
      interfaces: <=恒久化された設定を見ているので interfaces は表示されません。 
      sources: 
      services: ssh dhcpv6-client http https <= httpとhttpsが追加されています。
      ports: 
      protocols: 
      masquerade: no
      forward-ports: 
      source-ports: 
      icmp-blocks: 
      rich rules: 
    
    再起動します。
    [root@localhost ~]# reboot
    

    再起動後、設定を確認します。

    [root@localhost ~]# getenforce
    Disabled <=無効化されている
    
    
    • 設定後の通信のイメージは図のようになります。ホストOS側からゲストOS(CentOS7)への通信は、「10.0.2.1」のアドレスが振られます。
wordprass