במאמר הזה מוסבר איך ליצור מאזן עומסי רשת גלובלי חיצוני מסוג passthrough כדי לאזן את תעבורת הנתונים בין מערכות בק-אנד של NEG אזוריות שנפרסו בכמה אזורים.
לפני שמתחילים
חשוב לוודא שההגדרה עומדת בדרישות המוקדמות הבאות.
התקנת Google Cloud CLI
ההוראות במדריך הזה מתייחסות לשימוש ב-Google Cloud CLI כדי להגדיר מאזן עומסי רשת גלובלי חיצוני להעברת סיגנל ללא שינוי. הוראות להתקנה מופיעות במאמר התקנת ה-CLI של gcloud.
התפקידים הנדרשים
אם אתם יוצרי הפרויקט, מוקצה לכם התפקיד 'בעלים' (roles/owner). כברירת מחדל, התפקיד 'בעלים' (roles/owner) או התפקיד 'עריכה' (roles/editor) כוללים את ההרשאות שנדרשות כדי לבצע את הפעולות שמתוארות במאמר הזה.
אם אתם לא יוצרי הפרויקט, צריך להעניק את ההרשאות הנדרשות בפרויקט לחשבון המשתמש המתאים. לדוגמה, חשבון ראשי יכול להיות חשבון Google (למשתמשי קצה) או חשבון שירות.
כדי לקבל את ההרשאות שנדרשות להגדרה של מאזן עומסי רשת גלובלי חיצוני מסוג passthrough עם קצוות עורפיים של קבוצות מופעי VM, צריך לבקש מהאדמין להקצות לכם את תפקידי ה-IAM הבאים בפרויקט:
-
יצירת רשת VPC, תת-רשת ורכיבים של איזון עומסים:
התפקיד 'אדמין רשתות' ב-Compute (
roles/compute.networkAdmin) -
יצירת כללי חומת אש:
אדמין אבטחה ב-Compute (
roles/compute.securityAdmin) -
יצירת מכונות וירטואליות:
התפקיד 'אדמין מכונות של Compute' (
roles/compute.instanceAdmin)
להסבר על מתן תפקידים, ראו איך מנהלים את הגישה ברמת הפרויקט, התיקייה והארגון.
יכול להיות שאפשר לקבל את ההרשאות הנדרשות גם באמצעות תפקידים בהתאמה אישית או תפקידים מוגדרים מראש.
מידע נוסף על תפקידים והרשאות ב-Cloud Load Balancing זמין במאמר תפקידים והרשאות. למידע נוסף על הגדרת מדיניות IAM עם מענקים מותנים לכללי העברה, ראו תנאי IAM לכללי העברה.
סקירה כללית של ההגדרה
בתרשים הבא מוצג מאזן עומסי רשת גלובלי חיצוני להעברת סיגנל ללא שינוי עם מערכות בק-אנד של NEG אזוריות שנפרסו באזורים us-west1 ו-europe-west2.
כדי להבין איך פועל מאזן עומסי רשת חיצוני גלובלי מסוג passthrough, אפשר לעיין בקטע ארכיטקטורה במדריך הסקירה הכללית.
בדוגמה הזו, הרכיבים הבאים מוגדרים:
ארבע מכונות וירטואליות בבק-אנד:
-
vm-us-1ו-vm-us-2באזורus-west1-a -
vm-eu-1ו-vm-eu-2באזורeurope-west2-a
-
שתי קבוצות אזוריות של נקודות קצה ברשת (NEG) עם
GCE_VM_IPנקודות קצה:- צירוף
nic0שלvm-us-1ו-vm-us-2ל-NEG באזורus-west1-a - צירוף
nic0שלvm-eu-1ו-vm-eu-2ל-NEG באזורeurope-west2-a
- צירוף
מאזן עומסי רשת גלובלי חיצוני להעברת סיגנל ללא שינוי, לאיזון תעבורת נתונים
TCP:80בין ארבע נקודות הקצה ברשת.
הגדרת הרשתות ורשתות המשנה
בדוגמה הזו נעשה שימוש ברשת VPC במצב מותאם אישית בשם lb-network עם תת-רשתות בשני אזורים שונים.
אתם יכולים להגדיר מאזן עומסי רשת גלובלי להעברת סיגנל ללא שינוי עם נקודות קצה ברשת GCE_VM_IP שיכולות להפנות לממשק רשת של מכונה וירטואלית, שסוג הסטאק שלה יכול להיות IPv4 בלבד או סטאק כפול.
בטבלה הבאה מפורטת התאימות בין סוגי התעבורה של מאזן העומסים, ממשקי הרשת של מכונות וירטואליות בבק-אנד וסוגי מחסנית של רשתות משנה ב-VPC. חשוב לוודא שאתם מכירים את דרישות התאימות של ממשק הרשת של מכונת הבק-אנד עם רשתות המשנה של ה-VPC, שמפורטות במדריך לארכיטקטורה של מאזן עומסי רשת גלובלי חיצוני להעברת סיגנל ללא שינוי.
| סוג התנועה במאזן העומסים | סוג המערך של ממשק הרשת של מכונה וירטואלית בקצה העורפי | סוג ה-Stack של רשת המשנה של VPC |
|---|---|---|
| תנועה מסוג IPv4 בלבד | IPV4_ONLY |
IPV4_ONLY או IPV4_IPV6 |
IPV4_IPV6 |
IPV4_IPV6 |
|
| תנועה ב-IPv6 בלבד | IPV6_ONLY |
IPV6_ONLY או IPV4_IPV6 |
IPV4_IPV6 |
IPV4_IPV6 |
|
| תנועה ב-IPv4 וב-IPv6 | IPV4_IPV6 |
IPV4_IPV6 |
gcloud
יוצרים את רשת ה-VPC. בדוגמה הזו, רשת ה-VPC נקראת
lb-network.gcloud compute networks create lb-network --subnet-mode=custom
ברשת ה-VPC (
lb-network), יוצרים תת-רשתות בשני אזורים.יוצרים תת-רשת בשם
lb-subnet-usלנקודות הקצה של הרשת באזורus-west1.כדי ליצור רשת משנה עם IPv4 בלבד, משתמשים בפקודה הבאה:
gcloud compute networks subnets create lb-subnet-us \ --stack-type=IPV4_ONLY \ --network=lb-network \ --range=10.1.2.0/24 \ --region=us-west1כדי ליצור רשת משנה עם פרוטוקול כפול, משתמשים בפקודה הבאה:
gcloud compute networks subnets create lb-subnet-us \ --stack-type=IPV4_IPV6 \ --ipv6-access-type=EXTERNAL \ --network=lb-network \ --range=10.1.2.0/24 \ --region=us-west1יוצרים תת-רשת בשם
lb-subnet-euלנקודות הקצה של הרשת באזורeurope-west2.כדי ליצור רשת משנה ל-IPv4 בלבד, משתמשים בפקודה הבאה:
gcloud compute networks subnets create lb-subnet-eu \ --stack-type=IPV4_ONLY \ --network=lb-network \ --range=10.1.3.0/24 \ --region=europe-west2כדי ליצור רשת משנה עם תמיכה כפולה ב-תעבורת IPv4 ו-IPv6, משתמשים בפקודה הבאה:
gcloud compute networks subnets create lb-subnet-eu \ --stack-type=IPV4_IPV6 \ --ipv6-access-type=EXTERNAL \ --network=lb-network \ --range=10.1.3.0/24 \ --region=europe-west2
יצירת כללים לחומת האש
כדי להגדיר את סביבת הייצור בצורה מאובטחת, צריך ליצור שני כללים נפרדים בחומת האש:
כלל חומת אש של בדיקת תקינות, שמוגדר לאפשר תעבורת נתונים נכנסת (ingress) מ:
- טווחי כתובות ה-IP של בדיקת התקינות של Google, וגם
- פרוטוקול ה-IP והיציאות שמוגדרים בבדיקת התקינות
כלל חומת אש של תעבורת משתמשים, שמוגדר לאפשר תעבורת נתונים נכנסת (ingress) מהמקורות הבאים:
- טווחים ספציפיים של כתובות IP של מקורות לקוחות שצריכים לגשת למאזן העומסים, וכן
- פרוטוקול ה-IP והיציאות שהוגדרו בכללי ההעברה
שימו לב לנקודות הבאות:
אם האפליקציה שלכם מציגה תוכן לכל משתמשי האינטרנט ללא הגבלה, צריך להגדיר טווחי כתובות IP של מקור
0.0.0.0/0לתנועת IPv4 ו-::/0לתנועת IPv6.אם הגדרתם את בדיקת תקינות כדי לבדוק את פרוטוקול ה-IP והיציאות של מאזן העומסים, אתם יכולים להגדיר כלל חומת אש יחיד על ידי מיזוג של כללי חומת האש של בדיקת התקינות ותעבורת המשתמשים.
gcloud
יוצרים כלל חומת אש שמאפשר לתעבורת TCP מכל טווחי המקור להגיע למכונות הווירטואליות של השרתים העורפיים ביציאה 80. היציאה והפרוטוקול האלה משמשים גם לאיזון עומסים וגם לבדיקות תקינות.
כדי לאפשר את כל התנועה ב-IPv4, מריצים את הפקודה הבאה:
gcloud compute firewall-rules create firewall-allow-traffic-ipv4 \ --network=lb-network \ --target-tags=allow-traffic \ --allow=tcp:80 \ --source-ranges=0.0.0.0/0כדי לאפשר את כל תנועת ה-IPv6, מריצים את הפקודה הבאה:
gcloud compute firewall-rules create firewall-allow-traffic-ipv6 \ --network=lb-network \ --target-tags=allow-traffic \ --allow=tcp:80 \ --source-ranges=::/0
יצירת מכונות וירטואליות של בק-אנד
בדוגמה הזו של איזון עומסים, יוצרים ארבע מכונות וירטואליות (VM) כמו שמודגש בקטע סקירה כללית של ההגדרה.
בדוגמה הזו, הממשק nic0 של המכונה הווירטואלית משויך לרשת ה-VPC lb-network ולאחת מתת-הרשתות – lb-subnet-us או lb-subnet-eu. ממשק הרשת שאליו מפנה נקודת הקצה GCE_VM_IP חייב להיות באותה רשת משנה של VPC שמשויכת ל-NEG אזורי.
בטבלה הבאה מפורטת התאימות בין סוגי התעבורה של מאזן העומסים, ממשקי הרשת של מכונות וירטואליות בבק-אנד וסוגי מחסנית של רשתות משנה ב-VPC. חשוב לוודא שאתם מכירים את דרישות התאימות של ממשק הרשת של מכונת הבק-אנד עם רשתות המשנה של ה-VPC, שמפורטות במדריך לארכיטקטורה של מאזן עומסי רשת גלובלי חיצוני להעברת סיגנל ללא שינוי.
| סוג התנועה במאזן העומסים | סוג המערך של ממשק הרשת של מכונה וירטואלית בקצה העורפי | סוג ה-Stack של רשת המשנה של VPC |
|---|---|---|
| תנועה מסוג IPv4 בלבד | IPV4_ONLY |
IPV4_ONLY או IPV4_IPV6 |
IPV4_IPV6 |
IPV4_IPV6 |
|
| תנועה ב-IPv6 בלבד | IPV6_ONLY |
IPV6_ONLY או IPV4_IPV6 |
IPV4_IPV6 |
IPV4_IPV6 |
|
| תנועה ב-IPv4 וב-IPv6 | IPV4_IPV6 |
IPV4_IPV6 |
gcloud
מריצים את הפקודה gcloud compute instances create ארבע פעמים כדי ליצור את ארבע המכונות הווירטואליות, ומשתמשים בארבעת השילובים הבאים עבור VM_NAME, REGION, ZONE ו-SUBNET.
סקריפט ה-Bash זהה לכל ארבע המכונות הווירטואליות.
| VM_NAME | REGION | ZONE | SUBNET |
|---|---|---|---|
vm-us-1 |
us-west1 |
us-west1-a |
lb-subnet-us |
vm-us-2 |
us-west1 |
us-west1-a |
lb-subnet-us |
vm-eu-1 |
europe-west2 |
europe-west2-a |
lb-subnet-eu |
vm-eu-2 |
europe-west2 |
europe-west2-a |
lb-subnet-eu |
כדי ליצור מכונות וירטואליות של קצה עורפי עם ממשקי רשת IPv4 בלבד, משתמשים בפקודה הבאה.
gcloud compute instances create VM_NAME \
--zone=ZONE \
--image-family=debian-12 \
--image-project=debian-cloud \
--tags=allow-traffic \
--network-interface=network=lb-network,subnet=SUBNET,stack-type=IPV4_ONLY \
--metadata=startup-script='#! /bin/bash
apt-get update
apt-get install apache2 -y
a2ensite default-ssl
a2enmod ssl
vm_hostname="$(curl -H "Metadata-Flavor:Google" \
http://metadata.google.internal/computeMetadata/v1/instance/name)"
echo "Page served from: $vm_hostname" | \
tee /var/www/html/index.html
systemctl restart apache2'
כדי ליצור מכונות וירטואליות של קצה עורפי עם ממשקי רשת דו-ערכיים, משתמשים בפקודה הבאה.
gcloud compute instances create VM_NAME \
--zone=ZONE \
--image-family=debian-12 \
--image-project=debian-cloud \
--tags=allow-traffic \
--network-interface=network=lb-network,subnet=SUBNET,stack-type=IPV4_IPV6,ipv6-network-tier=PREMIUM \
--metadata=startup-script='#! /bin/bash
apt-get update
apt-get install apache2 -y
a2ensite default-ssl
a2enmod ssl
vm_hostname="$(curl -H "Metadata-Flavor:Google" \
http://metadata.google.internal/computeMetadata/v1/instance/name)"
echo "Page served from: $vm_hostname" | \
tee /var/www/html/index.html
systemctl restart apache2'
יצירה של קבוצות אזוריות של נקודות קצה ברשת (NEGs) עם נקודות קצה מסוג GCE_VM_IP
בדוגמה הזו של איזון עומסים, יוצרים שתי קבוצות של נקודות קצה ברשת (NEGs) אזוריות עם GCE_VM_IP נקודות קצה.
- NEG אזורי
neg-usבאזורus-west1-a. ה-NEG האזורי מורכב משתי נקודות קצה ברשת:- מצרפים את
nic0מתוךvm-us-1ואתvm-us-2ל-NEG אזוריneg-us
- מצרפים את
- Zonal NEG
neg-euב-europe-west2-a. ה-NEG האזורי מורכב משתי נקודות קצה ברשת:- מצרפים את
nic0מתוךvm-eu-1ואתvm-eu-2ל-NEG אזוריneg-eu
- מצרפים את
כשיוצרים NEG אזורי חדש עם נקודות קצה של GCE_VM_IP, צריך לשייך את ה-NEG לתת-רשת של VPC באופן מפורש לפני שמוסיפים נקודות קצה ל-NEG. מאזן העומסים מעביר חבילות ל-Network Interface שנמצא ברשת המשנה של ה-VPC שמשויכת ל-NEG. בדוגמה הזו, נקודות הקצה של קבוצת נקודות הקצה ברשת באזור יפנו אל nic0 של המכונות הווירטואליות.
gcloud
יוצרים
GCE_VM_IPzonal NEG בשםneg-usבאזורus-west1-a.gcloud compute network-endpoint-groups create neg-us \ --network-endpoint-type=gce-vm-ip \ --zone=us-west1-a \ --network=lb-network \ --subnet=lb-subnet-usמוסיפים נקודות קצה לקבוצת נקודות הקצה האזורית
neg-us.gcloud compute network-endpoint-groups update neg-us \ --zone=us-west1-a \ --add-endpoint='instance=vm-us-1' \ --add-endpoint='instance=vm-us-2'יוצרים
GCE_VM_IPzonal NEG בשםneg-euבאזורeurope-west2-a.gcloud compute network-endpoint-groups create neg-eu \ --network-endpoint-type=gce-vm-ip \ --zone=europe-west2-a \ --network=lb-network \ --subnet=lb-subnet-euמוסיפים נקודות קצה לקבוצת נקודות הקצה האזורית
neg-eu.gcloud compute network-endpoint-groups update neg-eu \ --zone=europe-west2-a \ --add-endpoint='instance=vm-eu-1' \ --add-endpoint='instance=vm-eu-2'
שמירת כתובות IP חיצוניות גלובליות
מאזן עומסי רשת גלובלי חיצוני להעברת סיגנל ללא שינוי דורש שתי כתובות IP חיצוניות גלובליות, אחת מכל קבוצת זמינות. שתי כתובות ה-IP האלה מצורפות לכלל ההעברה של מאזן העומסים.
במאזן עומסי רשת גלובלי חיצוני להעברת סיגנל ללא שינוי, כתובות ה-IP של כלל ההעברה מנותקות לחלוטין מרשתות המשנה של ה-VPC. כתובות ה-IP שייכות למאגרים גלובליים של כתובות IP חיצוניות בבעלות Google או לקידומות ציבוריות גלובליות של IPv4 חיצוניות שהוקצו על ידי BYOIP מקבוצות זמינות נפרדות, והן לא משויכות לרשת משנה של VPC.
כשמגדירים כלל העברה של IPv6, כתובות ה-IP של כלל ההעברה מוקצות כקידומות /96.
gcloud
לתנועת IPv4:
שומרים את כתובת ה-IP החיצונית הגלובלית הראשונה בשם
lb-ipv4-ag0בקבוצת הזמינות 0.gcloud beta compute addresses create lb-ipv4-ag0 \ --global \ --purpose=PASSTHROUGH_LOAD_BALANCER_AVAILABILITY_GROUP0 \ --ip-version=IPV4שומרים את כתובת ה-IP החיצונית הגלובלית השנייה
lb-ipv4-ag1בקבוצת הזמינות 1.gcloud beta compute addresses create lb-ipv4-ag1 \ --global \ --purpose=PASSTHROUGH_LOAD_BALANCER_AVAILABILITY_GROUP1 \ --ip-version=IPV4
לתנועת IPv6:
שומרים את כתובת ה-IP החיצונית הגלובלית הראשונה בשם
lb-ipv6-ag0בקבוצת הזמינות 0.gcloud beta compute addresses create lb-ipv6-ag0 \ --global \ --purpose=PASSTHROUGH_LOAD_BALANCER_AVAILABILITY_GROUP0 \ --ip-version=IPV6שומרים את כתובת ה-IP החיצונית הגלובלית השנייה
lb-ipv6-ag1בקבוצת הזמינות 1.gcloud beta compute addresses create lb-ipv6-ag1 \ --global \ --purpose=PASSTHROUGH_LOAD_BALANCER_AVAILABILITY_GROUP1 \ --ip-version=IPV6
הגדרת מאזן העומסים
הגדרה של מאזן עומסי רשת גלובלי חיצוני להעברת סיגנל ללא שינוי כוללת יצירה של בדיקת תקינות, שירות לקצה העורפי וכלל העברה.
gcloud
יצירת בדיקת תקינות של TCP שמוגדרת ליצירת
TCP:80בקשות לבדיקות תקינותgcloud compute health-checks create tcp hc-tcp-80 \ --global \ --port=80
יוצרים שירות קצה עורפי גלובלי באמצעות סכמת איזון העומסים
EXTERNAL_PASSTHROUGH.gcloud beta compute backend-services create lb-backend-service \ --load-balancing-scheme=EXTERNAL_PASSTHROUGH \ --health-checks=hc-tcp-80 \ --global
מוסיפים את קבוצות ה-NEG האזוריות כבק-אנד לשירות לקצה העורפי.
מוסיפים את ה-NEG האזורי לאזור
us-west1-aבשירות הקצה העורפי.gcloud beta compute backend-services add-backend lb-backend-service \ --network-endpoint-group=neg-us \ --network-endpoint-group-zone=us-west1-a \ --balancing-mode=RATE \ --max-rate-per-endpoint=100000 \ --globalמוסיפים את ה-NEG האזורי לאזור
europe-west2-aבשירות הקצה העורפי.gcloud beta compute backend-services add-backend lb-backend-service \ --network-endpoint-group=neg-eu \ --network-endpoint-group-zone=europe-west2-a \ --balancing-mode=RATE \ --max-rate-per-endpoint=100000 \ --globalיוצרים כלל העברה גלובלי להצגת תעבורת נתונים של
TCP:80. צריך ליצור שני כללי העברה כדי לטפל בתנועה של IPv4 ו-IPv6.מוודאים שגרסת ה-IP של כלל ההעברה תואמת לסוג המצבור של ממשקי הרשת של מכונת ה-VM בקצה העורפי.
כלל ההעברה מפנה לכתובות IP מכל קבוצת זמינות.
לתנועת IPv4:
gcloud beta compute forwarding-rules create lb-forwarding-rule-ipv4 \ --load-balancing-scheme=EXTERNAL_PASSTHROUGH \ --ip-protocol=TCP \ --ports=80 \ --backend-service=lb-backend-service \ --global \ --ip-addresses=lb-ipv4-ag0,lb-ipv4-ag1
לתנועת IPv6:
gcloud beta compute forwarding-rules create lb-forwarding-rule-ipv6 \ --load-balancing-scheme=EXTERNAL_PASSTHROUGH \ --ip-protocol=TCP \ --ports=80 \ --backend-service=lb-backend-service \ --global \ --ip-addresses=lb-ipv6-ag0,lb-ipv6-ag1
בדיקת מאזן העומסים
קבלת כתובות ה-IP השמורות שמצורפות לכלל ההעברה.
gcloud beta compute forwarding-rules describe lb-forwarding-rule-ipv4 \ --globalהפונקציה מחזירה שתי כתובות IP, אחת לכל קבוצת זמינות. כתובות ה-IP האלה נקראות
IP_ADDRESS_AVAILABILITY_GROUP_0ו-IP_ADDRESS_AVAILABILITY_GROUP_1.הפניית תנועה לאחת מכתובות ה-IP.
curl http://IP_ADDRESS_AVAILABILITY_GROUP_0
curl http://IP_ADDRESS_AVAILABILITY_GROUP_1
אמורות להופיע תשובות ממכונות וירטואליות בעורף (backend) באזורים שונים, בהתאם למיקום ולתקינות העורף.
בדיקה של טבלת הניתוב המקומית לכתובות ה-IP של מאזן העומסים
טבלאות הניתוב המקומיות של מכונות ה-VM בבק-אנד מכילות את כתובות ה-IP של מאזן עומסי הרשת הגלובלי החיצוני להעברת סיגנל ללא שינוי.
כדי לבדוק את המסלולים המקומיים במכונת ה-VM של השרת העורפי, מתחברים למכונת ה-VM של השרת העורפי באמצעות SSH ומריצים את הפקודה הבאה:
ip route list table local
הפלט אמור להיראות כך:
local 10.1.2.5 dev ens4 proto kernel scope host src 10.1.2.5 local 127.0.0.0/8 dev lo proto kernel scope host src 127.0.0.1 local 127.0.0.1 dev lo proto kernel scope host src 127.0.0.1 broadcast 127.255.255.255 dev lo proto kernel scope link src 127.0.0.1 local 136.124.69.214 dev ens4 proto 66 scope host local 136.124.83.205 dev ens4 proto 66 scope host
בדוגמה הקודמת, 136.124.69.214 ו-136.124.83.205 הם כתובות ה-IP שהוקצו לכלל ההעברה של איזון העומסים. הערכים local 136.124.69.214 dev ens4 proto 66 scope host ו-local 136.124.83.205
dev ens4 proto 66 scope host בטבלת הניתוב המקומית של המכונה הווירטואלית מאפשרים למערכת לקבל חבילות שמיועדות לכתובות ה-IP של מאזן העומסים. Cloud de Confiance סביבת האורחים אחראית להוספת הרשומה הזו.
הרשומה המקומית בטבלת הניתוב במכונת ה-VM של ה-Backend מקבלת את החבילה למסירה למארח המקומי, שבו סטאק הרשת מעביר אותה לאפליקציה שממתינה לה. לאחר מכן, חבילות התגובה מהאפליקציה נשלחות ישירות ללקוח.
שימו לב שכתובת ה-IP של איזון העומסים לא מוגדרת בפועל בממשק הרשת של המכונה הווירטואלית. כדי לבדוק זאת, מריצים את הפקודה הבאה:
ip addr list
הפלט אמור להיראות כך: כתובות ה-IP (136.124.69.214 ו-136.124.83.205) מופיעות בטבלת הניתוב המקומית, אבל הן לא מוגדרות בממשק הרשת.
1: lo:mtu 65536 qdisc noqueue state UNKNOWN group default 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 forever preferred_lft forever inet6 ::1/128 scope host noprefixroute valid_lft forever preferred_lft forever 2: ens4: mtu 1460 qdisc fq_codel state UP group default qlen 1000 link/ether 42:01:0a:01:02:0d brd ff:ff:ff:ff:ff:ff altname enp0s4 inet 10.1.2.13/32 metric 100 scope global dynamic ens4 valid_lft 84283sec preferred_lft 84283sec inet6 fe80::4001:aff:fe01:20d/64 scope link valid_lft forever preferred_lft forever