ECS örneklerinin birden fazla ağ arayüzü üzerinden trafik gönderip almasını kontrol etmek için ENI'lerin rota tablolarını ve yönlendirme kurallarını yapılandırın.
ENI'ler için ilke tabanlı rotaları yapılandırma
İlke tabanlı yönlendirme, yalnızca varsayılan rotalara güvenmek yerine önceden tanımlanmış kurallara göre trafiği belirli ağ arayüzleri üzerinden iletir. Bu sayede birden fazla ENI arasında ayrıntılı trafik kontrolü sağlanır.
Kullanım senaryoları
Çoklu ENI ortamında iletişim: İkincil ENI'ler EIP veya NAT ağ geçitleriyle kullanıldığında, yanıt trafiği varsayılan rotanın daha yüksek önceliğe sahip olması nedeniyle birincil ENI üzerinden çıkabilir. İlke tabanlı rotalar, "giren kaynaktan çıkar" (source in-source out) ilkesini uygulayarak trafiğin aynı ENI üzerinden girip çıkmasını sağlar.
Trafik yük dengeleme: Varsayılan rotaların gereksinimlerinizi karşılamadığı durumlarda, yönlendirme kuralları tanımlayarak giden trafiği birden fazla ENI arasında dağıtın.
Erişim kontrolü: Kaynak adresleri, hedef adresler veya diğer parametrelere göre trafiği belirli arayüzlere veya yollarla kısıtlayarak ağ izolasyonu sağlayın.
Ön koşullar
-
ENI'ler bir ECS örneğine bağlıdır.
Bkz. "ENI oluşturma ve yönetme" konusunun Bir ENI'yi bir ECS örneğine bağlama bölümü.
-
ENI'ler, ECS örneğinin işletim sisteminde etkin durumdadır.
Bkz. "ENI oluşturma ve yönetme" konusunun ENI'lerin bir ECS örneğinde etkili olacak şekilde yapılandırılması bölümü.
Yordam
Aşağıdaki örneklerde eth1 adlı ikincil bir ENI kullanılmıştır. ENI tanımlayıcılarını ve IP adreslerini kendi değerlerinizle değiştirin.
Linux örneği
-
Bir ENI için bir rota tablosu oluşturun ve bir rota kuralı ekleyin:
ip -4 route add default via <Gateway of eth1> dev eth1 table 1001 ip -4 rule add from <IP address of eth1> lookup 1001Örneğin, eth1 için 1001 adlı bir rota tablosu oluşturun ve 172.16.20.193 adresinden gelen paketlerin eth1 üzerinden yönlendirilmesi için bir kural ekleyin:
ip -4 route add default via 172.16.20.253 dev eth1 table 1001 ip -4 rule add from 172.16.20.193 lookup 1001 -
Rota yapılandırmasını yeniden başlatmalar sırasında kalıcı hale getirin.
Kalıcılığı sağlamak için rota komutunu örnek başlangıç yapılandırmasına ekleyin. Aksi takdirde, yeniden başlatma sonrası rota kaybolur. Yalnızca test yapıyorsanız bu adımı atlayın.
-
/etc/rc.localdosyasını açın:vim /etc/rc.local -
Ekleme moduna girmek için
ituşuna basın, önceki adımdaki komutu ekleyin ve ardındanEsctuşuna basın. Dosyayı kaydedip kapatmak için:wqyazın ve Enter tuşuna basın.NotAğ arayüzü tanımlayıcısını ve ağ geçidi adresini kendi değerlerinizle değiştirin.
-
/etc/rc.localdosyasına yürütme izni verin:sudo chmod +x /etc/rc.local
-
-
Rota tablosunun ve kuralının oluşturulduğunu doğrulayın:
ip route list table 1001 && \ ip rule listAşağıdaki çıktı, rota tablosunun ve kuralının yapılandırıldığını onaylar:
root@xxx:/etc/netplan# ip route list table 1001 && ip rule list default via 172.16.20.253 dev eth1 0: from all lookup local 32765: from 172.16.20.193 lookup 1001 32766: from all lookup main 32767: from all lookup default
Windows örneği
-
Bir ENI için ilke tabanlı bir rota oluşturun:
route add -p <Destination network> mask <Subnet mask> <Gateway> if <Interface index> metric <Route priority>Bu örnekte Ethernet 2 adlı bir ENI kullanılmaktadır. Aşağıdaki komut, 172.16.12.76 adresinden gelen tüm paketleri
172.16.12.253adresindeki ağ geçidi üzerinden yönlendirir:route add -p 0.0.0.0 mask 0.0.0.0 172.16.12.253 if 6 metric 1Parametreler:
-p: Rotayı kalıcı hale getirir.
-polmadan rota geçicidir ve yeniden başlatma sonrası kaybolur.Hedef ağ:
0.0.0.0varsayılan rotayı belirtir ve belirli bir rota eşleşmediğinde kullanılır.-
Alt ağ maskesi ve ağ geçidi: Bu değerleri görüntülemek için
ipconfigkomutunu çalıştırın.C:\Users\Administrator>ipconfig Windows IP Configuration Ethernet adapter Ethernet: Connection-specific DNS Suffix . : cn-hangzhou.ecs.internal Link-local IPv6 Address . . . . . : fe80::6926:88f5:e002:7443%3 IPv4 Address. . . . . . . . . . . : 172.16.20.241 Subnet Mask . . . . . . . . . . . : 255.255.255.0 Default Gateway . . . . . . . . . : 172.16.20.253 Ethernet adapter Ethernet 2: Connection-specific DNS Suffix . : cn-hangzhou.ecs.internal Link-local IPv6 Address . . . . . : fe80::46bd:a7fb:362e:f79f%6 IPv4 Address. . . . . . . . . . . : 172.16.12.76 Subnet Mask . . . . . . . . . . . : 255.255.255.0 Default Gateway . . . . . . . . . : 172.16.12.253 -
Arayüz dizini: Dizini görüntülemek için
netsh interface ipv4 show interfaceskomutunu çalıştırın.Bu örnekte Ethernet 2'nin arayüz dizini (Idx) 6'dır.
C:\Users\Administrator>netsh interface ipv4 show interfaces Idx Met MTU State Name --- ---------- ---------- ------------ --------------------------- 1 75 4294967295 connected Loopback Pseudo-Interface 1 3 15 1500 connected Ethernet 6 15 1500 connected Ethernet 2 Rota önceliği: metric <n> biçiminde belirtilir. Daha küçük bir değer daha yüksek öncelik anlamına gelir.
-
Rotanın rota listesinde göründüğünü doğrulamak için
route printkomutunu çalıştırın.C:\Users\Administrator>route print =========================================================================== Interface List 3...00 16 3e 0a d5 39 ......Red Hat VirtIO Ethernet Adapter 6...00 16 3e 4c 88 9c ......Red Hat VirtIO Ethernet Adapter #2 1...........................Software Loopback Interface 1 IPv4 Route Table Active Routes: Network Destination Netmask Gateway Interface Metric 0.0.0.0 0.0.0.0 172.16.12.253 172.16.12.76 15 0.0.0.0 0.0.0.0 172.16.12.253 172.16.20.241 15 127.0.0.0 255.0.0.0 On-link 127.0.0.1 331 127.0.0.1 255.255.255.255 On-link 127.0.0.1 331 127.255.255.255 255.255.255.255 On-link 127.0.0.1 331 172.16.12.0 255.255.255.0 On-link 172.16.12.76 271 172.16.12.76 255.255.255.255 On-link 172.16.12.76 271 172.16.12.255 255.255.255.255 On-link 172.16.12.76 271 172.16.20.0 255.255.255.0 On-link 172.16.20.241 271 172.16.20.241 255.255.255.255 On-link 172.16.20.241 271 172.16.20.255 255.255.255.255 On-link 172.16.20.255 271 224.0.0.0 240.0.0.0 On-link 127.0.0.1 331 224.0.0.0 240.0.0.0 On-link 172.16.20.241 271 224.0.0.0 240.0.0.0 On-link 172.16.12.76 271 255.255.255.255 255.255.255.255 On-link 127.0.0.1 331 255.255.255.255 255.255.255.255 On-link 172.16.20.241 271 255.255.255.255 255.255.255.255 On-link 172.16.12.76 271 Persistent Routes: Network Address Netmask Gateway Address Metric 0.0.0.0 0.0.0.0 172.16.12.253 1 ===========================================================================
Örnek
Bu örnekte, Alibaba Cloud Linux 3.2 çalıştıran bir ECS örneğinin paketleri ikincil ENI (eth1) üzerinden alması ve yanıt paketlerini birincil ENI (eth0) yerine eth1 üzerinden göndermesi için ilke tabanlı rotaların nasıl yapılandırılacağı gösterilmektedir. Güvenlik ilkeleriniz belirli ENI'ler için bir kaynak IP izin listesi içeriyorsa, eşleşmeyen trafik yolları meşru isteklerin reddedilmesine neden olur. İlke tabanlı rotalar bu sorunu çözer.
-
Ortamı hazırlayın.
-
Bir ECS örneği oluşturun.
-
ECS örneğine ikincil bir ENI bağlayın.
Bkz. İkincil bir ENI bağlama.
-
Bir Elastik IP Adresi (EIP) başvurusunda bulunun ve bunu NAT modunda eth1 ikincil ENI'si ile ilişkilendirin.
Bkz. Bir EIP'yi ikincil bir ENI ile ilişkilendirme.
Bağlama işlemi tamamlandıktan sonra, ECS örneği ayrıntıları sayfasında Elastic Network Interface sekmesini tıklayın. İkincil ENI'nin durumu Bound olarak değişir ve IP Adresi sütunu atanmış genel IP adresini (EIP) ve birincil özel IP adresini gösterir.
-
Bir test istemcisi hazırlayın.
İnternet erişimi olan başka bir ECS örneğini veya şirket içi bir bilgisayarı test istemcisi olarak kullanın.
-
ECS örneğinin güvenlik grubuna, test istemcisinin genel IP adresinden gelen erişime izin veren bir gelen kuralı ekleyin. Ardından, c adımında ilişkilendirilen EIP'ye bağlantıyı doğrulamak için test istemcisinde ping <EIP> komutunu çalıştırın.
Bkz. "Güvenlik gruplarının kullanımı ve kullanım senaryoları için yönergeler" konusunun Durum 4: Belirli protokollerin trafiğinin ECS örneklerine erişimine izin verme bölümü.
-
-
Test istemcisinden ECS örneğine paket gönderin:
ping 47.xx.xx.109IP adresini eth1 ile ilişkilendirilmiş EIP ile değiştirin.
-
ECS örneğinin hem eth0 hem de eth1 arayüzlerinde ICMP paketlerini izleyin.
-
eth0üzerindeki ICMP paketlerini yakalayın:tcpdump -i eth0 icmp -
Yeni bir pencere açın ve
eth1üzerindeki ICMP paketlerini yakalayın:tcpdump -i eth1 icmp
-
-
Sonuçları görüntüleyin.
İlke tabanlı rota yapılandırılmadı
Paketler eth1 üzerinden girer ancak yanıt paketleri eth0 üzerinden çıkar. Örnek, eth1 üzerinde alır ve eth0 üzerinde yanıt verir.
eth0 üzerinde paketleri yakalayın. ICMP echo reply (yanıt) paketlerini görebilirsiniz:
[root@xxx ~]# tcpdump -i eth0 icmp dropped privs to tcpdump tcpdump: verbose output suppressed, use -v or -vv for full protocol decode listening on eth0, link-type EN10MB (Ethernet), capture size 262144 bytes 14:01:55.129356 IP iZxxx > 12.xxx: ICMP echo reply, id 2048, seq 142, length 40 14:01:56.141993 IP iZxxx > 12.xxx: ICMP echo reply, id 2048, seq 143, length 40 14:01:57.145388 IP iZxxx > 12.xxx: ICMP echo reply, id 2048, seq 144, length 40 14:01:58.163042 IP iZxxx > 12.xxx: ICMP echo reply, id 2048, seq 145, length 40eth1 üzerinde paketleri yakalayın. ICMP echo request (istek) paketlerini görebilirsiniz:
[root@xxx ~]# tcpdump -i eth1 icmp dropped privs to tcpdump tcpdump: verbose output suppressed, use -v or -vv for full protocol decode listening on eth1, link-type EN10MB (Ethernet), capture size 262144 bytes 14:01:55.129339 IP 12.xxx > iZxxx: ICMP echo request, id 2048, seq 142, length 40 14:01:56.141980 IP 12.xxx > iZxxx: ICMP echo request, id 2048, seq 143, length 40 14:01:57.145376 IP 12.xxx > iZxxx: ICMP echo request, id 2048, seq 144, length 40 14:01:58.163030 IP 12.xxx > iZxxx: ICMP echo request, id 2048, seq 145, length 40eth0'ın varsayılan rotasının önceliği 100'dür ve eth1'inkinden daha yüksektir, bu nedenle paketler eth0'dan gönderilir.
[root@i xxx ~]# route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 0.0.0.0 172.16.20.253 0.0.0.0 UG 100 0 0 eth0 0.0.0.0 172.16.20.253 0.0.0.0 UG 101 0 0 eth1 172.16.20.0 0.0.0.0 255.255.255.0 U 100 0 0 eth0 172.16.20.0 0.0.0.0 255.255.255.0 U 101 0 0 eth1İlke tabanlı rota yapılandırıldı
-
İlke tabanlı rotaları yapılandırın. Bkz. bu konunun ENI'ler için ilke tabanlı rotaları yapılandırma bölümü.
ip -4 route add default via 172.16.20.253 dev eth1 table 1001 ip -4 rule add from 172.16.20.177 lookup 1001 Test istemcisinde
ping <EIP>komutunu çalıştırın.-
ENI'lerdeki ICMP paketlerini izleyin.
Paketler artık eth1 üzerinden girip çıkmaktadır. Örnek, "giren kaynaktan çıkar" ilkesine göre aynı ENI üzerinden gönderim ve alım yapar.
[root@xxx ~]# tcpdump -i eth0 icmp dropped privs to tcpdump tcpdump: verbose output suppressed, use -v or -vv for full protocol decode listening on eth0, link-type EN10MB (Ethernet), capture size 262144 bytes [root@xxx ~]# tcpdump -i eth1 icmp dropped privs to tcpdump tcpdump: verbose output suppressed, use -v or -vv for full protocol decode listening on eth1, link-type EN10MB (Ethernet), capture size 262144 bytes 14:15:13.249277 IP 123.xxx.xxx.4 > iZbp1gt1xxx Z: ICMP echo request, id 2050, seq 150, length 40 14:15:13.249293 IP iZbxxx lh49gbqovzZ : 4: ICMP echo reply, id 2050, seq 150, length 40 14:15:14.263769 IP 123.xxx.xxx.4 > iZbp1gt1xxx Z: ICMP echo request, id 2050, seq 151, length 40 14:15:14.263783 IP iZbxxx lh49gbqovzZ : 4: ICMP echo reply, id 2050, seq 151, length 40 14:15:15.267143 IP 123.xxx.xxx.4 > iZbp1gt1xxx Z: ICMP echo request, id 2050, seq 152, length 40 14:15:15.267155 IP iZbxxx lh49gbqovzZ : 4: ICMP echo reply, id 2050, seq 152, length 40 14:15:16.275436 IP 123.xxx.xxx.4 > iZbp1gt1xxx Z: ICMP echo request, id 2050, seq 153, length 40 14:15:16.275449 IP iZbxxx lh49gbqovzZ : 4: ICMP echo reply, id 2050, seq 153, length 40
-
ENI'ler için varsayılan rotaları yapılandırma
ENI'leri ECS örneklerine bağladığınızda varsayılan rotalar otomatik olarak yapılandırılır. Ancak Ubuntu 18'den önceki bazı işletim sistemi sürümlerinde (örneğin Ubuntu 16), ikincil ENI'ler için varsayılan rotalar yapılandırılmayabilir ve bu durum ağ bağlantısı sorunlarına neden olur. Varsayılan bir rotayı manuel olarak yapılandırmak için aşağıdaki adımları izleyin.
Bu örnekte Ubuntu16 ve eth1 ikincil ENI'si kullanılmıştır.
-
ENI bilgilerini görüntüleyin:
ip aroot@xxx:/etc/network# ip a 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1 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 forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000 link/ether 00:16:3e:15:74:ee brd ff:ff:ff:ff:ff:ff inet 172.16.20.231/24 brd 172.16.20.255 scope global eth0 valid_lft forever preferred_lft forever inet6 fe80::216:3eff:fe15:74ee/64 scope link valid_lft forever preferred_lft forever 3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000 link/ether 00:16:3e:46:31:f4 brd ff:ff:ff:ff:ff:ff inet 172.16.20.199/24 brd 172.16.20.255 scope global eth1 valid_lft forever preferred_lft forever inet6 fe80::216:3eff:fe46:31f4/64 scope link valid_lft forever preferred_lft foreverÇıktı, eth1'in işletim sisteminde etkin olduğunu gösterir.
-
Rota bilgilerini görüntüleyin:
route -nÇıktı, eth1'in yalnızca dahili bir rotaya sahip olduğunu ve giden bir rota olmadığını gösterir.
root@xxx:/etc/network# route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 0.0.0.0 172.16.20.253 0.0.0.0 UG 0 0 0 eth0 172.16.20.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0 172.16.20.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1 -
eth1 için varsayılan rotayı yapılandırın:
ip -4 route add default via 172.16.20.253 dev eth1 metric 200-4: Yalnızca IPv4 adresleri için geçerlidir.172.16.20.253: eth1'in ağ geçidi adresidir.metric 200: Rota önceliğidir. Daha küçük bir değer daha yüksek öncelik anlamına gelir. Aynı hedefe birden fazla rota varsa en küçük metriğe sahip rota kullanılır.
-
Rota yapılandırmasını yeniden başlatmalar sırasında kalıcı hale getirin.
Kalıcılığı sağlamak için rota komutunu örnek başlangıç yapılandırmasına ekleyin. Aksi takdirde, yeniden başlatma sonrası rota kaybolur. Yalnızca test yapıyorsanız bu adımı atlayın.
-
/etc/rc.localdosyasını açın:vim /etc/rc.local -
Ekleme moduna girmek için
ituşuna basın, önceki adımdaki komutu ekleyin ve ardındanEsctuşuna basın. Dosyayı kaydedip kapatmak için:wqyazın ve Enter tuşuna basın.NotAğ arayüzü tanımlayıcısını ve ağ geçidi adresini kendi değerlerinizle değiştirin.
-
/etc/rc.localdosyasına yürütme izni verin:sudo chmod +x /etc/rc.local
-
-
eth1 için eklenen rotayı görüntüleyin:
route -nroot@ixxxxxxxxxx:/etc/network# route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 0.0.0.0 172.16.20.253 0.0.0.0 UG 0 0 0 eth0 0.0.0.0 172.16.20.253 0.0.0.0 UG 200 0 0 eth1 172.16.20.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0 172.16.20.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1