モーダルを閉じる工作HardwareHub ロゴ画像

工作HardwareHubは、ロボット工作や電子工作に関する情報やモノが行き交うコミュニティサイトです。さらに詳しく

利用規約プライバシーポリシー に同意したうえでログインしてください。

VyOS の基本設定 (DHCP/DNS/NAT/Firewall/その他)

モーダルを閉じる

ステッカーを選択してください

お支払い手続きへ
モーダルを閉じる

お支払い内容をご確認ください

購入商品
」ステッカーの表示権
メッセージ
料金
(税込)
決済方法
GooglePayマーク
決済プラットフォーム
確認事項

利用規約をご確認のうえお支払いください

※カード情報はGoogleアカウント内に保存されます。本サイトやStripeには保存されません

※記事の執筆者は購入者のユーザー名を知ることができます

※購入後のキャンセルはできません

作成日作成日
2017/01/18
最終更新最終更新
2021/09/07
記事区分記事区分
一般公開

VirtualBox へのインストール方法を把握した VyOS について、DHCP/DNS/NAT/Firewall 等の基本的な設定方法をまとめます。

設定方法を検証するための構成

VirtualBox のゲスト OS として VyOS 用の VM を二つ用意します。

ホスト OS の所属するネットワーク
<--NAT--> eth0 | ゲスト vyos-0001 (VirtualBox) | eth1
<--内部ネットワーク--> eth0 | ゲスト vyos-0002 (VirtualBox)

vyos-0001 は eth0 経由でホスト OS の所属するネットワークから直接 ssh 接続できるようにします。そのための方法は様々ですが、ここでは eth0 に対応するアダプター 1 を VirtualBox の NAT で設定することにします。vyos-0002 はホスト OS の所属するネットワークとは直接通信できず、vyos-0001 を介して通信するようにします。そのために、vyos-0001 の eth1 と vyos-0002 の eth0 は VirtualBox の「内部ネットワーク」として設定します。

vyos-0001

vyos-0002

DHCP 設定

vyos-0001 を eth1 側の内部ネットワークにおける DHCP サーバとして設定します。

vyos-0001 の eth1 に固定 IP を設定

ネットワークアダプタ 1 に対応する eth0 は「NAT」設定のため、VirtualBox が提供する仮想 DHCP サーバによって IP が自動的に割り当てられます。一方、ネットワークアダプタ 2 に対応する eth1 は「内部ネットワーク」設定のため DHCP が存在しません。vyos-0001 自身を DHCP サーバおよび後述の DNS サーバ、NAT サーバとして機能させる都合上、eth1 には固定 IP を割り当てます。内部ネットワークのアドレスは 192.168.200.0/24 として設定することにします。

vyos-0001

vyos@myhostname# set interfaces ethernet eth1 address 192.168.200.1/24
vyos@myhostname# show interfaces
 ethernet eth0 {
     address dhcp
     duplex auto
     hw-id 08:00:27:8c:9a:7b
     smp_affinity auto
     speed auto
 }
 ethernet eth1 {
+    address 192.168.200.1/24
     hw-id 08:00:27:2f:b1:85
 }
 loopback lo {
 }
vyos@myhostname# commit
vyos@myhostname# save

vyos-0001 の DHCP サービスを有効化

以下のコマンドで vyos-0001 の DHCP サービスを開始します。eth1 側の DHCP サーバとして機能させることを意図しています。DHCP クライアントに対して 192.168.200.100 から 192.168.200.199 の IP を割り当て、ネットワークのデフォルトゲートウェイおよび DNS サーバとして vyos-0001 の IP を返します。

vyos@myhostname# set service dhcp-server shared-network-name MY_SUBNET subnet 192.168.200.0/24
vyos@myhostname# set service dhcp-server shared-network-name MY_SUBNET subnet 192.168.200.0/24 start 192.168.200.100 stop 192.168.200.199
vyos@myhostname# set service dhcp-server shared-network-name MY_SUBNET subnet 192.168.200.0/24 default-router 192.168.200.1
vyos@myhostname# set service dhcp-server shared-network-name MY_SUBNET subnet 192.168.200.0/24 dns-server 192.168.200.1
vyos@myhostname# show service
+dhcp-server {
+    shared-network-name MY_SUBNET {
+        subnet 192.168.200.0/24 {
+            default-router 192.168.200.1
+            dns-server 192.168.200.1
+            start 192.168.200.100 {
+                stop 192.168.200.199
+            }
+        }
+    }
+}
vyos@myhostname# commit
vyos@myhostname# save

