Al Mòdul 3 vas aprendre a mirar la xarxa: ip a, ping, dig, ss -tulpn, curl -v i una metodologia per capes per esbrinar per què alguna cosa no respon. Allò era diagnòstic, i el diagnòstic és lectura. Aquesta lliçó fa el pas següent i força més compromès: escriure. Decidiràs l'adreça IP de srv-tramontana, la seva passarel·la, els seus servidors DNS i les seves rutes, i ho deixaràs escrit de manera que sobrevisqui a un reinici.
Compromès és la paraula exacta: configurar la xarxa d'una màquina a la qual accedeixes per la xarxa és l'única tasca d'administració en què un error d'una lletra et deixa fora de manera instantània i sense avís. Per això, a més de la sintaxi de netplan, aquesta lliçó t'ensenya el procediment: validar abans d'aplicar, tenir una reversió automàtica i no deixar mai anar la consola de la VM. srv-tramontana continua amb la configuració que va deixar l'instal·lador —DHCP pur—, així que la seva IP depèn d'un servidor que no controles. Una aplicació de reserves el nom de servei de la qual apunta a 10.0.2.15 no es pot permetre que aquella adreça canviï un dimarts a la nit.
Contingut
- Repàs operatiu: IPv4, màscara, CIDR i xarxes privades
- IPv6 avui: link-local, SLAAC i per què no el desactives
- Configuració efímera amb
ipi per què es perd - Netplan: el model de renderers a Ubuntu 24.04
- El YAML de netplan, camp a camp
netplan tryi els permisos 600- Resolució de noms:
systemd-resolvedi l'stub 127.0.0.53 - El nom de la màquina:
hostnamectli/etc/hosts - Interfícies: noms predictibles, àlies, VLAN, bonding i ponts
- Rutes, mètriques i
ip route get - Reenviament de paquets i NAT com a conceptes
- Cas Tramontana: de DHCP a IP estàtica, verificat
- Repàs operatiu: IPv4, màscara, CIDR i xarxes privades
Una adreça IPv4 són 32 bits en quatre octets. La màscara els parteix en dos: la part de xarxa (bits a 1) i la d'amfitrió (bits a 0). La notació CIDR escriu la màscara com el nombre de bits a 1.
| CIDR | Màscara | Amfitrions útils | Ús típic |
|---|---|---|---|
/32 |
255.255.255.255 | 1 | Una IP concreta (regles de tallafocs) |
/30 |
255.255.255.252 | 2 | Enllaç punt a punt entre encaminadors |
/24 |
255.255.255.0 | 254 | LAN clàssica: la del teu laboratori |
/16 |
255.255.0.0 | 65.534 | Xarxa gran o rang de contenidors |
De cada xarxa, dues adreces no són assignables: la de xarxa (tots els bits d'amfitrió a 0, 10.0.2.0) i la de difusió (tots a 1, 10.0.2.255). D'aquí ve el «−2».
Les xarxes privades de la RFC 1918 no s'encaminen a Internet: 10.0.0.0/8 (empreses, VirtualBox NAT, núvols), 172.16.0.0/12 (Docker fa servir 172.17.0.0/16) i 192.168.0.0/16 (encaminadors domèstics). La passarel·la és l'adreça de l'encaminador dins de la teva pròpia xarxa a la qual s'envia tot el que no és local: srv-tramontana és a 10.0.2.15/24, parla directament amb qualsevol 10.0.2.x i lliura la resta a 10.0.2.2.
Per a les IP externes fem servir sempre els rangs de documentació de la RFC 5737: 192.0.2.0/24, 198.51.100.0/24 i 203.0.113.0/24. No facis servir mai adreces reals alienes en exemples ni en proves.
- IPv6 avui: link-local, SLAAC i per què no el desactives
IPv6 va deixar de ser «el futur» fa més d'una dècada i Ubuntu 24.04 el porta actiu.
- Tota interfície operativa té una adreça link-local
fe80::/10. No s'encamina fora del segment, però la fan servir el descobriment de veïns (NDP, l'equivalent d'ARP) i els anuncis d'encaminador. - SLAAC (autoconfiguració sense estat) permet que un amfitrió es construeixi la seva adreça global a partir del prefix que anuncia l'encaminador, sense DHCP. És el normal en IPv6; DHCPv6 existeix i hi conviu.
$ ip -6 addr show dev enp0s3
2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 state UP
inet6 fe80::a00:27ff:fe4b:1c93/64 scope linkNomés hi ha link-local perquè la xarxa NAT de VirtualBox no anuncia cap prefix IPv6. Desactivar IPv6 «per si de cas» és mala idea, encara que mig Internet ho recomani: no redueixes la superfície d'atac, la redueixes malament. Si un servei escolta a :: i tu desactives IPv6 a mitges, acabes amb regles de tallafocs que no cobreixen un camí que continua existint. A més trenques programari que assumeix ::1 —systemd-resolved inclòs— amb temps d'espera difícils de diagnosticar. La postura correcta és la mateixa que amb IPv4: si està actiu, protegeix-lo; per això el tallafocs de 06-03 farà servir table inet, que cobreix les dues famílies. I si de debò no el necessites en un segment, desactiva'l de manera explícita a netplan (accept-ra: false, link-local: []), no amb un pedaç a mitges.
- Configuració efímera amb
ip i per què es perd
ip i per què es perdL'ordre ip no només llegeix: també escriu. I el que escriu viu només al nucli, a memòria.
$ sudo ip addr add 10.0.2.99/24 dev enp0s3
$ ip -brief addr show dev enp0s3
enp0s3 UP 10.0.2.15/24 10.0.2.99/24 fe80::a00:27ff:fe4b:1c93/64
$ sudo ip route add 198.51.100.0/24 via 10.0.2.2 dev enp0s3
$ sudo ip link set enp0s3 mtu 1400
$ sudo ip addr del 10.0.2.99/24 dev enp0s3Fixa't que ip addr add afegeix, no substitueix: una interfície pot tenir diverses adreces alhora. I tot això desapareix en reiniciar, i també tan bon punt systemd-networkd reconfigura la interfície després d'un netplan apply. No hi ha cap fitxer implicat: l'estat de xarxa del nucli és volàtil per disseny. Això converteix ip en l'eina perfecta per provar una hipòtesi i en la pitjor possible per configurar un servidor.
- Netplan: el model de renderers a Ubuntu 24.04
Ubuntu va unificar la configuració de xarxa a netplan: tu escrius YAML declaratiu i netplan genera la configuració del rerefons que toqui.
flowchart LR
A["/etc/netplan/*.yaml"] --> B["netplan generate"]
B --> C["/run/systemd/network/*"]
B --> D["NetworkManager<br/>(escriptori)"]
C --> E["systemd-networkd<br/>(servidor)"]
E --> F["Nucli:<br/>adreces, rutes, DNS"]
D --> F
El renderer networkd és el d'Ubuntu Server —màquines fixes, servidors, núvol— i NetworkManager el d'Ubuntu Desktop, pensat per a portàtils amb wifi, itinerància i VPN d'usuari. A srv-tramontana és networkd.
Els fitxers viuen a /etc/netplan/ amb extensió .yaml, es llegeixen en ordre alfabètic i els últims guanyen sobre els primers. Per això es numeren:
Aquell fitxer el va escriure cloud-init durant la instal·lació i el pot reescriure en el següent arrencada. La manera neta de prendre'n el control és desactivar aquella part:
$ echo 'network: {config: disabled}' | sudo tee /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg
- El YAML de netplan, camp a camp
network:
version: 2
renderer: networkd
ethernets:
enp0s3:
dhcp4: false
dhcp6: false
addresses:
- 10.0.2.15/24
routes:
- to: default
via: 10.0.2.2
metric: 100
nameservers:
addresses: [10.0.2.2, 192.0.2.53]
search: [tramontana.example]
mtu: 1500
optional: false| Camp | Què fa | Detall que importa |
|---|---|---|
version: 2 |
Versió del format | Sempre 2; no n'hi ha cap altra en ús |
renderer |
Rerefons | networkd en servidor |
ethernets |
Tipus de dispositiu | També wifis, bridges, bonds, vlans |
enp0s3 |
Nom de la interfície | Ha de coincidir amb ip -brief link |
dhcp4/dhcp6 |
Client DHCP | Posa'ls a false explícitament amb IP fixa |
addresses |
Adreces amb CIDR | 10.0.2.15 sense /24 és un error freqüent |
routes |
Rutes estàtiques | to: default substitueix l'antic gateway4 |
metric |
Cost de la ruta | La menor guanya entre diverses rutes per defecte |
nameservers |
DNS i dominis de cerca | Es lliuren a systemd-resolved |
mtu |
Unitat màxima de transmissió | 1500 estàndard; 1450 típic dins d'un túnel |
optional: true |
No esperar la interfície en arrencar | Evita 2 minuts d'espera si no hi ha cable |
La sintaxi YAML que trenca tothom: la indentació és amb espais, mai amb tabuladors, i dos espais per nivell és la convenció. Un tabulador produeix un error tan críptic com found character '\t' that cannot start any token. Tres clàssics més: els dos punts necessiten un espai al darrere (dhcp4: false, no dhcp4:false); les llistes s'escriuen amb - o entre claudàtors, però no a mitges; i yes/no s'interpreten com a booleans, així que fes servir sempre true/false.
netplan generate tradueix el YAML a fitxers de systemd-networkd a /run sense activar-los. Si falla, no has tocat la xarxa:
$ sudo netplan generate && ls /run/systemd/network/
10-netplan-enp0s3.link 10-netplan-enp0s3.network
netplan try i els permisos 600
netplan try i els permisos 600Aquesta és l'ordre que separa qui ha perdut un servidor de qui no.
$ sudo netplan try
Do you want to keep these settings?
Press ENTER before the timeout to accept the new configuration
Changes will revert in 120 seconds
Configuration accepted.netplan try aplica la configuració, engega un compte enrere de 120 segons i espera el teu ENTER. Si has trencat la xarxa i la teva sessió SSH es talla, no pots prémer res: en esgotar-se el termini, netplan restaura la configuració anterior. Ajusta el termini amb --timeout 300 si el canvi és delicat.
| Ordre | Què fa | Reversible |
|---|---|---|
netplan generate |
Valida i genera fitxers a /run |
No aplica res |
netplan try |
Aplica amb reversió automàtica | Sí, automàtica |
netplan apply |
Aplica i prou | No |
netplan status --all |
Estat efectiu de xarxa i DNS | Només lectura |
netplan try no cobreix tots els casos: reverteix bé si el procés continua viu esperant el teu ENTER, però no si el sistema es penja. Per això la regla completa és try més consola de la VM oberta en una altra finestra; a VirtualBox aquella consola no passa per la xarxa.
Des de la 24.04, netplan avisa si els seus fitxers són llegibles per altres: Permissions for /etc/netplan/50-cloud-init.yaml are too open. La raó és directa: un fitxer de netplan pot contenir la contrasenya d'una xarxa wifi o credencials 802.1X en clar, i amb 644 les llegiria qualsevol usuari, inclòs becari. Aplica umask 027 i deixa'ls en 600 root:root.
- Resolució de noms:
systemd-resolved i l'stub 127.0.0.53
systemd-resolved i l'stub 127.0.0.53$ ls -l /etc/resolv.conf
lrwxrwxrwx 1 root root 39 ago 18 09:14 /etc/resolv.conf -> ../run/systemd/resolve/stub-resolv.conf
$ cat /etc/resolv.conf
nameserver 127.0.0.53
options edns0 trust-ad
search tramontana.example/etc/resolv.conf és un enllaç simbòlic a un fitxer generat, i l'únic servidor que hi apareix és 127.0.0.53: l'stub local de systemd-resolved. Les aplicacions pregunten a l'stub i l'stub reenvia als DNS reals que li ha lliurat netplan. Editar-lo a mà no serveix de res: es regenera en la següent arrencada o netplan apply.
$ resolvectl status
Link 2 (enp0s3)
Current Scopes: DNS
Protocols: +DefaultRoute -LLMNR -mDNS -DNSOverTLS
Current DNS Server: 10.0.2.2
DNS Servers: 10.0.2.2 192.0.2.53
DNS Domain: tramontana.example
$ resolvectl query reserves.tramontana.example
reserves.tramontana.example: 10.0.2.15 -- link: enp0s3
-- Information acquired via protocol DNS in 1.2ms.Tres coses que importen d'aquella sortida:
- El DNS es configura per interfície. Una màquina amb dues interfícies pot tenir DNS diferents a cadascuna, i
+DefaultRoutemarca quin es fa servir per al que no encaixi en un domini concret. DNS Domainés el domini de cerca: amb ell,resolvectl query reservescompleta areserves.tramontana.example.resolvectlté en compte/etc/hosts;digno, perquè parla directament amb el servidor. Aquella discrepància explica el 90 % dels «però sidigho resol bé». Iresolvectl flush-cachesbuida la memòria cau quan acabes de canviar un registre i continues veient l'antic.
- El nom de la màquina:
hostnamectl i /etc/hosts
hostnamectl i /etc/hosts$ hostnamectl
Static hostname: srv-tramontana
Chassis: vm
Virtualization: oracle
Operating System: Ubuntu 24.04.1 LTS
Kernel: Linux 6.8.0-41-generic
$ sudo hostnamectl set-hostname srv-tramontanaHi ha tres noms: l'estàtic (el de /etc/hostname, el que persisteix), el transitori (el que pot imposar el DHCP) i el bonic (--pretty, text lliure). /etc/hosts ha de ser coherent, perquè molts programes resolen el seu propi nom en arrencar:
127.0.0.1 localhost 127.0.1.1 srv-tramontana 10.0.2.15 srv-tramontana reserves.tramontana.example ::1 localhost ip6-localhost ip6-loopback
La línia 127.0.1.1 és una convenció de Debian/Ubuntu perquè el nom resolgui fins i tot sense xarxa.
- Interfícies: noms predictibles, àlies, VLAN, bonding i ponts
enp0s3 no és arbitrari: és un nom predictible generat per systemd a partir de la posició física del dispositiu — en (ethernet) + p0 (bus PCI 0) + s3 (ranura 3). El sistema antic (eth0, eth1) numerava segons l'ordre de detecció del nucli, que podia canviar entre arrencades i deixar-te el cable de gestió a la interfície equivocada.
Un àlies d'IP és simplement una segona adreça a la mateixa interfície: n'hi ha prou d'afegir-la a addresses. Serveix per migrar un servei d'una IP a una altra sense tallar. I aquesta és la vista general de les interfícies virtuals que veuràs tan bon punt surtis del laboratori, sense muntar-les aquí:
| Tipus | Per a què serveix | Clau de netplan | Quan la necessites |
|---|---|---|---|
| VLAN | Separar xarxes lògiques sobre un mateix cable (802.1Q) | vlans: amb id i link |
Un commutador lliura diverses xarxes per un port troncal |
| Bonding | Agregar diverses NIC: redundància o més amplada de banda | bonds: amb interfaces i parameters.mode |
Servidor físic amb dues targetes i dos commutadors |
| Bridge | Commutador per programari al mateix domini de difusió | bridges: amb interfaces |
VM o contenidors a la LAN física |
| Túnel / VPN | Xarxa privada sobre una xarxa pública | tunnels: |
Unir seus o teletreball → projecte 08-04 |
La VPN apareix aquí només com a concepte de xarxa: el servidor WireGuard complet es munta al projecte 08-04.
- Rutes, mètriques i
ip route get
ip route get$ ip route
default via 10.0.2.2 dev enp0s3 proto static metric 100
10.0.2.0/24 dev enp0s3 proto kernel scope link src 10.0.2.15Dues entrades: la ruta per defecte i la ruta d'enllaç de la pròpia xarxa, que el nucli crea tot sol en assignar l'adreça. El nucli tria sempre la ruta més específica (el prefix més llarg) i, en igualtat, la de mètrica menor. Una ruta estàtica persistent s'afegeix al bloc routes del YAML amb to: 198.51.100.0/24 i via: 10.0.2.9.
L'eina d'or per no discutir és preguntar al nucli què farà amb un paquet concret, sense enviar res:
$ ip route get 198.51.100.7
198.51.100.7 via 10.0.2.9 dev enp0s3 src 10.0.2.15 uid 1000
$ ip route get 10.0.2.77
10.0.2.77 dev enp0s3 src 10.0.2.15 uid 1000La primera surt per l'encaminador 10.0.2.9 segons la ruta estàtica; la segona és local i no passa per cap encaminador. Quan algú afirmi «és que el trànsit no va per on ha d'anar», ip route get tanca la conversa en un segon.
- Reenviament de paquets i NAT com a conceptes
Per defecte, Linux no reenvia paquets entre interfícies: si n'arriba un que no va adreçat a ell, el descarta. Ho controla un paràmetre del nucli, i activar-lo converteix la màquina en un encaminador:
$ sysctl net.ipv4.ip_forward
net.ipv4.ip_forward = 0
$ echo 'net.ipv4.ip_forward = 1' | sudo tee /etc/sysctl.d/99-forward.conf
$ sudo sysctl --systemEs fa de manera persistent a /etc/sysctl.d/, mai editant /etc/sysctl.conf a mà. NAT és el que fa l'encaminador de casa teva i el que fa VirtualBox amb la xarxa 10.0.2.0/24: reescriu l'adreça d'origen dels paquets sortints perquè tots semblin venir d'una sola IP, i manté una taula per tornar les respostes. NAT no és seguretat, encara que ho sembli: és un apedaçament per a l'escassetat d'IPv4 que, de propina, fa que les connexions entrants no arribin a ningú per defecte.
srv-tramontana no necessita ni reenviament ni NAT: és un servidor final, i deixar ip_forward = 0 és la postura correcta. L'activaràs amb la VPN del projecte 08-04. Les regles de filtratge i NAT s'escriuen amb ufw/nftables, i això és la lliçó 06-03.
- Cas Tramontana: de DHCP a IP estàtica, verificat
Pas 0 — mesurar abans i fer còpia, la convenció del curs:
$ { ip -brief a; echo; ip r; echo; resolvectl status; echo; ss -tulpn; } \
| sudo tee /root/xarxa-referencia.txt > /dev/null
$ sudo cp /etc/netplan/50-cloud-init.yaml /etc/netplan/50-cloud-init.yaml.bak-$(date +%F)Pas 1 — obrir la consola de la VM a VirtualBox i deixar una segona sessió SSH oberta. No tanquis mai la porta per la qual estàs entrant.
Pas 2 — escriure la configuració:
$ sudo install -m 600 -o root -g root /dev/null /etc/netplan/60-tramontana.yaml
$ sudo tee /etc/netplan/60-tramontana.yaml > /dev/null <<'YAML'
network:
version: 2
renderer: networkd
ethernets:
enp0s3:
dhcp4: false
dhcp6: false
accept-ra: false
addresses:
- 10.0.2.15/24
routes:
- to: default
via: 10.0.2.2
metric: 100
nameservers:
addresses: [10.0.2.2]
search: [tramontana.example]
optional: false
YAML
$ sudo mv /etc/netplan/50-cloud-init.yaml /root/50-cloud-init.yaml.retiratEl fitxer de cloud-init es retira fora de /etc/netplan/: no n'hi ha prou de reanomenar-lo dins del directori, perquè netplan llegeix qualsevol .yaml.
Pas 3 — validar sense aplicar: sudo netplan generate i comprovar que retorna 0.
Pas 4 — aplicar amb xarxa de seguretat: sudo netplan try. Abans de prémer ENTER, comprova des de l'altra sessió que continues tenint accés i que l'aplicació respon. Només aleshores acceptes.
Pas 5 — mesurar després i comparar:
$ { ip -brief a; echo; ip r; echo; resolvectl status; echo; ss -tulpn; } > /tmp/xarxa-actual.txt
$ sudo diff -u /root/xarxa-referencia.txt /tmp/xarxa-actual.txt
-default via 10.0.2.2 dev enp0s3 proto dhcp src 10.0.2.15 metric 100
+default via 10.0.2.2 dev enp0s3 proto static metric 100
- DNS Domain: ~.
+ DNS Domain: tramontana.exampleL'única cosa que ha canviat és el que volíem: la ruta passa de proto dhcp a proto static i apareix el domini de cerca. La IP és la mateixa i els serveis escolten igual. Si el diff mostrés res més, tindries un problema per investigar ara, no d'aquí a tres setmanes.
Pas 6 — la prova de foc, reiniciar:
$ sudo reboot
$ ssh [email protected] 'ip -brief a show enp0s3; curl -sS -o /dev/null -w "%{http_code}\n" http://localhost:8080/salut'
enp0s3 UP 10.0.2.15/24 fe80::a00:27ff:fe4b:1c93/64
200Una configuració de xarxa no està acabada fins que sobreviu a un reinici. Documenta el canvi a /opt/tramontana/HISTORIAL, com tota la resta.
Errors Comuns i Consells
- Tabuladors al YAML. És, de bon tros, l'error número u. Configura el teu editor perquè als
.yamlinsereixi espais (:set expandtaba vim) i executa semprenetplan generateabans d'aplicar. - Oblidar el CIDR a
addresses.- 10.0.2.15sense/24dona un error de validació poc clar. L'adreça sempre porta la seva màscara. - Fer servir
netplan applyen una màquina remota. Si t'equivoques, només la recuperes per consola física o de l'hipervisor.netplan trycosta el mateix i perdona. - Editar
/etc/resolv.conf. És un enllaç a un fitxer generat: el teu canvi dura fins a la següent arrencada. El DNS es canvia a netplan i es comprova ambresolvectl status. - Deixar actiu el fitxer de
cloud-init. Pot reescriure la teva configuració en arrencar; desactiva'l amb99-disable-network-config.cfg. - Assignar una IP estàtica dins del rang del DHCP. Tard o d'hora el servidor DHCP la dona a un altre i tens un conflicte intermitent i desesperant. Demana una reserva o un rang exclòs.
- Consell: guarda
/etc/netplan/a git juntament amb els teus scripts. És configuració de producció i mereix historial, igual que les unitats de systemd.
Advertiment de seguretat i compliment: un canvi d'adreçament en un servidor que tracta dades personals d'hostes afecta regles de tallafocs, llistes de control d'accés i registres d'auditoria. En un entorn real es planifica amb finestra de manteniment, es comunica a les persones responsables i ho revisa el responsable de seguretat. No reconfiguris ni escanegis mai xarxes que no siguin teves: aquí tot es fa sobre srv-tramontana, la teva pròpia VM.
Exercicis
- Doble comprovació abans d'aplicar. Escriu la seqüència exacta d'ordres per canviar el DNS de
srv-tramontanade10.0.2.2a192.0.2.53, des d'una sessió SSH, sense arriscar-te a perdre la resolució de noms. Inclou-hi la verificació posterior. - Segona adreça i ruta estàtica. Afegeix a
enp0s3l'adreça10.0.2.16/24i una ruta cap a198.51.100.0/24a través de10.0.2.9, de manera persistent. Després demostra, sense generar trànsit real, que un paquet a198.51.100.7sortirà per aquella ruta i no per la de defecte. - Diagnòstic d'un YAML trencat. En aplicar la teva configuració obtens
Error in network definition: enp0s3: unknown key 'gateway4'. Explica què ha passat, corregeix-ho i digues per què netplan no ha deixat la màquina sense xarxa.
Solucions
1. Un DNS que no respon deixa la màquina «funcionant i muda», així que es tracta amb el mateix procediment que la IP:
$ sudo cp /etc/netplan/60-tramontana.yaml /root/60-tramontana.yaml.bak-$(date +%F)
$ sudo sed -i 's/addresses: \[10\.0\.2\.2\]/addresses: [192.0.2.53]/' /etc/netplan/60-tramontana.yaml
$ sudo diff -u /root/60-tramontana.yaml.bak-$(date +%F) /etc/netplan/60-tramontana.yaml
- addresses: [10.0.2.2]
+ addresses: [192.0.2.53]
$ sudo netplan generate && sudo netplan tryVerificació des de la sessió de seguretat, abans de prémer ENTER:
$ resolvectl status | grep 'Current DNS'
Current DNS Server: 192.0.2.53
$ resolvectl flush-caches && resolvectl query reserves.tramontana.example
reserves.tramontana.example: 10.0.2.15 -- link: enp0s3Dos detalls: la còpia va a /root i no a /etc/netplan/, perquè qualsevol fitxer .yaml d'aquell directori es llegeix (amb .bak-data no ho seria, però és millor no dependre'n); i si el DNS nou no respongués, netplan try reverteix tot sol als 120 segons.
2. S'afegeix l'adreça a la llista i la ruta al bloc routes:
addresses:
- 10.0.2.15/24
- 10.0.2.16/24
routes:
- to: default
via: 10.0.2.2
metric: 100
- to: 198.51.100.0/24
via: 10.0.2.9$ sudo netplan generate && sudo netplan try
$ ip -brief a show enp0s3
enp0s3 UP 10.0.2.15/24 10.0.2.16/24 fe80::a00:27ff:fe4b:1c93/64
$ ip route get 198.51.100.7
198.51.100.7 via 10.0.2.9 dev enp0s3 src 10.0.2.15 uid 1000ip route get interroga la taula de rutes del nucli sense enviar cap paquet: és la demostració exacta que demanava l'enunciat. Si hagués retornat via 10.0.2.2, la ruta estàtica no s'hauria aplicat.
3. gateway4 era la clau clàssica per a la passarel·la i està eliminada a les versions de netplan d'Ubuntu 24.04. El seu substitut és una entrada a routes:
El canvi es va fer perquè gateway4 només permetia una passarel·la i no admetia mètriques ni taules alternatives; routes cobreix tots els casos amb la mateixa sintaxi. I la màquina no s'ha quedat sense xarxa perquè l'error el va detectar l'analitzador de netplan a la fase de generate, abans de tocar res: la configuració només arriba al nucli si el YAML és vàlid en la seva totalitat. Aquest és exactament el motiu pel qual netplan generate va sempre abans que netplan try: separa els errors de sintaxi (barats) dels de contingut (cars).
Conclusió
srv-tramontana ja no depèn d'un servidor DHCP per tenir l'adreça que el seu propi nom de servei anuncia. Has deixat la xarxa escrita, versionada i verificada: un fitxer de netplan amb permisos 600, IP estàtica 10.0.2.15/24, passarel·la 10.0.2.2, DNS i domini de cerca declarats, resolució a través de systemd-resolved i un procediment —mesurar, generate, try, comparar amb diff -u, reiniciar— que pots repetir en qualsevol màquina sense suar. Pel camí has vist per què ip serveix per provar i no per configurar, per què IPv6 es protegeix en comptes de desactivar-se, i com preguntar al nucli per on sortirà un paquet concret.
Però fixa't en el que acabes de fer: has fixat una adreça estable i ben coneguda per a un servidor que accepta connexions SSH amb contrasenya, permet entrar com a root i ja acumula 47 intents fallits des de 203.0.113.44 a /var/log/btmp. Li has posat una bústia permanent a una porta que no té pany. A la lliçó següent, 06-02: SSH i Accés Remot, arregles justament això: entendràs les tres fases del protocol i què significa de debò l'empremta que et demana acceptar la primera vegada, generaràs claus ed25519, desterraràs l'autenticació per contrasenya, enfortiràs sshd_config directiva a directiva sense quedar-te fora de la màquina, muntaràs túnels per arribar a la base de dades de Tramontana sense exposar-la, i llegiràs amb lastb qui porta 47 intents trucant a la teva porta.
Curs de Linux: De Principiant a Administrador de Sistemes
Mòdul 1: Introducció a Linux
- Què és Linux?
- Història de Linux
- Distribucions de Linux
- Instal·lant Linux
- Primer Contacte amb el Sistema
- Estructura del Sistema de Fitxers de Linux
Mòdul 2: Comandes Bàsiques de Linux
- Introducció a la Línia de Comandes
- Obtenir Ajuda i Documentació del Sistema
- Navegant pel Sistema de Fitxers
- Operacions amb Fitxers i Directoris
- Visualització i Edició de Fitxers
- Enllaços Durs i Simbòlics
- Permisos i Propietat dels Fitxers
Mòdul 3: Habilitats Avançades en la Línia de Comandes
- L'Entorn del Shell: Variables, Àlies i Historial
- Ús de Comodins i Expressions Regulars
- Cerca de Fitxers i Contingut: find, locate i grep
- Canonades i Redirecció
- Processament de Text: cut, sort, uniq, sed i awk
- Gestió de Processos
- Programació de Tasques amb Cron
- Comandes de Xarxa
Mòdul 4: Scripting en Shell
- Introducció al Scripting en Shell
- Variables i Tipus de Dades
- Entrada, Sortida i Arguments d'un Script
- Estructures de Control
- Funcions i Biblioteques
- Depuració i Gestió d'Errors
- Scripts de Producció: Bones Pràctiques
Mòdul 5: Administració del Sistema
- Gestió d'Usuaris i Grups
- sudo i Permisos Especials
- Gestió de Paquets
- Gestió de Discs
- systemd i la Gestió de Serveis
- Registres del Sistema: journald i syslog
- Monitoratge del Sistema i Optimització del Rendiment
- Còpies de Seguretat i Restauració
Mòdul 6: Xarxes i Seguretat
- Configuració de Xarxes
- SSH i Accés Remot
- Tallafocs i Seguretat Perimetral
- Sistemes de Detecció d'Intrusions
- Gestió de Secrets i Certificats TLS
- Assegurant Sistemes Linux
Mòdul 7: Temes Avançats
- El Procés d'Arrencada i la Recuperació del Sistema
- Diagnòstic Avançat: strace, perf i eBPF
- Optimització del Nucli de Linux
- Virtualització amb Linux
- Contenidors de Linux i Docker
- Automatització amb Ansible
- Alta Disponibilitat i Balanceig de Càrrega
