Alamat lingkup (Address scopes)

Alamat lingkup (Address scopes)

Address scopes membangun dari subnet pools. Sementara subnet pools menyediakan mekanisme untuk mengendalikan alokasi alamat untuk subnet, address scopes menunjukkan di mana alamat dapat dialihkan antara jaringan, mencegah user tumpang tindih alamat dalam dua subnet. Karena semua alamat dialokasikan dalam address scope tidak tumpang tindih, router neutron jangan men-NAT antara jaringan tenants Anda dan jaringan eksternal Anda. Selama alamat dalam suatu address scope match, layanan Networking melakukan routing yang sederhana antara jaringan.

Mengakses address scopes

Siapapun dengan akses ke layanan Networking dapat membuat address scopes sendiri. Namun, administrator jaringan dapat membuat shared address scopes, yang memungkinkan proyek lain untuk membuat jaringan dalam address scope itu.

Akses ke alamat di scope dikelola melalui subnet pools. Subnet pool tidak dapat diciptakan dalam address scope, ataupun diperbarui menjadi milik address scope.

Dengan subnet pool, semua alamat digunakan dalam address scope adalah unik dari sudut pandang pemilik address scope. Oleh karena itu, menambahkan lebih dari satu subnet pool untuk address scope jika pool mempunyai pemilik yang berbeda, memungkinkan untuk pendelegasian sebagian dari address scope. Pendelegasian mencegah alamat tumpang tindih di seluruh scope. Jika tidak, Anda menerima pesan kesalahan jika dua pool memiliki rentang alamat yang sama.

Setiap interface router dikaitkan dengan address scope dengan melihat subnet terhubung ke jaringan. Ketika router terhubung ke jaringan eksternal dengan pencocokan address scope, tranffic jaringan me-rute antara tanpa Network Address Translation (NAT). Router menandai semua koneksi tranffic yang berasal dari masing-masing interface dengan address scope yang sesuai. Jika tranffic melintasi interface dalam scope yang salah, router memblok tranffic.

Backwards compatibility

Jaringan yang dibuat sebelum rilis Mitaka tidak mengandung secara eksplisit address scope ternama, kecuali jaringan berisi subnet dari subnet pool milik address scope dibuat atau diperbarui. Layanan Jaringan mempertahankan backwards compatibility dengan jaringan pra-Mitaka melalui sifat address scope khusus agar jaringan ini bisa melakukan routing canggih:

  1. Tumpang tindih alamat tak terbatas diperbolehkan.

  2. Router neutron, secara default, akan menjadi NAT traffic dari jaringan internal untuk jaringan eksternal.

  3. Pre-Mitaka address scope tidak terlihat melalui API. Anda tidak bisa daftar address scope atau detail acara. Scope eksis secara implisit sebagai catch-semua untuk alamat yang tidak discope secara eksplisit.

Buat shared address scopes sebagai user administratif

Bagian ini menunjukkan cara mengatur address scope bersama untuk memungkinkan routing yang sederhana untuk jaringan proyek dengan subnet pool yang sama.

Catatan

