AWS VPC - Інтернет-шлюз проти NAT [закрито]


209

Що таке Інтернет-шлюз? Що таке інстанція NAT? Які послуги вони пропонують?

Читаючи документацію AWS VPC, я збираю обидві карти приватних IP-адрес на адреси Інтернет-маршруту для вихідних запитів і маршрутизую вхідні відповіді з Інтернету до запитувача в підмережі.

То які відмінності між ними є? У яких сценаріях я використовую інстанцію NAT замість (або крім того) Інтернет-шлюзу? Це по суті випадки EC2, які запускають деякі мережеві програми, або вони є спеціальним обладнанням, як маршрутизатор?

Замість того, щоб просто вказувати на посилання на документацію AWS, чи можете ви пояснити їх, додавши деякі відомості про те, що є публічними та приватними підмережами, щоб будь-який новачок з обмеженими знаннями в мережі може зрозуміти це легко? Також коли я повинен використовувати NAT Gateway замість NAT екземпляра?

PS Я новачок у AWS VPC, тому я можу тут порівнювати яблука з апельсинами.

Відповіді:


230

Інтернет-шлюз

Інтернет-шлюз - це логічний зв'язок між VPC Amazon та Інтернетом . Це не фізичний пристрій. З кожним VPC може бути асоційований лише один. Це не обмежує пропускну здатність підключення до Інтернету. (Єдиним обмеженням пропускної здатності є розмір екземпляра Amazon EC2, і він застосовується до всього трафіку - внутрішнього до VPC та до Інтернету.)

Якщо VPC не має Інтернет-шлюзу, то до ресурсів VPC не можна отримати доступ з Інтернету (якщо трафік не протікає через корпоративну мережу та VPN / Direct Connect).

Підмережа вважається загальнодоступною підмережею, якщо вона має таблицю маршрутів, яка спрямовує трафік до Інтернет-шлюзу.

Примірник NAT

Примірник NAT - це екземпляр Amazon EC2, налаштований для пересилання трафіку в Інтернет. Його можна запустити з існуючого AMI або налаштувати за допомогою даних користувача таким чином:

#!/bin/sh
echo 1 > /proc/sys/net/ipv4/ip_forward
echo 0 > /proc/sys/net/ipv4/conf/eth0/send_redirects
/sbin/iptables -t nat -A POSTROUTING -o eth0 -s 0.0.0.0/0 -j MASQUERADE
/sbin/iptables-save > /etc/sysconfig/iptables
mkdir -p /etc/sysctl.d/
cat <<EOF > /etc/sysctl.d/nat.conf
net.ipv4.ip_forward = 1
net.ipv4.conf.eth0.send_redirects = 0
EOF

Примірники приватної підмережі, які хочуть отримати доступ до Інтернету, можуть перенести пов'язаний з Інтернетом трафік до інстанції NAT через конфігурацію таблиці маршрутів. Потім інстанція NAT подасть запит до Інтернету (оскільки він знаходиться у загальнодоступній підмережі), і відповідь буде передано назад у приватний екземпляр.

Трафік, що надсилається до інстанції NAT, як правило, надсилатиметься на IP-адресу, яка не пов’язана з самим інстантом NAT (він буде призначений для сервера в Інтернеті). Тому важливо вимкнути параметр " Перевірка джерела / призначення " на інстанції NAT, інакше трафік буде заблокований.

NAT шлюз

