Puncte:0

Configurare AWS NIC

drapel us

Încerc să configurez o instanță EC2 pentru un anumit caz de utilizare. În acest sens, voi avea nevoie de 2 ENI cu adresa IP expusă public. (Ambele ar trebui să fie ping)

Am făcut următorii pași până acum:

  • Atașat 2 interfețe de rețea de la aceeași subrețea
  • Rulați instanța
  • S-au creat 2 adrese IP elastice, atașate la fiecare card ENI de instanță.

Pot vedea următorul rezultat în secțiunea de interfețe de rețea de instanță EC2.

PublicIP

Dar nu am putut să dau ping 3.104.193.180.

De asemenea, al meu adresa IP dă următorul rezultat. . .

ubuntu@ip-172-31-37-139:~$ adresa IP
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue stare UNKNOWN grup implicit qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft pentru totdeauna preferred_lft pentru totdeauna
    inet6 ::1/128 scope host
       valid_lft pentru totdeauna preferred_lft pentru totdeauna
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9001 qdisc fq_codel state UP group default qlen 1000
    link/ether 06:ce:dd:28:5b:b8 brd ff:ff:ff:ff:ff:ff
    inet 172.31.37.139/20 brd 172.31.47.255 scope global dynamic eth0
       valid_lft 3460sec preferred_lft 3460sec
    inet6 fe80::4ce:ddff:fe28:5bb8/64 scope link
       valid_lft pentru totdeauna preferred_lft pentru totdeauna
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9001 qdisc fq_codel state UP group default qlen 1000
    link/ether 06:a6:9a:4a:98:c6 brd ff:ff:ff:ff:ff:ff
    inet 172.31.41.29/20 brd 172.31.47.255 scope global dynamic eth1
       valid_lft 3460sec preferred_lft 3460sec
    inet6 fe80::4a6:9aff:fe4a:98c6/64 scope link
       valid_lft pentru totdeauna preferred_lft pentru totdeauna

Deci întrebările mele sunt. . .

  • Ce ar trebui să fac pentru a obține un alt IP expus/pingabil?
  • Cum ar trebui să-mi cunosc ambele IP elastice din interiorul serverului?
Puncte:0
drapel my

Pentru a obține adresa IP publică asociată cu o anumită interfață, mai întâi, obțineți adresa MAC de la interfață, apoi preluați informațiile pe care le căutați din Serviciul de metadate ale instanțelor (IMDS). Deci, în exemplul dvs. de mai sus, eth1 are Adresa mac 06:a6:9a:4a:98:c6, astfel încât să puteți obține adresa IPv4 publică cu:

curl http://169.254.169.254/latest/meta-data/network/interfaces/macs/02:1d:90:af:65:a3/public-ipv4s

Există mai multe informații în documentația AWS

În ceea ce privește problema dvs. de conectivitate, ca prim pas, verificați din nou rutarea VPC, ACL și configurația grupului de securitate asociate cu fiecare dintre ENI-urile dvs. Aceste detalii sunt ușor de configurat greșit și pot duce la scăderea traficului dacă pierdeți ceva. Verifică mai întâi acele detalii, apoi revino și citește restul acestei postări. Există o altă problemă mai subtilă care apare în mod special atunci când aveți mai multe ENI asociate cu o instanță și ar putea fi problema dvs.

AWS VPC implementează protecții stricte anti-spoofing. Acesta este un lucru bun, deoarece protejează AWS și clienții săi împotriva participării la diferite forme de atac de rețea în cazul în care o instanță este compromisă dintr-un anumit motiv. Cu toate acestea, este ceva de care trebuie să țineți cont atunci când atașați mai multe ENI la instanțe.

Problema este că comportamentul de bază de rutare este determinat doar de destinaţie a unui pachet de ieșire. Aceasta înseamnă că răspunsul la un pachet de intrare poate să nu fie transmis prin aceeași interfață pe care a fost primit pachetul original. Dar pentru un VPC, acesta este considerat un pachet „falsificat”, deoarece adresa sursă din pachetul de răspuns nu se potrivește cu niciuna dintre adresele IP private asociate cu ENI.

Luați în considerare următorul tabel de configurare a interfeței și de rutare:

