Рейтинг:0

Конфигурация сетевой карты AWS

флаг us

Я пытаюсь настроить экземпляр EC2 для конкретного варианта использования. В этом мне понадобятся 2 ENI с общедоступным IP-адресом. (Оба должны пинговаться)

Я сделал следующие шаги до сих пор:

  • Подключено 2 сетевых интерфейса из одной подсети
  • Запустить экземпляр
  • Создано 2 эластичных IP-адреса, прикрепленных к каждой карте ENI экземпляра.

Я вижу следующий результат в разделе сетевых интерфейсов экземпляра EC2.

Публичный IP-адрес

Но я не смог пропинговать 3.104.193.180.

Также мой айпи адрес дает следующий результат. . .

ubuntu@ip-172-31-37-139:~$ IP-адрес
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    ссылка/петля 00:00:00:00:00:00 брд 00:00:00:00:00:00
    инет 127.0.0.1/8 область хоста lo
       valid_lft навсегда
    inet6 :: 1/128 узел области видимости
       valid_lft навсегда
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9001 qdisc fq_codel состояние UP группа по умолчанию qlen 1000
    ссылка/эфир 06:ce:dd:28:5b:b8 brd ff:ff:ff:ff:ff:ff
    inet 172.31.37.139/20 brd 172.31.47.255 область глобальная динамическая eth0
       valid_lft 3460 сек. selected_lft 3 460 сек.
    ссылка на область inet6 fe80::4ce:ddff:fe28:5bb8/64
       valid_lft навсегда
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9001 qdisc fq_codel состояние UP группа по умолчанию qlen 1000
    ссылка/эфир 06:a6:9a:4a:98:c6 brd ff:ff:ff:ff:ff:ff
    inet 172.31.41.29/20 brd 172.31.47.255 область глобальная динамическая eth1
       valid_lft 3460 сек. selected_lft 3 460 сек.
    inet6 fe80::4a6:9aff:fe4a:98c6/64 ссылка на область действия
       valid_lft навсегда

Итак, мои вопросы. . .

  • Что я должен сделать, чтобы получить доступ к другому IP-адресу?
  • Как мне узнать оба эластичных IP-адреса изнутри сервера?
Рейтинг:0
флаг my

Чтобы получить общедоступный IP-адрес, связанный с данным интерфейсом, сначала получите MAC-адрес от интерфейса, а затем получите нужную информацию из службы метаданных экземпляра (IMDS). Итак, в вашем примере выше eth1 имеет MAC-адрес 06:a6:9a:4a:98:c6, поэтому вы можете получить общедоступный IPv4-адрес с помощью:

завиток http://169.254.169.254/latest/meta-data/network/interfaces/macs/02:1d:90:af:65:a3/public-ipv4s

Больше информации в документация AWS

Что касается вашей проблемы с подключением, в качестве первого шага дважды проверьте маршрутизацию VPC, ACL и конфигурацию группы безопасности, связанную с каждым из ваших ENI. Эти детали легко неправильно настроить, и это может привести к падению трафика, если вы что-то пропустите. Сначала проверьте эти детали, а затем вернитесь и прочитайте остальную часть этого поста. Есть еще одна более тонкая проблема, которая возникает, когда у вас есть несколько ENI, связанных с экземпляром, и это может быть вашей проблемой.

В AWS VPC реализована строгая защита от спуфинга. Это хорошо, так как защищает AWS и его клиентов от участия в различных формах сетевых атак в случае, если экземпляр по какой-либо причине скомпрометирован. Однако это необходимо учитывать при подключении нескольких ENI к экземплярам.

Проблема в том, что основное поведение маршрутизации управляется только пункт назначения исходящего пакета. Это означает, что ответ на входящий пакет не может быть передан через тот же интерфейс, на котором был получен исходный пакет. Но для VPC это считается «поддельным» пакетом, поскольку исходный адрес в ответном пакете не совпадает ни с одним из частных IP-адресов, связанных с ENI.

Рассмотрим следующую конфигурацию интерфейса и таблицу маршрутизации:

admin@ip-10-0-0-115:~$ ip -4 адрес
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    инет 127.0.0.1/8 область хоста lo
       valid_lft навсегда