Компанія AWS представила службу шлюзу NAT, яка може зайняти місце інстанції NAT. Переваги використання послуги NAT Gateway:

  • Це повністю керований сервіс - просто створіть його і він працює автоматично, включаючи відмову
  • Він може лопнути до 10 Гбіт / с (екземпляр NAT обмежений пропускною здатністю, пов'язаною з типом екземпляра EC2)

Однак:

  • Групи безпеки не можуть бути асоційовані з шлюзом NAT
  • Вам знадобиться по одному в кожному AZ, оскільки вони працюють лише в одному AZ

4
Чи можете ви додати ще одну крапку у своїй записці? Примірники NAT працюватимуть, якщо у вас є публічна мережа IGW у загальнодоступній підмережі. Вони також обмежують зворотний пошук з Інтернету на ваш примірник в підмережі.
Ameya

1
Тепер у 2019 році NAT gw можна використовувати просто у VPC, виділяючи EIP в «загальнодоступній» підмережі або підмережі з «Інтернет-шлюзом», а у внутрішніх підмережах - просто маршрутом до NAT gw.
Феліпе Буччіоні

Ця відповідь все-таки точна? З документації АМС , я бачу: An internet gateway is a horizontally scaled, redundant, and highly available VPC component that allows communication between instances in your VPC and the internet. It therefore imposes no availability risks or bandwidth constraints on your network traffic.. З опису я створюю враження, що це фактичний апаратний пристрій, але керований AWS. Будь ласка, виправте мене, якщо моє розуміння вимкнено.
Абхішек Дівекар

@AbhishekDivekar Нічого не змінилося. Працюючи з AWS, зосередьтеся на тому, що ви хотіли б досягти, а не думайте про базове обладнання.
Джон Ротенштейн

1
@Sandeep NAT Екземпляри та NAT-шлюзи існують у VPC. Тому будь-який трафік, який виходить з нього та їде в Інтернет, все одно повинен проходити через Інтернет-шлюз. Якщо немає Інтернет-шлюзу, то доступу до Інтернету не буде.
Джон Ротенштейн

127

Що стосується NAT шлюзу проти NAT, то будь-який буде працювати. Примірник NAT може бути дещо дешевшим, але NAT-шлюзом повністю управляється AWS, тому він має перевагу в тому, що не потрібно підтримувати екземпляр EC2 лише для NATing.

Однак для випадків, які повинні бути доступними в Інтернеті, шлюз / екземпляри NAT - це не те, що ви шукаєте. NAT дозволить приватним екземплярам (без публічного IP-доступу) отримувати доступ до Інтернету, але не навпаки. Отже, для випадків EC2, які повинні бути доступні в Інтернеті, вам потрібно призначити загальнодоступну IP-адресу. Існує рішення, якщо вам справді потрібно зберегти приватні екземпляри EC2 - ви можете використовувати еластичний балансир навантаження для розміщення запитів.

Інтернет-шлюзи

Інтернет-шлюз - це спосіб підключення VPC до Інтернету. Ви використовуєте шлюз Інтернету з таблицею маршрутів, щоб повідомити VPC, як інтернет-трафік потрапляє до Інтернету.

Інтернет-шлюз з'являється у VPC як лише ім'я. Amazon керує шлюзом, і немає нічого, про що ви дійсно не можете сказати (крім того, використовувати його чи ні; пам’ятайте, що ви можете мати повністю сегментовану підмережу, яка взагалі не може отримати доступ до Інтернету).

Загальнодоступна підмережа - це підмережа, яка має інтернет-трафік, що проходить через Інтернет-шлюз AWS. Будь-який примірник у загальнодоступній підмережі може мати присвоєний йому публічний IP-адрес (наприклад, екземпляр EC2 з увімкненим "асоціювати публічну ip-адресу").

Приватна підмережа означає, що примірники не є загальнодоступними з Інтернету. Вони НЕ мають публічної IP-адреси. Наприклад, ви не можете отримати доступ до них безпосередньо через SSH. Примірники приватних підмереж все ж можуть самі отримувати доступ до Інтернету (тобто, використовуючи NAT шлюз).


23
Найкраща відповідь з точки зору NAT проти Інтернет-шлюзу.
Тагар

Чудова відповідь. Лише наступне питання: Коли екземпляр EC2 у загальнодоступній підмережі має загальнодоступний IP, логічно, самодостатньо отримувати вхідні запити з Інтернету або робити вихідні запити до Інтернету, оскільки його IP може бути маршрутизованим та доступним. То яку додаткову роботу тут робить Інтернет-шлюз?
Сандіп,

Екземпляр @Sandeep EC2 не має справжнього загальнодоступного IP-адреси, але поза межами сцени він відображається на приватну IP-адресу. Інтернет-шлюз виконує дві цілі: надати ціль у таблицях маршрутів VPC для трафіку через Інтернет, а також здійснити трансляцію мережевих адрес (NAT) для випадків, яким призначено публічний адреса IPv4
Омар Фароке Анік

11

Інтернет-шлюз використовується для підключення vpc до Інтернету, а шлюз NAT використовується для підключення приватної підмережі до Інтернету (це означає, що будь-який трафік надходить до приватного екземпляра підмережі, який буде спрямований на шлюз NAT). вам потрібно перенаправити трафік у таблиці маршрутів до NAT

Таблиця маршрутів 0.0.0.0/0


Дякую за приклад - допомогли мені зв'язати!
Кріс

На цій сторінці є діаграма: docs.aws.amazon.com/vpc/latest/userguide/vpc-nat-gateway.html, яка уточнює призначення NAT-шлюзу та IGW. Обидва вони необхідні для приватних подсетях , щоб мати можливість отримати доступ в Інтернет
Maruthi
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.