> For the complete documentation index, see [llms.txt](https://docs.ititanhosting.ro/docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.ititanhosting.ro/docs/romana/vps/linux/cum-configurezi-un-vpn-wireguard-pe-ubuntu.md).

# Cum configurezi un VPN WireGuard pe Ubuntu

WireGuard este un protocol VPN modern. Este mai rapid, mai simplu si mai sigur decat solutiile mai vechi ca OpenVPN. Un singur fisier de configurare este tot ce ai nevoie pentru a incepe.

Configurarea propriului VPN pe un VPS iti ofera un tunel privat catre internet. Iti poti securiza conexiunea pe Wi-Fi public, accesa reteaua de acasa remote sau oferi echipei tale acces securizat la server.

### Pasul 1: Instaleaza WireGuard

```bash
sudo apt update
sudo apt install wireguard -y
```

### Pasul 2: Genereaza cheile serverului

WireGuard foloseste chei publice si private, similar cu SSH:

```bash
cd /etc/wireguard
umask 077
wg genkey | tee server-private.key | wg pubkey > server-public.key
```

Asta creaza doua fisiere. `server-private.key` ramane secret pe server. `server-public.key` poate fi distribuit clientilor.

### Pasul 3: Creaza configuratia serverului

```bash
sudo nano /etc/wireguard/wg0.conf
```

Adauga urmatoarele, inlocuind cheia privata cu cea a serverului tau:

```ini
[Interface]
PrivateKey = <cheia-privata-server>
Address = 10.0.0.1/24
ListenPort = 51820
PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE

[Peer]
PublicKey = <cheia-publica-client>
AllowedIPs = 10.0.0.2/32
```

Obtine cheia privata a serverului:

```bash
sudo cat /etc/wireguard/server-private.key
```

Inlocuieste `eth0` cu interfata ta de retea reala daca este diferita. Verifica cu `ip route | grep default`.

### Pasul 4: Activeaza IP forwarding

Pentru ca VPN-ul sa routeze trafic, activeaza IP forwarding:

```bash
sudo nano /etc/sysctl.conf
```

Decomenteaza sau adauga aceasta linie:

```
net.ipv4.ip_forward=1
```

Aplica:

```bash
sudo sysctl -p
```

### Pasul 5: Configureaza firewall-ul

Permite portul WireGuard prin UFW:

```bash
sudo ufw allow 51820/udp
```

### Pasul 6: Porneste WireGuard

```bash
sudo systemctl start wg-quick@wg0
sudo systemctl enable wg-quick@wg0
```

Verifica starea:

```bash
sudo wg show
```

Ar trebui sa vezi interfata cu peer-ul configurat.

### Pasul 7: Configureaza un client (Linux desktop sau laptop)

Pe calculatorul client, instaleaza WireGuard:

```bash
sudo apt install wireguard -y   # Debian/Ubuntu
# sau
sudo dnf install wireguard-tools -y   # Fedora
```

Genereaza cheile clientului:

```bash
wg genkey | tee client-private.key | wg pubkey > client-public.key
```

Creaza configuratia clientului:

```bash
sudo nano /etc/wireguard/wg0.conf
```

```ini
[Interface]
PrivateKey = <cheia-privata-client>
Address = 10.0.0.2/24
DNS = 1.1.1.1

[Peer]
PublicKey = <cheia-publica-server>
Endpoint = ip-server-tau:51820
AllowedIPs = 0.0.0.0/0
PersistentKeepalive = 25
```

Daca setezi `AllowedIPs = 0.0.0.0/0`, tot traficul trece prin VPN. Daca vrei doar acces la reteaua serverului, foloseste `AllowedIPs = 10.0.0.0/24`.

### Pasul 8: Adauga cheia publica a clientului pe server

Pe server, adauga un alt peer in `wg0.conf`:

```ini
[Peer]
PublicKey = <cheia-publica-client>
AllowedIPs = 10.0.0.2/32
```

Apoi reporneste WireGuard:

```bash
sudo systemctl restart wg-quick@wg0
```

### Pasul 9: Conecteaza clientul

```bash
sudo wg-quick up wg0
```

Testeaza conexiunea ping-uind serverul de pe client:

```bash
ping 10.0.0.1
```

### Gestionarea WireGuard

Adauga un client nou:

1. Genereaza chei pe calculatorul client
2. Adauga o noua sectiune `[Peer]` pe server
3. Reporneste WireGuard
4. Da configuratia clientului utilizatorului

Elimina un client:

Sterge sectiunea `[Peer]` din configuratia serverului si reporneste.

Verifica conexiunile active:

```bash
sudo wg show
```

Fiecare client conectat arata ultimul handshake.

### Probleme comune

**"Destination address required"** AllowedIPs pe client ar putea fi gresit. Pentru tunel complet, foloseste `0.0.0.0/0`. Pentru tunel partial, foloseste doar subnet-ul VPN.

**Fara internet dupa conectare** IP forwarding ar putea fi dezactivat, sau regula NAT face referire la interfata gresita. Verifica `sudo sysctl net.ipv4.ip_forward` si `ip route | grep default`.

**Handshake fails** Asigura-te ca portul UDP 51820 este deschis in firewall. Verifica ca endpoint-ul IP si portul sunt corecte pe client.

### Concluzie

WireGuard este cel mai bun VPN pentru majoritatea cazurilor. Simplu de configurat, rapid si sigur. Acum ai propriul server VPN pe VPS-ul tau.