admin@ip-10-0-0-115:~$ ip -4 addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue stare UNKNOWN grup implicit qlen 1000
    inet 127.0.0.1/8 scope host lo
       valid_lft pentru totdeauna preferred_lft pentru totdeauna
2: ens5: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9001 qdisc mq stare UP grup implicit qlen 1000
    altname enp0s5
    inet 10.0.0.115/24 brd 10.0.0.255 scope global dynamic ens5
       valid_lft 2801sec preferred_lft 2801sec
3: ens6: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9001 qdisc mq stare UP grup implicit qlen 1000
    altname enp0s6
    inet 10.0.0.8/24 brd 10.0.0.255 scope global dynamic ens6
       valid_lft 2889sec preferred_lft 2889sec


admin@ip-10-0-0-115:~$ ip ro
implicit prin 10.0.0.1 dev ens5
10.0.0.0/24 dev ens5 proto kernel scope link src 10.0.0.115
10.0.0.0/24 dev ens6 proto kernel scope link src 10.0.0.8

În acest caz, 10.0.0.8 este o adresă atribuită ens6. Un pachet de intrare la această adresă IP va fi primit prin ens6 și procesat conform așteptărilor. Dar un răspuns de ieșire la acel pachet va fi direcționat conform tabelului de rutare de mai sus și va ieși prin ens5 și va fi abandonat de VPC.

Puteți testa asta astfel:

admin@ip-10-0-0-115:~$ ip pentru a obține 8.8.8.8 de la 10.0.0.8
8.8.8.8 de la 10.0.0.8 prin 10.0.0.1 dev ens5 uid 1000
    cache

Rețineți că dispozitivul este ens5, chiar dacă 10.0.0.8 este atribuit ens6! VPC-ul ar reduce acest trafic!

Pentru a vă asigura că pachetele dvs. sunt livrate de VPC, trebuie să implementați rutarea politicii. În linii mari, politica de rutare se referă la situația în care sistemul dumneavoastră utilizează informații suplimentare dincolo de destinație pentru a lua decizii de rutare. În acest caz, trebuie să luați în considerare și adresa IP sursă. Ceea ce trebuie să facem aici este să ne asigurăm că orice pachet de ieșire cu o adresă sursă de 10.0.0.8 pleacă prin ens6.

Rutarea politicii în Linux este de obicei configurată folosind ip(8) comanda. Pentru a face ca instanța cu tabelul de rutare de mai sus să funcționeze, veți dori să creați un tabel de rutare secundar specific pentru ens6. Manipularea tabelelor secundare funcționează la fel ca manipularea tabelului „principal”, cu excepția faptului că specificați un ID de tabel.Deci, în acest caz, putem adăuga o rută la rețeaua locală și o rută implicită prin gateway la tabelul 10000, astfel:

admin@ip-10-0-0-115:~$ sudo ip ro add 10.0.0.0/24 dev ens6 table 10000
admin@ip-10-0-0-115:~$ sudo ip ro add default via 10.0.0.1 table 10000
admin@ip-10-0-0-115:~$ ip ro arată tabelul 10000
implicit prin 10.0.0.1 dev ens6
10.0.0.0/24 dev ens6 scope link

Și creați o regulă pentru a direcționa traficul de ieșire din 10.0.0.8 conform acestui tabel:

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:~$ regulă ip
0: din toate căutările locale
10000: de la 10.0.0.8 căutare 10000
32766: din toate căutările principale
32767: din toate căutările implicite

Observați prezența regulii 10000 care arată că traficul de la 10.0.0.8 va fi direcționat prin tabelul 10000.

Putem confirma acest lucru cu ip ro get din nou:

admin@ip-10-0-0-115:~$ ip pentru a obține 8.8.8.8 de la 10.0.0.8
8.8.8.8 de la 10.0.0.8 prin 10.0.0.1 dev ens6 table 10000 uid 1000
    cache

Observați că este direcționat conform tabelului 10000, dar, mai important, că va fi trimis prin dispozitivul ens6!

Amazon Linux setează regulile de rutare a politicii în mod automat atunci când aveți mai multe ENI atașate instanței dvs. Nu știu dacă Ubuntu o face, așa că s-ar putea să fie nevoie să faci puțină cercetare în acest sens și, eventual, să implementezi propria ta automatizare pentru situația ta particulară.

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.