eth0 側の DHCP サーバとして機能しないことは以下のコマンドで確認できます。/var/log/messages から DHCP に関するログを切り出して確認できます。

vyos@myhostname:~$ show log dhcp
Jan 25 08:11:18 myhostname dhcpd: No subnet declaration for eth0 (10.0.2.15).
Jan 25 08:11:18 myhostname dhcpd: ** Ignoring requests on eth0.  If this is not what
Jan 25 08:11:18 myhostname dhcpd:    you want, please write a subnet declaration
Jan 25 08:11:18 myhostname dhcpd:    in your dhcpd.conf file for the network segment
Jan 25 08:11:18 myhostname dhcpd:    to which interface eth0 is attached. **

設定ファイルを直接確認してみます。確かに subnet 192.168.200.0 の設定しか存在しません。

vyos@myhostname:~$ cat /opt/vyatta/etc/dhcpd.conf 
# generated by /opt/vyatta/sbin/dhcpd-config.pl

ddns-update-style none;
shared-network MY_SUBNET {
        not authoritative;
        subnet 192.168.200.0 netmask 255.255.255.0 {
                option domain-name-servers 192.168.200.1;
                option routers 192.168.200.1;
                default-lease-time 86400;
                max-lease-time 86400;
                range 192.168.200.100 192.168.200.199;
        }
}

vyos-0002 の eth0 の DHCP 割り当て設定

vyos-0002 の eth0 を DHCP で IP 取得するように設定します。以下の実行例では 192.168.200.100 が割り当てられました。

vyos@vyos# set interfaces ethernet eth0 address dhcp
vyos@vyos# commit
vyos@vyos# run show interfaces ethernet eth0
eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 08:00:27:a5:ab:38 brd ff:ff:ff:ff:ff:ff
    inet 192.168.200.100/24 brd 192.168.200.255 scope global eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::a00:27ff:fea5:ab38/64 scope link 
       valid_lft forever preferred_lft forever

    RX:  bytes    packets     errors    dropped    overrun      mcast
         34318        378          0          0          0          0
    TX:  bytes    packets     errors    dropped    carrier collisions
         32084        276          0          0          0          0

vyos@vyos# save

vyos-0001 から vyos-0002 へ SSH するための設定

vyos-0002 における SSH サービス設定を有効にします。

vyos@vyos# set service ssh
vyos@vyos# show service
+ssh {
+    port 22
+}
vyos@vyos# commit
vyos@vyos# save

vyos-0001 から SSH できることを確認します。

vyos@myhostname$ ssh 192.168.200.100
vyos@vyos:~$

vyos-0001 における IP 割り当て状況を確認

vyos-0001

vyos@myhostname:~$ show dhcp server leases 

IP address       Hardware address   Lease expiration     Pool                      Client Name
----------       ----------------   ----------------     ----                      -----------
192.168.200.100  08:00:27:a5:ab:38  2017/03/17 23:22:20  MY_SUBNET                 vyos

vyos@myhostname:~$ show dhcp server statistics 

Pool                      Pool size   # Leased    # Avail
----                      ---------   --------    -------
MY_SUBNET                 100         1           99

vyos-0002

vyos@vyos:~$ show dhcp client leases interface eth0 
interface  : eth0
ip address : 192.168.200.100    [Active]
subnet mask: 255.255.255.0
router     : 192.168.200.1
name server: 192.168.200.1
dhcp server: 192.168.200.1
lease time : 86400
last update: Thu Mar 16 23:22:15 UTC 2017
expiry     : Fri Mar 17 23:22:15 UTC 2017
reason     : RENEW

DHCP による IP の固定割り当て

vyos-0002 の MAC アドレスに対して固定 IP を DHCP で割り当てたい場合は以下のコマンドを実行します。

vyos-0001

