Bring your own IP
BYOIP в AWS: власні IPv4-адреси в EC2
Ви доводите, що контролюєте діапазон, сертифікатом у його записі реєстру і ROA, що називає ASN AWS, надаєте його в пул адрес і виділяєте з нього адреси Elastic IP так само, як із власних адрес AWS. За принесені адреси погодинна плата за публічні IPv4 не стягується.
Цей посібник описує EC2 через AWS CLI. Той самий діапазон можна також передати в AWS Global Accelerator, який має власний процес, або через VPC IP Address Manager (IPAM), який додає спосіб довести контроль через DNS і можливість анонсувати з власного ASN.
Що приймає AWS
З документації AWS, у день нашої перевірки:
- Розмір. Найспецифічніший діапазон IPv4, який можна принести, це /24.
- Реєстр. ARIN, RIPE NCC або APNIC, і зареєстрований на компанію чи установу, ніколи на особу.
- Історія. AWS може перевірити репутацію діапазону і відхилити такий, адреси якого мають погану історію (як тримати блок чистим).
- Legacy-простір приймається, але все одно потребує ROA.
- Один регіон водночас на діапазон і за замовчуванням п’ять діапазонів на регіон; AWS Support може це збільшити.
- Де. Кожен комерційний регіон, крім регіонів у Китаї, і список Local Zones.
- Не чіпайте реєстр маршрутизації. AWS сам оновлює RADb, а ручна зміна, що містить ASN AWS, призводить до збою надання.
Перед початком
ROA для ASN AWS. Він має авторизувати AS16509 і AS14618, а також будь-який ASN, що анонсує діапазон сьогодні, з максимальною довжиною, рівною розміру діапазону, який ви приносите. У регіонах AWS GovCloud (US) ROA натомість називає AS8987, а в AWS European Sovereign Cloud AS16509 і AS214101; через IPAM встановіть її на /24, щоб блок можна було поділити. Якщо ви переносите діапазон з власної мережі, спершу створіть ROA для вашого поточного ASN, щоб ніщо з того, що працює зараз, не стало недійсним (RPKI та ROA). ROA може доходити до AWS до 24 годин.
Пара ключів і сертифікат, створені за допомогою OpenSSL 1.0.2 або новішої:
openssl genpkey -aes256 -algorithm RSA -pkeyopt rsa_keygen_bits:2048 -out private-key.pem
openssl req -new -x509 -key private-key.pem -days 365 | tr -d "\n" > certificate.pemСертифікат у записі реєстру, в одному рядку, разом із маркерами BEGIN і END. Куди він іде, залежить від реєстру, і поле має значення:
| Реєстр | Куди йде сертифікат |
|---|---|
| RIPE NCC | Новий рядок descr в об’єкті inetnum. Не remarks |
| ARIN | Public Comments мережі, а не організації |
| APNIC | remarks в об’єкті inetnum |
Після завершення надання сертифікат можна видалити.
Крок за кроком
01Підпишіть повідомлення авторизації. Повідомлення називає ваш обліковий запис, діапазон і дату закінчення дії:
text_message="1|aws|123456789012|203.0.113.0/24|20261231|SHA256|RSAPSS"
signed_message=$(echo -n $text_message | openssl dgst -sha256 -sigopt rsa_padding_mode:pss -sigopt rsa_pss_saltlen:-1 -sign private-key.pem -keyform PEM | openssl base64 | tr -- '+=/' '-_~' | tr -d "\n")02Надайте діапазон у регіоні, де ви його використовуватимете:
aws ec2 provision-byoip-cidr --cidr 203.0.113.0/24 \
--cidr-authorization-context Message="$text_message",Signature="$signed_message" \
--region eu-central-103Дочекайтеся. Статус змінюється з pending-provision на provisioned. AWS каже, що більшість діапазонів завершується протягом двох годин, а деякі займають до тижня; aws ec2 describe-byoip-cidrs --max-results 5 --region eu-central-1 показує, на якому етапі процес.
04Підготуйтеся, потім перемкніть. Щоб скоротити простій, виділіть адреси Elastic IP з нового пулу і прив’яжіть їх ще до анонсу діапазону. aws ec2 describe-public-ipv4-pools дає ID пулу, а aws ec2 allocate-address --public-ipv4-pool <pool-id> бере з нього адресу.
05Анонсуйте. Припиніть анонсувати діапазон деінде, потім:
aws ec2 advertise-byoip-cidr --cidr 203.0.113.0/24 --region eu-central-1AWS рекомендує спершу відкликати діапазон з інших місць; поки його анонсує хтось інший, AWS не може гарантувати, що трафік для нього дійде до його мережі. Анонсувати треба рівно той діапазон, який ви надали, ніколи не його частину.
06Перевірте ззовні. whois -r -h whois.ripe.net 203.0.113.0/24 | grep descr має показати сертифікат, а валідатор RIPEstat має вважати діапазон дійсним для AS16509: curl "https://stat.ripe.net/data/rpki-validation/data.json?resource=16509&prefix=203.0.113.0/24".
Помилки, що коштують дня
- Сертифікат не в тому полі. Для RIPE NCC AWS читає
descrі явно неremarks. Azure хоче навпаки, тож для блоку, який переходить між цими двома хмарами, запис треба змінити. - ROA з неправильною максимальною довжиною. AWS вимагає, щоб вона дорівнювала розміру діапазону, який ви приносите, або /24 через IPAM. Максимальна довжина, специфічніша за діапазон, який ви приносите, відкриває шлях до перехоплень субпрефіксів, і AWS залишає за собою право припинити анонс діапазону, ROA якого не відповідають його правилам.
- Анонс частини діапазону. AWS анонсує рівно те, що ви надали. Щоб використати менший діапазон, скасуйте надання і надайте знову.
- Дві мережі анонсують одночасно. Трафік розділяється між ними, і AWS не допомагатиме це розв’язувати.
Ваш власний ASN
Через VPC IPAM AWS може анонсувати ваш діапазон з вашого власного ASN замість свого. Ви додаєте той самий сертифікат до запису реєстру вашого ASN (для RIPE NCC як рядок descr в aut-num), створюєте другий ROA з вашим ASN, а AWS рекомендує об’єкт ASPA, що називає AS16509 і AS14618 вашими провайдерами; без них маршрути, які AWS передає за вас, не проходять перевірку ASPA. Перемкнути origin назад на ASN AWS можна будь-коли, а на ваш не частіше ніж раз на годину.
Якщо ви орендуєте блок
Орендований простір підходить, за умови що реєстр показує його власником організацію. Власник робить частину в реєстрі: сертифікат у записі inetnum, який може редагувати лише maintainer власника, і ROA для AS16509 та AS14618. Решту ви робите зі свого облікового запису AWS.
Де тут RTM Networks
Ми здаємо в оренду /24 і більші блоки з нашого власного адресного простору RIPE NCC і продаємо блоки в регіонах RIPE NCC, ARIN та APNIC. Для простору, орендованого в нас, ми додаємо ваш сертифікат AWS до запису реєстру і створюємо ROA для ASN AWS, тож вам залишається лише надання (оренда IPv4). Якщо вам потрібно менше ніж 256 адрес на інстансі EC2, ми можемо натомість доставити їх через тунель (GRE- і WireGuard-тунелі). Як складається погодинна плата за IPv4 і коли власні адреси окуповуються: реальна вартість IPv4 у хмарі. Інші провайдери: посібники BYOIP.
Контакти
Переносите власні IP до AWS?
Скажіть провайдера, регіон і скільки адрес вам потрібно. Ми здаємо в оренду /24 і більше з уже виконаною роботою з реєстром для вашого провайдера, продаємо блоки у власність або доставляємо меншу кількість адрес через тунель. Ми зазвичай відповідаємо протягом 1–3 годин у робочий час.

