Jak wiadomo, WireGuard — to VPN, który pozwala nam na stworzenie zabezpieczonego tunelu zarówno dla prywatnej sieci, jak i do przeglądania Internetu. Daje nam to bezpieczny i niezawodny dostęp do Internetu z telefonu komórkowego lub komputera osobistego.
Jak go zainstalować na czystym serwerze, można zapoznać się w tym artykule.
W tym przewodniku omówimy, jak zainstalować WireGuard w kontenerze Docker, używając Docker Compose.
Ale najpierw musimy zaktualizować pakiety systemu operacyjnego.
apt update
Zainstalujemy niezbędne pakiety i dodamy nowe repozytorium:
apt install apt-transport-https ca-certificates curl gnupg-agent software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
Zaktualizujemy pakiety z nowym repozytorium:
apt update
Teraz zainstalujemy samego Dockera.
apt-get install docker-ce docker-ce-cli containerd.io
Sprawdzimy wersję:
docker --version
Sprawdzimy status:
systemctl status docker
Jeśli nie uruchomił się, uruchamiamy go:
systemctl start docker
I dodajemy do autostartu.
systemctl enable docker
Dla tego projektu wystarczy wersja 1.25.
curl -L "https://github.com/docker/compose/releases/download/1.25.5/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
Nadajemy prawa do uruchamiania.
chmod +x /usr/local/bin/docker-compose
Sprawdzamy, jak zainstalował się Docker-Compose:
docker-compose --version
Dodajemy użytkownika Linux do grupy docker:
usermod -aG docker $USER
Stworzymy plik *.yaml dla Docker-Compose.
Aby w przyszłości orientować się w tym, co mamy zainstalowane, stworzymy osobny folder dla tego projektu w katalogu /opt i przejdziemy do niego.
mkdir /opt/wireguard-server && cd /opt/wireguard-server
Możesz również użyć swojego katalogu domowego /home do umieszczenia tego i innych projektów.
Skorzystamy z repozytorium linuxserver do stworzenia pliku docker-compose.yaml pod tym linkiem https://hub.docker.com/r/linuxserver/wireguard
Tworzymy plik docker-compose.yaml lub docker-compose.yml,
vim docker-compose.yaml
I dodajemy do niego następujący kod:
version: "2.1"
services:
wireguard:
image: lscr.io/linuxserver/wireguard:latest
container_name: wireguard
cap_add:
- NET_ADMIN
- SYS_MODULE
environment:
- PUID=0
- PGID=0
- TZ=Europe/Amsterdam
- SERVERURL=auto
- SERVERPORT=51820
- PEERS=1
- PEERDNS=1.1.1.1
- INTERNAL_SUBNET=10.10.10.0
- ALLOWEDIPS=0.0.0.0/0
- LOG_CONFS=true
volumes:
- /opt/wireguard-server/config:/config
- /lib/modules:/lib/modules
ports:
- 51820:51820/udp
sysctls:
- net.ipv4.conf.all.src_valid_mark=1
restart: always
Gdzie:
container_name: nazwa Twojego kontenera;
TZ=: strefa czasowa, możesz zmienić na potrzebną, ale dla anonimowości lepiej zostawić Europe/Amsterdam;
SERVERPORT=: losowy port, na którym będzie działać Twój VPN. Należy go również wpisać w ports.
PEERS=: liczba użytkowników. Można ją zwiększać do potrzebnej liczby;
51820:51820/udp - przekierowywane porty.
Uruchamiamy nasz skrypt (w tym celu musimy znajdować się w katalogu, w którym stworzono nasz plik. W tym przypadku to /opt/wireguard-server/):
docker-compose up -d
Czekamy na pobranie obrazów i wdrożenie.
Sprawdzamy:
docker-compose ps
lub
docker ps
Można to również zrobić jednym poleceniem w docker:
docker run -d \\ --name=wireguard \\ --cap-add=NET_ADMIN \\ --cap-add=SYS_MODULE \\ -e PUID=0 \\ -e PGID=0 \\ -e TZ=Europe/Amsterdam \\ -e SERVERURL=auto \\ -e SERVERPORT=51820 \\ -e PEERS=1 \\ -e PEERDNS=1.1.1.1 \\ -e INTERNAL_SUBNET=10.10.10.0 \\ -e ALLOWEDIPS=0.0.0.0/0 \\ -e LOG_CONFS=true \\ -p 51820:51820/udp \\ -v /opt/wireguard-server/config:/config \\ -v /lib/modules:/lib/modules \\ --sysctl="net.ipv4.conf.all.src_valid_mark=1" \\ --restart always \\ lscr.io/linuxserver/wireguard:latest
Aby wygenerować kod QR dla smartfona:
docker exec -it wireguard /app/show-peer 1
Gdzie:
1 - to pierwszy konfiguracja/użytkownik.
Wynik:
Wszystkie pliki konfiguracyjne i kody QR znajdują się w /opt/wireguard-server/config/peer*
Aby to zrobić, wystarczy zmienić dyrektywę PEERS w pliku docker-compose.yaml, dodać potrzebną liczbę użytkowników.
Aby zmiany zostały zastosowane, przekształcamy nasz kontener:
docker-compose up -d --force-recreate
Również dla anonimowości, wyłączamy ping na serwerze hosta:
echo "net.ipv4.icmp_echo_ignore_all = 1" >> /etc/sysctl.conf
I stosujemy zmiany:
sysctl -p
Miłego surfowania.