vyos@myhostname# set service dhcp-server shared-network-name MY_SUBNET subnet 192.168.200.0/24 static-mapping vyos-0002 ip-address 192.168.200.200
vyos@myhostname# set service dhcp-server shared-network-name MY_SUBNET subnet 192.168.200.0/24 static-mapping vyos-0002 mac-address 08:00:27:a5:ab:38
vyos@myhostname# show service dhcp-server
 disabled false
 shared-network-name MY_SUBNET {
     authoritative disable
     subnet 192.168.200.0/24 {
         default-router 192.168.200.1
         dns-server 192.168.200.1
         lease 86400
         start 192.168.200.100 {
             stop 192.168.200.199
         }
+        static-mapping vyos-0002 {
+            ip-address 192.168.200.200
+            mac-address 08:00:27:a5:ab:38
+        }
     }
 }
vyos@myhostname# commit
vyos@myhostname# save

vyos-0002

vyos@vyos:~$ reboot
vyos@vyos:~$ show dhcp client leases interface eth0 
interface  : eth0
ip address : 192.168.200.200    [Active]
subnet mask: 255.255.255.0
router     : 192.168.200.1
name server: 192.168.200.1
dhcp server: 192.168.200.1
lease time : 86400
last update: Fri Mar 17 04:38:08 UTC 2017
expiry     : Sat Mar 18 04:38:08 UTC 2017
reason     : BOUND

DNS 設定

vyos-0001 を eth1 側の内部ネットワークにおける DNS サーバとして設定します。DNS には二種類あり、ここでは Authoritative サーバではなく Recursive (Caching) サーバとして設定します。

vyos-0001

vyos@myhostname# set service dns forwarding listen-on eth1
vyos@myhostname# show service 
 dhcp-server {
     disabled false
     shared-network-name MY_SUBNET {
         authoritative disable
         subnet 192.168.200.0/24 {
             default-router 192.168.200.1
             dns-server 192.168.200.1
             lease 86400
             start 192.168.200.100 {
                 stop 192.168.200.199
             }
         }
     }
 }
+dns {
+    forwarding {
+        listen-on eth1
+    }
+}
 ssh {
     port 22
 }
vyos@myhostname# commit
vyos@myhostname# save

vyos-0002 で名前解決できることを確認します。

vyos@vyos:~$ host www.example.com
www.example.com has address 93.184.216.34
www.example.com has IPv6 address 2606:2800:220:1:248:1893:25c8:1946

NAT 設定

vyos-0001 を NAT サーバとして設定します。複数の NAT rule が存在する場合、番号の小さい rule から順番に適用されます。また、後述の Firewall が原因で通信に失敗することがあるため注意します。

Source NAT (内部から外部へ)

内部から外部向けの通信を開始するために必要な、送信元 NAT (SNAT) の設定を行います。SNAT は IP マスカレードともよばれます。

vyos-0001

vyos@myhostname# set nat source rule 99 translation address masquerade
vyos@myhostname# set nat source rule 99 source address 192.168.200.0/24
vyos@myhostname# set nat source rule 99 outbound-interface eth0
vyos@myhostname# show nat
+source {
+    rule 99 {
+        outbound-interface eth0
+        source {
+            address 192.168.200.0/24
+        }
+        translation {
+            address masquerade
+        }
+    }
+}
vyos@myhostname# commit
vyos@myhostname# save

vyos-0002

vyos@vyos:~$ ping www.example.com
PING www.example.com (93.184.216.34) 56(84) bytes of data.
64 bytes from 93.184.216.34: icmp_req=1 ttl=61 time=356 ms
64 bytes from 93.184.216.34: icmp_req=2 ttl=61 time=272 ms
64 bytes from 93.184.216.34: icmp_req=3 ttl=61 time=272 ms
...

Destination NAT (外部から内部へ)

外部から内部向けの通信を開始するために必要な、送信先 NAT (DNAT) の設定を行います。今回は eth0 が VirtualBox の DHCP で自動割り当てされています。

vyos-0001

vyos@myhostname# run show interfaces 
Codes: S - State, L - Link, u - Up, D - Down, A - Admin Down
Interface        IP Address                        S/L  Description
---------        ----------                        ---  -----------
eth0             10.0.2.15/24                      u/u
eth1             192.168.200.1/24                  u/u
lo               127.0.0.1/8                       u/u
                 ::1/128

そのため、下記の ★ の設定は省略していますが、固定 IP の場合は設定します。

