アドレススコープは、サブネットプールを利用して作成されます。サブネットプールはサブネットへのアドレス割り当てを制御する仕組みを提供するのに対して、アドレススコープはどのアドレスがネットワーク間でルーティング可能かを示します。 1 つのアドレススコープ内で割り当てられたアドレスはすべて重複しないため、 neutron ルーターはテナントネットワーク間や外部ネットワークとの間で NAT を行いません。アドレスのアドレススコープが一致する限り、 Networking サービスはネットワーク間では通常のルーティングを行います。
Networking サービスにアクセスできるユーザーは誰でも自分のアドレススコープを作成できます。一方、ネットワーク管理者は共有のアドレススコープを作成できます。共有のアドレススコープを使うと、他のプロジェクトがそのアドレススコープ内にネットワークを作成できます。
スコープ内のアドレスへのアクセスはサブネットプールを通じて管理されます。サブネットプールをアドレススコープ内に作成することも、サブネットプールを更新してアドレススコープに所属させることもできます。
サブネットプールが複数ある場合、アドレス管理の観点では、そのアドレススコープ内で使用されるすべてのアドレスは一意になります。したがって、プールに所有者が複数おり、アドレススコープの一部の管理を委譲するには、アドレススコープに複数のサブネットプールを追加します。この委譲では、アドレススコープ全体でアドレスの重複は防止されます。 2 つのプールが同じアドレス範囲を持つ場合にはエラーが発生します。
各ルーターインターフェースは、そのインターフェースが接続されたネットワークのサブネットを参照し、アドレススコープと関連付けされます。ルーターをアドレススコープが一致する外部ネットワークに接続した場合、ネットワークトラフィックは NAT (ネットワークアドレス変換) なしでルーティングされます。ルーターは、内部では、各インターフェースからのすべてのトラフィック接続を対応するアドレススコープと関連付けます。トラフィックが間違ったスコープのインターフェースからやって来た場合は、ルーターはそのトラフィックをブロックします。
Mitaka リリースより前に作成されたネットワークは、明示的なアドレススコープを持ちません。ただし、ネットワークのサブネットが、作成、更新されたアドレススコープに属すサブネットプールから作られている場合はこの限りではありません。 Networking サービスは、特別なアドレススコープを使うことで Mitaka リリースより前に作成されたネットワークに対する後方互換性を実現しており、こうしたネットワークでは以下のようなルーティングが行われます。
無制限のアドレス重複が許可されます。
デフォルトでは、Neutron ルーターは、内部ネットワークから外部ネットワークへのトラフィックに対して NAT を行います。
Mitaka リリース以前用のアドレススコープは API 経由では見えません。このスコープはアドレススコープの一覧には出て来ませんし、詳細を見ることもできません。このスコープは、明示的にスコープが指定されていないすべてのアドレスを暗黙のうちに収容するためだけに存在します。
このセクションでは、非特権ユーザーがアドレススコープを使って、外部ネットワークと NAT なしでそのままルーティングする方法を説明します。
サブネットを収容するネットワークを作成します。
$ neutron net-create network1
Created a new network:
+-------------------------+--------------------------------------+
| Field | Value |
+-------------------------+--------------------------------------+
| id | f5a980d9-5521-438e-b831-0ebacba2b372 |
| name | network1 |
| subnets | |
+-------------------------+--------------------------------------+
$ neutron net-create network2
Created a new network:
+-------------------------+--------------------------------------+
| Field | Value |
+-------------------------+--------------------------------------+
| id | 438e4f26-0e45-4b26-9797-57d0bd817953 |
| name | network2 |
| subnets | |
+-------------------------+--------------------------------------+
サブネットプールにもアドレススコープにも関連付けられないサブネットを作成します。
$ neutron subnet-create --name subnet-ip4-1 network1 198.51.100.0/26
Created a new subnet:
+-------------------+--------------------------------------+
| Field | Value |
+-------------------+--------------------------------------+
| cidr | 198.51.100.0/26 |
| id | 48ed5c71-2a1d-4f73-b29e-371deec04d44 |
| name | subnet-ip4-1 |
| network_id | f5a980d9-5521-438e-b831-0ebacba2b372 |
| subnetpool_id | |
+-------------------+--------------------------------------+
$ neutron subnet-create --name subnet-ip6-1 network1 \
--ipv6-ra-mode slaac --ipv6-address-mode slaac \
--ip_version 6 2001:db8:80d2:c4d3::/64
Created a new subnet:
+-------------------+--------------------------------------+
| Field | Value |
+-------------------+--------------------------------------+
| cidr | 2001:db8:80d2:c4d3::/64 |
| id | c9f0bb79-1d7b-435f-b362-05a9a7259aa6 |
| name | subnet-ip6-1 |
| network_id | f5a980d9-5521-438e-b831-0ebacba2b372 |
| subnetpool_id | |
+-------------------+--------------------------------------+
外部ネットワークと同じアドレススコープに関連付けられたサブネットプールを使ってサブネットを作成します。
$ neutron subnet-create --name subnet-ip4-2 \
--subnetpool subnet-pool-ip4 network2
Created a new subnet:
+-------------------+--------------------------------------+
| Field | Value |
+-------------------+--------------------------------------+
| cidr | 203.0.112.0/26 |
| id | deb36645-8d46-4c13-a489-1135174d8a8c |
| name | subnet-ip4-2 |
| network_id | 438e4f26-0e45-4b26-9797-57d0bd817953 |
| subnetpool_id | e2c4f12d-307f-4616-a4df-203a45e6cb7f |
+-------------------+--------------------------------------+
$ neutron subnet-create --name subnet-ip6-2 --ip_version 6 \
--ipv6-ra-mode slaac --ipv6-address-mode slaac \
--subnetpool subnet-pool-ip6 network2
Created a new subnet:
+-------------------+--------------------------------------+
| Field | Value |
+-------------------+--------------------------------------+
| cidr | 2001:db8:a583::/64 |
| id | b157e288-748e-4c4b-9b2e-8b8e65241036 |
| name | subnet-ip6-2 |
| network_id | 438e4f26-0e45-4b26-9797-57d0bd817953 |
| subnetpool_id | 14813344-d11a-4896-906c-e4c378291058 |
+-------------------+--------------------------------------+
アドレススコープに関連付けられたサブネットプールからサブネットを作成することで、そのネットワークはアドレススコープと関連付けられます。
$ neutron net-show network2
+-------------------------+--------------------------------------+
| Field | Value |
+-------------------------+--------------------------------------+
| id | 4f677ab6-32a1-452c-8feb-b0b6b7ed1a0f |
| ipv4_address_scope | 97702525-e145-40c8-8c8f-d415930d12ce |
| ipv6_address_scope | 13b83fb2-beb4-4533-9e12-4bf9a5721ef5 |
| name | network2 |
| subnets | d5d68ac3-3eaa-439e-b75b-0e0b2c1d221a |
| | 917f9360-a840-45c1-83a1-2a093bd7b376 |
+-------------------------+--------------------------------------+
作成したそれぞれのサブネットをルーターに接続します。例えば、 router1 という名前のルーターを使用します。
$ neutron router-interface-add router1 subnet-ip4-1
Added interface 73d832e1-e4a7-4029-9a66-f4e0f4ba0e76 to router router1.
$ neutron router-interface-add router1 subnet-ip4-2
Added interface 94b4cdb2-875d-4ab3-9a6e-803c3626c4d9 to router router1.
$ neutron router-interface-add router1 subnet-ip6-1
Added interface f35c4541-d529-4bd8-af4e-1b069269c263 to router router1.
$ neutron router-interface-add router1 subnet-ip6-2
Added interface f5904a4b-9547-4c08-bc7e-bc5fc71a8db9 to router router1.
この例では、アドレススコープに所属するネットワーク間での接続性を確認します。
2 つのインスタンス、 network1 に instance1 を、 network2 を instance2 を起動します。両方のインスタンスに Floating IP アドレスを付与します。
ping と SSH を許可するようにセキュリティーグループを調整します (IPv4 と IPv6 の両方)。
$ nova list
+--------------+-----------+---------------------------------------------------------------------------+
| ID | Name | Networks |
+--------------+-----------+---------------------------------------------------------------------------+
| 97e49c8e-... | instance1 | network1=2001:db8:80d2:c4d3:f816:3eff:fe52:b69f, 198.51.100.3, 172.24.4.3 |
| ceba9638-... | instance2 | network2=203.0.112.3, 2001:db8:a583:0:f816:3eff:fe42:1eeb, 172.24.4.4 |
+--------------+-----------+---------------------------------------------------------------------------+
アドレススコープに関係なく、 Floating IP には外部ネットワークから ping が可能です。
$ ping -c 1 172.24.4.3
1 packets transmitted, 1 received, 0% packet loss, time 0ms
$ ping -c 1 172.24.4.4
1 packets transmitted, 1 received, 0% packet loss, time 0ms
instance2 は外部ネットワークと同じアドレススコープに属しているため、 instance2 には直接 ping することもできます。
注釈
BGP ルーティングを使うと、インスタンスへの静的経路を自動的に設定できます。
# ip route add 203.0.112.0/26 via 172.24.4.2
$ ping -c 1 203.0.112.3
1 packets transmitted, 1 received, 0% packet loss, time 0ms
# ip route add 2001:db8:a583::/64 via 2001:db8::1
$ ping6 -c 1 2001:db8:a583:0:f816:3eff:fe42:1eeb
1 packets transmitted, 1 received, 0% packet loss, time 0ms
アドレススコープが一致しないので、 instance1 には ping が直接では届きません。
# ip route add 198.51.100.0/26 via 172.24.4.2
$ ping -c 1 198.51.100.3
1 packets transmitted, 0 received, 100% packet loss, time 0ms
# ip route add 2001:db8:80d2:c4d3::/64 via 2001:db8::1
$ ping6 -c 1 2001:db8:80d2:c4d3:f816:3eff:fe52:b69f
1 packets transmitted, 0 received, 100% packet loss, time 0ms
ネットワーク間でアドレススコープが一致する場合、 ping (やその他のトラフィック) はルーターでそのまま転送されます。ネットワーク間でアドレススコープが一致しない場合、ルーターはそのトラフィックを破棄するか、スコープ境界をまたぐため NAT を行います。
Except where otherwise noted, this document is licensed under Creative Commons Attribution 3.0 License. See all OpenStack Legal Documents.