Bidang yang irrelevan telah dipangkas dari output dari command ini untuk singkatnya.

  1. Membuat IPv6 dan IPv4 address scopes:

    $ neutron address-scope-create --shared address-scope-ip6 6
    Created a new address_scope:
    +------------+--------------------------------------+
    | Field      | Value                                |
    +------------+--------------------------------------+
    | id         | 13b83fb2-beb4-4533-9e12-4bf9a5721ef5 |
    | ip_version | 6                                    |
    | name       | address-scope-ip6                    |
    | shared     | True                                 |
    +------------+--------------------------------------+
    
    $ neutron address-scope-create --shared address-scope-ip4 4
    Created a new address_scope:
    +------------+--------------------------------------+
    | Field      | Value                                |
    +------------+--------------------------------------+
    | id         | 97702525-e145-40c8-8c8f-d415930d12ce |
    | ip_version | 4                                    |
    | name       | address-scope-ip4                    |
    | shared     | True                                 |
    +------------+--------------------------------------+
    
  2. Membuat subnet pool menentukan nama (atau UUID) dari address scope yang memiliki subnet pool. Jika Anda telah ada subnet pool, gunakan command subnetpool-update untuk menempatkan mereka dalam address scope baru:

    $ neutron subnetpool-create --address-scope address-scope-ip6 \
      --shared --pool-prefix 2001:db8:a583::/48 --default-prefixlen 64 \
      subnet-pool-ip6
    Created a new subnetpool:
    +-------------------+--------------------------------------+
    | Field             | Value                                |
    +-------------------+--------------------------------------+
    | address_scope_id  | 13b83fb2-beb4-4533-9e12-4bf9a5721ef5 |
    | default_prefixlen | 64                                   |
    | id                | 14813344-d11a-4896-906c-e4c378291058 |
    | ip_version        | 6                                    |
    | name              | subnet-pool-ip6                      |
    | prefixes          | 2001:db8:a583::/48                   |
    | shared            | True                                 |
    +-------------------+--------------------------------------+
    
    $ neutron subnetpool-create --address-scope address-scope-ip4 \
      --shared --pool-prefix 203.0.113.0/21 --default-prefixlen 26 \
      subnet-pool-ip4
    Created a new subnetpool:
    +-------------------+--------------------------------------+
    | Field             | Value                                |
    +-------------------+--------------------------------------+
    | address_scope_id  | 97702525-e145-40c8-8c8f-d415930d12ce |
    | default_prefixlen | 26                                   |
    | id                | e2c4f12d-307f-4616-a4df-203a45e6cb7f |
    | ip_version        | 4                                    |
    | name              | subnet-pool-ip4                      |
    | prefixes          | 203.0.112.0/21                       |
    | shared            | True                                 |
    +-------------------+--------------------------------------+
    
  3. Pastikan bahwa subnet pada jaringan eksternal diciptakan dari subnet pool yang dibuat di atas:

    $ neutron subnet-show ipv6-public-subnet
    +-------------------+--------------------------------------+
    | Field             | Value                                |
    +-------------------+--------------------------------------+
    | cidr              | 2001:db8::/64                        |
    | enable_dhcp       | False                                |
    | gateway_ip        | 2001:db8::2                          |
    | id                | 8e9299bf-5c48-4143-b081-010ba26636a2 |
    | ip_version        | 6                                    |
    | name              | ipv6-public-subnet                   |
    | network_id        | d2ac8578-7e86-4646-849a-afdf5a05fff0 |
    | subnetpool_id     | 14813344-d11a-4896-906c-e4c378291058 |
    +-------------------+--------------------------------------+
    
    $ neutron subnet-show public-subnet
    +-------------------+--------------------------------------+
    | Field             | Value                                |
    +-------------------+--------------------------------------+
    | cidr              | 172.24.4.0/24                        |
    | enable_dhcp       | False                                |
    | gateway_ip        | 172.24.4.1                           |
    | id                | 3c3029d2-8081-4e56-9842-6007ce742860 |
    | ip_version        | 4                                    |
    | name              | public-subnet                        |
    | network_id        | d2ac8578-7e86-4646-849a-afdf5a05fff0 |
    | subnetpool_id     | e2c4f12d-307f-4616-a4df-203a45e6cb7f |
    +-------------------+--------------------------------------+
    

Routing dengan address scope untuk user non-privileged.

Bagian ini menunjukkan bagaimana user non-privileged dapat menggunakan address scope untuk rute langsung ke jaringan eksternal tanpa NAT.

  1. Buat beberapa jaringan untuk subnet host:

    $ 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                 |                                      |
    +-------------------------+--------------------------------------+
    
  2. Buat subnet tidak terkait dengan subnet pool atau address scope:

    $ 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     |                                      |
    +-------------------+--------------------------------------+
    
  3. Buat subnet menggunakan subnet pool terkait dengan address scope dari jaringan eksternal:

    $ 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 |
    +-------------------+--------------------------------------+
    

    Dengan membuat subnet dari scoped subnet pool, jaringan dikaitkan dengan address scope.

    $ 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 |
    +-------------------------+--------------------------------------+
    
  4. Menghubungkan router untuk masing-masing subnet tenant yang telah dibuat, misalnya, menggunakan router disebut `` 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.
    

Checking connectivity

Contoh ini menunjukkan bagaimana untuk memeriksa konektivitas antara jaringan dengan address scope.

  1. Meluncurkan dua instance, instance1 pada network1 dan instance2 pada network2. Mengasosiasikan floating IP address untuk kedua instance.

  2. Sesuaikan security groups untuk mengizinkan ping dan SSH (IPv4 dan 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     |
    +--------------+-----------+---------------------------------------------------------------------------+
    

Terlepas dari address scope, IP floating dapat ping dari jaringan eksternal:

$ 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

Anda sekarang bisa ping `` instance2`` langsung karena `` instance2`` men-share address scope yaang sama dengan jaringan eksternal:

Catatan

BGP routing dapat digunakan untuk secara otomatis mengatur rute statis untuk instances Anda.

# 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

Anda tidak bisa ping `` instance1`` langsung karena address scope tidak cocok:

# 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

Jika address scopes cook antar jaringan maka me-ping dan me-rute tranffic lainnya langsung. Jika lingkup tidak cocok antar jaringan, router dapat men-drop tranffic atau memberlakukan NAT untuk melintasi batas scope.

Creative Commons Attribution 3.0 License

Except where otherwise noted, this document is licensed under Creative Commons Attribution 3.0 License. See all OpenStack Legal Documents.