//vyos@myhostname# set nat destination rule 1 destination address 10.0.2.15 ★
vyos@myhostname# set nat destination rule 1 destination port 10022
vyos@myhostname# set nat destination rule 1 protocol tcp
vyos@myhostname# set nat destination rule 1 translation address 192.168.200.100
vyos@myhostname# set nat destination rule 1 translation port 22
vyos@myhostname# set nat destination rule 1 inbound-interface eth0
vyos@myhostname# show nat
+destination {
+    rule 1 {
+        destination {
+            port 10022
+        }
+        inbound-interface eth0
+        protocol tcp
+        translation {
+            address 192.168.200.100
+            port 22
+        }
+    }
+}
 source {
     rule 99 {
         outbound-interface eth0
         source {
             address 192.168.200.0/24
         }
         translation {
             address masquerade
         }
     }
 }
vyos@myhostname# commit
vyos@myhostname# save

VirtualBox の NAT におけるポートフォワーディングを設定します。


VirtualBox のホスト OS が所属するネットワークから 3333 番で vyos-0002 に直接アクセスできることを確認します。

$ ssh vyos@localhost -p3333
vyos@vyos:~$ 

設定のデバッグ

上記 SNAT および DNAT の両方を設定した場合を特に双方向 NAT とよぶことがあります。複数の rule が存在して設定がうまくいかないときは、以下のコマンドで NAT セッションの情報を確認してデバッグします。

vyos@myhostname:~$ show nat source translations detail
Pre-NAT src          Pre-NAT dst        Post-NAT src         Post-NAT dst
192.168.200.100      93.184.216.34      10.0.2.15            93.184.216.34
  icmp: 192.168.200.100 ==> 10.0.2.15  timeout: 28 use: 1

vyos@myhostname:~$ show nat destination translations detail
Pre-NAT src          Pre-NAT dst        Post-NAT src         Post-NAT dst
10.0.2.2:53487       10.0.2.15:10022    10.0.2.2:53487       192.168.200.100:22
  tcp: 10.0.2.15:10022 ==> 192.168.200.100:22  timeout: 431774 use: 1

Firewall 設定

用語

  • Firewall ルールセットのイーサネットに対する適用方法
    • local 指定した eth から入り、別の eth から出ないパケット (VyOS を宛先とするパケット, iptables の INPUT チェーン)
    • in 指定した eth から入り、別の eth から出るパケット (NAT 変換時などに発生, iptables の FORWARD チェーン)
  • パケットの処理方法
    • accept パケットを受け取る
    • drop パケットを捨てる
    • reject TCP RST を返す

デバッグ方法

現在の設定を確認

vyos@myhostname:~# run show firewall

drop される様子を監視

vyos@myhostname:~# run clear firewall name OUTSIDE-LOCAL counters
vyos@myhostname:~# run clear firewall name OUTSIDE-IN counters
vyos@myhostname:~# run show firewall statistics

設定例

Quick Start Guide を参考にしつつ、ルールセット OUTSIDE-LOCAL および OUTSIDE-IN を vyos-0001 の eth0 に設定します。

local 設定

「ホスト OS が所属するネットワークから vyos-0001 への local 通信」を TCP 22 番のみ許可するようにします。「ホスト OS が所属するネットワークから vyos-0001 を経由する in 通信」の設定は別です。

vyos-0001

vyos@myhostname# set firewall name OUTSIDE-LOCAL default-action drop
vyos@myhostname# set firewall name OUTSIDE-LOCAL rule 10 action accept
vyos@myhostname# set firewall name OUTSIDE-LOCAL rule 10 state established enable
vyos@myhostname# set firewall name OUTSIDE-LOCAL rule 10 state related enable
vyos@myhostname# set firewall name OUTSIDE-LOCAL rule 20 action accept
vyos@myhostname# set firewall name OUTSIDE-LOCAL rule 20 protocol tcp
vyos@myhostname# set firewall name OUTSIDE-LOCAL rule 20 destination port 22
vyos@myhostname# show firewall name
+name OUTSIDE-LOCAL {
+    default-action drop
+    rule 10 {
+        action accept
+        state {
+            established enable
+            related enable
+        }
+    }
+    rule 20 {
+        action accept
+        destination {
+            port 22
+        }
+        protocol tcp
+    }
+}
vyos@myhostname# set interfaces ethernet eth0 firewall local name OUTSIDE-LOCAL
vyos@myhostname# show interfaces ethernet eth0 firewall
+local {
+    name OUTSIDE-LOCAL
+}
vyos@myhostname# commit
vyos@myhostname# save