2: ens5: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9001 qdisc mq state UP group default qlen 1000
    альтернативное имя enp0s5
    inet 10.0.0.115/24 brd 10.0.0.255 область действия глобальная динамическая ens5
       valid_lft 2801 сек. preferred_lft 2801 сек.
3: ens6: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9001 qdisc mq state UP group default qlen 1000
    альтернативное имя enp0s6
    inet 10.0.0.8/24 brd 10.0.0.255 область действия глобальная динамическая ens6
       valid_lft 2889 сек. selected_lft 2 889 сек.


admin@ip-10-0-0-115:~$ ip ro
по умолчанию через 10.0.0.1 dev ens5
10.0.0.0/24 dev ens5 ссылка на область действия ядра proto src 10.0.0.115
10.0.0.0/24 dev ens6 ссылка на область ядра proto src 10.0.0.8

В данном случае 10.0.0.8 — это адрес, присвоенный ens6. Входящий пакет на этот IP-адрес будет получен через ens6 и обработан должным образом. Но исходящий ответ на этот пакет будет маршрутизироваться в соответствии с приведенной выше таблицей маршрутизации, выходить через ens5 и отбрасываться VPC.

Вы можете проверить это следующим образом:

admin@ip-10-0-0-115:~$ ip ro получить 8.8.8.8 с 10.0.0.8
8.8.8.8 с 10.0.0.8 через 10.0.0.1 dev ens5 uid 1000
    тайник

Обратите внимание, что это устройство ens5, хотя 10.0.0.8 назначено ens6! VPC сбросит этот трафик!

Чтобы убедиться, что ваши пакеты доставляются через VPC, вам необходимо реализовать политика маршрутизации. Вообще говоря, маршрутизация на основе политик относится к ситуации, когда ваша система использует дополнительную информацию, помимо пункта назначения, для принятия решений о маршрутизации. В этом случае необходимо также учитывать исходный IP-адрес. Здесь нам нужно убедиться, что любой исходящий пакет с исходным адресом 10.0.0.8 уходит через ens6.

Маршрутизация политик в Linux обычно настраивается с помощью IP(8) команда. Чтобы экземпляр с приведенной выше таблицей маршрутизации работал, вам нужно создать дополнительную таблицу маршрутизации, специфичную для ens6. Управление вторичными таблицами работает так же, как управление «основной» таблицей, за исключением того, что вы указываете идентификатор таблицы.Итак, в данном случае мы можем добавить маршрут в локальную сеть и маршрут по умолчанию через шлюз к таблице 10000 вот так:

admin@ip-10-0-0-115:~$ sudo ip ro add 10.0.0.0/24 dev ens6 таблица 10000
admin@ip-10-0-0-115:~$ sudo ip ro добавить по умолчанию через таблицу 10.0.0.1 10000
admin@ip-10-0-0-115:~$ ip ro показать таблицу 10000
по умолчанию через 10.0.0.1 dev ens6
Ссылка на объем 10.0.0.0/24 dev ens6

И создадим правило для маршрутизации исходящего трафика с 10.0.0.8 по этой таблице:

admin@ip-10-0-0-115:~$ sudo ip rule add from 10.0.0.8/32 table 10000 pref 10000
admin@ip-10-0-0-115:~$ IP-правило
0: из всех локальных поисковых систем
10000: из 10.0.0.8 поиск 10000
32766: из всех основных поисковых запросов
32767: из всех поисковых запросов по умолчанию

Обратите внимание на наличие правила 10000, показывающего, что трафик с 10.0.0.8 будет маршрутизироваться через таблицу 10000.

Мы можем подтвердить это с помощью IP ро получить еще раз:

admin@ip-10-0-0-115:~$ ip ro получить 8.8.8.8 с 10.0.0.8
8.8.8.8 с 10.0.0.8 через 10.0.0.1 dev ens6 таблица 10000 uid 1000
    тайник

Обратите внимание, что он маршрутизируется в соответствии с таблицей 10000, но, что более важно, он будет отправлен через устройство ens6!

Amazon Linux автоматически устанавливает подобные правила маршрутизации политик, если к вашему инстансу подключено несколько ENI. Я не знаю, работает ли Ubuntu, поэтому вам, возможно, придется провести небольшое исследование в этом направлении и, возможно, внедрить собственную автоматизацию для вашей конкретной ситуации.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.