La majoria de configuracions de WireGuard trencades no s'equivoquen en un valor; posen el valor correcte al costat equivocat. Una clau privada pertany a aquesta màquina, un peer porta la clau pública de l'altra màquina, i una adreça seu al bloc d'interface tot i que descriu on viu el túnel. Llegiu el fitxer com dues direccions que es troben i després comproveu què ha afegit l'script auxiliar a sobre. El protocol mateix té menys camps que el fitxer, i els camps extra val la pena conèixer-los per separat.

Les claus d'interface descriuen aquesta màquina

El bloc d'interface conté la identitat pròpia d'aquest extrem. PrivateKey és aquesta identitat i no surt mai de l'host; la clau pública corresponent se'n deriva i és el que llisten els altres peers. ListenPort és on aquest costat rep els handshakes, així que dos clients darrere d'una adreça necessiten ports diferents.

Address és l'adreça del túnel a què respon aquest host, escrita amb una longitud de prefix perquè també és l'origen que farà servir. Equivocar el prefix aquí canvia quines destinacions l'host creu que són enllaç directe, cosa que produeix fallades que semblen d'encaminament i no de configuració.

Tota la resta en un [Interface] bloc amb un client real normalment ho afegeix wg-quick: DNS, MTU, Table, i les línies de ganxo. No són camps del protocol, i una instal·lació wg nua els ignora del tot.

Cada entrada de peer descriu un altre costat

Un [Peer] bloc és la part remota. PublicKey és la clau derivada d'aquesta part, mai la seva clau privada, i PresharedKey és un secret extra opcional que tots dos costats han de tenir idèntic. Endpoint és on enviar, i PersistentKeepalive demana a aquest host que enviï un paquet després de l'interval quan no surt res més.

Dos errors expliquen la major part de la confusió aquí. Copiar la vostra pròpia clau privada en un bloc peer fa que els dos extrems comparteixin una identitat, i el handshake falla d'una manera que es registra malament. Deixar Endpoint fora en un client sol ser intencionat, perquè el servidor aprèn l'adreça del handshake entrant; deixar-lo fora en un servidor que ha d'iniciar no ho és. Recordeu també que keepalive manté oberta una assignació NAT i no millora el rendiment ni redueix la latència, així que trenta segons de paquets extra no compren res quan el trànsit ja flueix.

AllowedIPs és encaminament, no una llista de permisos

AllowedIPs és l'encaminament per clau criptogràfica de WireGuard. De sortida, decideix quin peer rep un paquet segons la seva destinació. D'entrada, decideix si un paquet que arriba d'aquest peer s'accepta segons el seu origen. El mateix camp fa les dues feines, i per això no és una llista de control d'accés ni una llista de llocs permesos.

Un AllowedIPs estret al servidor per a un client vol dir que el servidor només acceptarà paquets que declarin aquests orígens i només enviarà aquestes destinacions a aquest client. Amplieu un costat sense ampliar l'altre i tindreu un túnel que puja i no passa res.

Què afegeix wg-quick al voltant del protocol

wg-quick llegeix el mateix fitxer i fa els passos de xarxa que el protocol deixa al sistema operatiu. Assigna l'adreça de la interfície, afegeix rutes derivades d'AllowedIPs, escriu la configuració del resolutor i executa les ordres de ganxo en ordre.

Aquesta capa explica l'asimetria clàssica. Un fitxer amb 0.0.0.0/0 i una línia DNS dona al client una ruta per defecte i un resolutor, i no fa absolutament res a les regles de reenviament ni de NAT del servidor. Aquestes pertanyen a la configuració del mateix servidor, i cap fitxer de client no les pot subministrar.

Mantingueu un sol propietari del fitxer. Editar-lo a mà mentre SaveConfig està activat vol dir que la vostra edició desapareix la propera vegada que la interfície baixi, i la interfície no us dirà que ha passat.

Comproveu l'estat aplicat, no el fitxer

El fitxer és una intenció. L'estat aplicat és el que manté el nucli, i divergeixen sempre que un auxiliar, un drop-in o un ganxo ha editat alguna cosa després de l'activació.

Llegiu l'estat viu i l'adreçament junts, i després compareu tots dos amb el que heu escrit:

sudo wg show
ip -4 addr show dev wg0
ip -4 route show dev wg0
grep -v "^#" /etc/wireguard/wg0.conf

Si la llista de peers és buida, la interfície es va crear sense que s'apliqués la seva configuració. Si hi ha adreces i rutes però els comptadors es queden a zero, el fitxer s'ha carregat i el handshake falla, cosa que és un problema de clau o d'extrem i no d'ordre de seccions. Compareu les dues vistes abans d'editar, perquè la diferència entre elles sol ser la fallada real.

Articles relacionats