in 設定

「ホスト OS が所属するネットワークから vyos-0001 を経由する in 通信」を TCP 22 番のみ許可するようにします。vyos-0002 に対する 10022 番の通信の宛先 NAT 変換後は 22 番です。

vyos@myhostname# set firewall name OUTSIDE-IN default-action drop
vyos@myhostname# set firewall name OUTSIDE-IN rule 10 action accept
vyos@myhostname# set firewall name OUTSIDE-IN rule 10 state established enable
vyos@myhostname# set firewall name OUTSIDE-IN rule 10 state related enable
vyos@myhostname# set firewall name OUTSIDE-IN rule 20 action accept
vyos@myhostname# set firewall name OUTSIDE-IN rule 20 protocol tcp
vyos@myhostname# set firewall name OUTSIDE-IN rule 20 destination port 22
vyos@myhostname# show firewall name
+name OUTSIDE-IN {
+    default-action drop
+    rule 10 {
+        action accept
+        state {
+            established enable
+            related enable
+        }
+    }
+    rule 20 {
+        action accept
+        destination {
+            port 22
+        }
+        protocol tcp
+    }
+}
 name OUTSIDE-LOCAL {
     default-action drop
     rule 10 {
         action accept
         state {
             established enable
             related enable
         }
     }
     rule 20 {
         action accept
         destination {
             port 22
         }
         protocol tcp
     }
 }
vyos@myhostname# set interfaces ethernet eth0 firewall in name OUTSIDE-IN
vyos@myhostname# show interfaces ethernet eth0 firewall
+in {
+    name OUTSIDE-IN
+}
 local {
     name OUTSIDE-LOCAL
 }
vyos@myhostname# commit
vyos@myhostname# save

その他の設定

時刻に関する設定

タイムゾーンの設定

既定値は UTC です。必要に応じて JST に変更します。

# show system time-zone
 time-zone UTC
# date
Thu Jan 26 08:05:06 UTC 2017
# set system time-zone Asia/Tokyo
# commit
# save
# show system time-zone
 time-zone Asia/Tokyo
# date
Thu Jan 26 17:07:10 JST 2017

参照する NTP サーバの設定

NTP サーバーの既定値が設定されています。Google Public NTP を追加するには以下のコマンドを実行します。

# set system ntp server time.google.com
# show system ntp
 server 0.pool.ntp.org {
 }
 server 1.pool.ntp.org {
 }
 server 2.pool.ntp.org {
 }
+server time.google.com {
+}
# commit
# save

時刻の同期状況を確認します。

# run show ntp
     remote           local      st poll reach  delay   offset    disp
=======================================================================
=198.60.22.240   10.0.2.15        1   64    1 0.23619  0.002607 0.43311
*121.111.253.121 10.0.2.15        5   64    1 0.12134  0.003877 0.43311
=216.239.35.12   10.0.2.15        2   64    1 0.14035  0.001886 0.43312
=117.102.176.202 10.0.2.15        3   64    1 0.11635  0.001031 0.66150

名前解決に関する設定

参照する DNS サーバの設定

現在の設定を確認します。

# cat /etc/resolv.conf
#nameserver written by vyatta_update_resolv.pl (dhcp)
nameserver      192.168.179.1

Google Public DNS が利用できることを確認します。

# host www.example.com 8.8.8.8
Using domain server:
Name: 8.8.8.8
Address: 8.8.8.8#53
Aliases: 

www.example.com has address 93.184.216.34
www.example.com has IPv6 address 2606:2800:220:1:248:1893:25c8:1946

DNS 設定を追加します。

# set system name-server 8.8.8.8
# commit
# save
# cat /etc/resolv.conf
nameserver      8.8.8.8
#nameserver written by vyatta_update_resolv.pl (dhcp)
nameserver      192.168.179.1

ドメイン名の設定

自分自身のホスト名を設定

# set system host-name myhostname
# commit
# save

設定されたことを確認

