Am un server care rulează Ubuntu 20.04 LTS conectat printr-o interfață ethernet fizică la internet. Prodiverul meu mi-a atribuit un IP4 primar static (voi folosi A.A.A.A aici pentru acest IP), așa că fișierul meu de configurare systemd-networkd arăta așa înainte (netplan dezactivat pentru a funcționa direct cu systemd-networkd):
# /etc/systemd/network/20-enp7s0.network
[Meci]
Nume=enp7s0
[Reţea]
LinkLocalAddressing=ipv6
Adresa=A.A.A.A/32
Gateway=fe80::1
DNS=X.X.X.1
DNS=X.X.X.2
[Traseu]
Destinație=0.0.0.0/0
Gateway=Y.Y.Y.Y
GatewayOnlink=adevărat
Furnizorul meu oferă adăugarea unei adrese IP suplimentare la serverul meu, care este direcționată către aceeași interfață ca și IP-ul principal. Când adaug acest al doilea IP la interfața mea, pot să-l pun ping. Deoarece folosesc containere systemd-nspawn, mă gândeam să folosesc acest IP suplimentar pentru a furniza unuia dintre containerele mele un IP4 static exclusiv (voi folosi B.B.B.B aici). Ar fi grozav să mapați intrările DNS direct într-un container de pe serverul meu, în timp ce toate celelalte aplicații de pe server încă folosesc adresa IP primară.
Așa că am început să urmez instrucțiunile frumoase de pe wiki-ul Arch systemd-nspawn și systemd-networkd. Am configurat o punte și am mutat toate adresele de la interfața fizică la el:
/etc/systemd/network/br0.netdev
[NetDev]
Nume=br0
Kind=pod
Adresa MAC=xx:xx:xx:xx:xx:xx # la fel ca fizica mea. interfata
/etc/systemd/network/20-br0.network
[Meci]
Nume=br0
[Reţea]
LinkLocalAddressing=ipv6
Adresa=A.A.A.A/32
Gateway=fe80::1
DNS=X.X.X.1
DNS=X.X.X.2
[Traseu]
Destinație=0.0.0.0/0
Gateway=Y.Y.Y.Y
GatewayOnlink=adevărat
/etc/systemd/network/20-enp7s0.network
[Meci]
Nume=enp7s0
[Reţea]
Pod=br0
Redirecționarea IP4 este activată:
$ sysctl net.ipv4.ip_forward
net.ipv4.ip_forward = 1
Încep containerul meu nspawn cu următoarea configurație:
/etc/systemd/nspawn/mycontainer.nspawn
[Reţea]
VirtualEthernet=da
Pod=br0
În interiorul containerului (Debian 11 Bullseye) am activat systemd-networkd și am folosit următoarea configurație pentru rețea:
# /etc/systemd/network/80-container-host0.network
[Meci]
Nume=gazdă0
[Reţea]
Adresa=B.B.B.B/32
DNS=X.X.X.1
DNS=X.X.X.2
[Traseu]
Destinație=0.0.0.0/0
Gateway=Y.Y.Y.Y
GatewayOnlink=adevărat
Acesta este rezultatul acestei configurații. Pe gazda:
$ ip a
2: enp7s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq master br0 state UP group default qlen 1000
link/eter xx:xx:xx:xx:xx:xx brd ff:ff:ff:ff:ff:ff
3: br0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
link/eter xx:xx:xx:xx:xx:xx brd ff:ff:ff:ff:ff:ff
inet A.A.A.A/32 domeniu global br0
valid_lft pentru totdeauna preferred_lft pentru totdeauna
6: vb-mycontainer@if2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master br0 state UP group default qlen 1000
link/ether aa:aa:aa:aa:aa:aa brd ff:ff:ff:ff:ff:ff link-netnsid 0
$ starea networkctl -a
â 1: iată [...]
â 2: enp7s0
Fișier de legătură: /usr/lib/systemd/network/99-default.link
Fișier de rețea: /etc/systemd/network/20-enp7s0.network
Tip: eter
Stare: înrobit (configurat)
Calea: pci-0000:07:00.0
Sofer: igb
Furnizor: Intel Corporation
Model: I210 Gigabit Network Connection
Adresa HW: xx:xx:xx:xx:xx:xx
MTU: 1500 (min: 68, max: 9216)
Lungimea cozii (Tx/Rx): 8/8
Negociere automată: da
Viteza: 1 Gbps
Duplex: plin
Port: tp
Politica de activare: sus
Necesar pentru online: da
â 3: br0
Fișier de legătură: /usr/lib/systemd/network/99-default.link
Fișier de rețea: /etc/systemd/network/20-br0.network
Tip: pod
Stare: rutabil (configurat)
Șofer: pod
Adresa HW: xx:xx:xx:xx:xx:xx
MTU: 1500 (min: 68, max: 65535)
Întârziere înainte: 15s
Bună ziua Timp: 2s
Varsta maxima: 20 ani
Timp de maturare: 5 min
Prioritate: 32768
STP: nu
Versiunea IGMP multicast: 2
Lungimea cozii (Tx/Rx): 1/1
Adresa: A.A.A.A
Gateway: Y.Y.Y.Y (Juniper Networks)
fe80::1 (Juniper Networks)
DNS: X.X.X.1
X.X.X.2
Politica de activare: sus
Necesar pentru online: da
â 6: vb-mycontainer
Fișier de legătură: /usr/lib/systemd/network/99-default.link
Fișier de rețea: n/a
Tip: eter
Stare: degradat (negestionat)
Șofer: veth
Adresa HW: aa:aa:aa:aa:aa:aa
MTU: 1500 (min: 68, max: 65535)
Lungimea cozii (Tx/Rx): 1/1
Negociere automată: nu
Viteza: 10 Gbps
Duplex: plin
Port: tp
Adresă: fe80::xxxx:xxxx:xxxx:xxxx
Politica de activare: sus
Necesar pentru online: da
$ traseu ip
implicit prin Y.Y.Y.Y dev br0 proto static onlink
Și în interiorul recipientului meu:
# ip a
1: iată: [...]
2: host0@if6: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
link/ether aa:aa:aa:aa:aa:aa brd ff:ff:ff:ff:ff:ff link-netnsid 0
inet B.B.B.B/32 scope global host0
valid_lft pentru totdeauna preferred_lft pentru totdeauna
inet6 fe80::xxxx:xxxx:xxxx:xxxx/64 scope link
valid_lft pentru totdeauna preferred_lft pentru totdeauna
# starea networkctl -a
â 1: iată [...]
â 2: gazdă0
Fișier link: n/a
Fișier de rețea: /etc/systemd/network/80-container-host0.network
Tip: eter
Stare: rutabil (configurat)
Adresa HW: zz:zz:zz:zz:zz:zz
MTU: 1500 (min: 68, max: 65535)
QDisc: noqueue
Mod de generare a adresei IPv6: eui64
Lungimea cozii (Tx/Rx): 1/1
Negociere automată: nu
Viteza: 10 Gbps
Duplex: plin
Port: tp
Adresa: B.B.B.B
fe80::xxxx:xxxx:xxxx:xxxx
Gateway: Y.Y.Y.Y
DNS: X.X.X.1
X.X.X.2
DUID client DHCP6: DUID-EN/Vendor:0000ab117511f183668420370000
17 februarie 19:45:26 mycontainer systemd-networkd[25]: host0: Link UP
17 februarie 19:45:26 mycontainer systemd-networkd[25]: host0: operator câștigat
17 februarie 19:45:27 mycontainer systemd-networkd[25]: host0: IPv6LL obținut
# traseu ip
implicit prin Y.Y.Y.Y dev host0 proto static onlink
În ceea ce privește toate celelalte setări, rămân la setările implicite ale sistemului. Dar nu funcționează, nu pot da ping de la gazdă la oaspete, nici de la oaspete la gazdă, internet sau gateway, doar ajung Destinatie finala negasita. Deci îmi scapa ceva aici? Nu sunt cu adevărat adânc în rețele și am petrecut deja mult timp cu asta, dar deja îmi cer scuze pentru unele greșeli stupide pe care le-am putut face. Fiecare indiciu este binevenit. Mulțumesc!
EDITAȚI | ×:
M-am uitat la masa vecinilor:
Gazdă:
$ ip vecin
Y.Y.Y.Y dev br0 lladdr 84:c1:c1:76:ae:9b ACCESIBIL <- gateway
fe80::f80b:aff:fe80:d92 dev vb-mycontainer FAILED
fe80::6c91:a7ff:fe1f:19a2 dev br0 FAILED
fe80::1 dev br0 lladdr 84:c1:c1:76:ae:9b router STALE
fe80::f80b:aff:fe80:d92 dev br0 lladdr fa:0b:0a:80:0d:92 STALE
Oaspete:
$ ip vecin
fe80::7e10:c9ff:fe21:ed87 dev host0 lladdr 7c:10:c9:21:ed:87 router STALE
fe80::6c91:a7ff:fe1f:19a2 dev host0 FAILED
fe80::1 dev host0 lladdr 84:c1:c1:76:ae:9b router STALE
fe80::6c91:a7ff:fe1f:19a2 este adresa link-locale a interfeței virtuale vb-mycontainer de pe gazdă. Deci pare să existe o problemă de conexiune între oaspete și gazdă presupun?