# ping myhostname
PING myhostname.sub1.example.com (127.0.1.1) 56(84) bytes of data.
64 bytes from myhostname.sub1.example.com (127.0.1.1): icmp_req=1 ttl=64 time=0.036 ms

自分自身のドメイン名を設定

# set system domain-name sub1.example.com
# commit
# save

設定されたことを確認

# ping myhostname.sub1.example.com
PING myhostname.sub1.example.com (127.0.1.1) 56(84) bytes of data.
64 bytes from myhostname.sub1.example.com (127.0.1.1): icmp_req=1 ttl=64 time=0.046 ms

# cat /etc/resolv.conf
...
domain          sub1.example.com

# cat /etc/hosts
...
127.0.1.1        myhostname.sub1.example.com myhostname  #vyatta entry

同じドメインのホスト名であれば sub1.example.com を省略して名前解決できます。

# ping xxx.sub1.example.com

複数のドメインに対してホスト名だけで名前解決できるように設定することもできます。domain とは併用できないため、設定を削除して search を追加します。

# delete system domain-name
# set system domain-search domain sub1.example.com
# set system domain-search domain sub2.example.com
# commit
# save

設定されたことを確認

# cat /etc/resolv.conf
...
search          sub1.example.com sub2.example.com

自分自身のドメイン名は設定されていません。

# cat /etc/hosts
...
127.0.1.1         myhostname     #vyatta entry

sub1.example.comsub2.example.com がホスト名だけで名前解決できるドメインとして設定されました。両方に存在するホスト名の場合は sub1.example.com が優先されます。

Likeボタン(off)0
詳細設定を開く/閉じる
アカウント プロフィール画像

チーム開発効率化を考え中の日々

記事の執筆者にステッカーを贈る

有益な情報に対するお礼として、またはコメント欄における質問への返答に対するお礼として、 記事の読者は、執筆者に有料のステッカーを贈ることができます。

>>さらに詳しくステッカーを贈る
ステッカーを贈る コンセプト画像

Feedbacks

Feedbacks コンセプト画像

    ログインするとコメントを投稿できます。

    ログインする

    関連記事

    • Ciscoルータの基本操作
      シスコ社の製品のうち、ルータは Cisco*** という製品名でスイッチは Catalyst*** という製品名です。いずれも *** は機種番号で、数字が小さいほど小規模ネットワーク向けとなっています。例えば資格試験 CCNA Routing and Switching では小規模および中規模ネットワークが対象です。そのため、中小規模のネットワークのルータおよびス
    • BIND 9 ゾーンファイル Dynamic Update の設定方法
      DHCP 環境下などで IP が動的に付与される場合は DNS レコードを動的に更新する必要があります。これを実現する Dynamic Update 機能が BIND 9 には実装されています。使用方法をまとめます。Dynamic Update に対応した DNS を特に Dynamic DNS または DDNS とよぶことがあります。 ゾーンファイルの作成 ローカルホストに example.co...
    • VyOS の基本的なルーティング設定
      本ページでは、複数の LAN をつなぐルータとしての設定方法をまとめます。具体的には、スタティックルーティングおよびダイナミックルーティング (RIP/OSPF/BGP)の設定方法を把握します。 設定方法を検証するための構成 ルーティング設定の検証を行うために VirtualBox で 5 台の VM を用意します。ホスト OS から vyos-0001 へ SSH 接続する部分を除き、「内部ネッ...
    • BIND 9.10.2 の公式マニュアルに学ぶ DNS の基本
      DNS の実装としては Internet Systems Consortium (ISC) の Berkeley Internet Name Domain (BIND) が有名です。本ページは公式サイトの Documentation からダウンロードできる v9.10.2 の PDF マニュアルおよび『DNSの仕組み完全解説』から基本事項を抽出してまとめ
    • スタティックルートの設定
      サムネイル画像-73e0bcdf3a
      インターフェイスに IP を設定しただけでは他のデバイスと通信できません。各デバイスにルーティングテーブルを設定する必要があります。ルーティングテーブルの設定方法には動的に自動設定するものと、静的に手動設定するものの二種類があります。ここでは静的に手動設定するスタティックルートの方法を紹介します。 具体的にはまず PC0, PC1, Router0, Router1 それぞれ
      あきらあきら9/7/2021に更新
      いいねアイコン画像0