Sign inSign up

cpehub/wireguard

By cpehub

•Updated over 2 years ago

Image
0

2.5K

cpehub/wireguard repository overview

⁠Cpehub - VPN Wireguard

Este repositório contém tudo o necessário para implantar um serviço VPN WireGuard dentro de um container Docker. O WireGuard é uma VPN extremamente simples, porém rápida e moderna, que utiliza criptografia de última geração. Ele visa ser mais rápido, mais simples, mais enxuto e mais útil do que o IPSec, otimizando a execução de VPN com chaves públicas, minimizando o ataque à superfície. O seu desempenho é consideravelmente melhor e mais consistente, mesmo em redes instáveis, tornando-o uma escolha popular para segurança, simplicidade e velocidade.

⁠Como Funciona o WireGuard

WireGuard funciona estabelecendo uma conexão de rede segura ponto a ponto ou site a site usando criptografia de última geração. Ele é projetado para ser executado em interfaces virtuais ou físicas para conectar diferentes segmentos de rede. O WireGuard utiliza UDP para a transmissão de dados, o que contribui para sua simplicidade e eficiência.

As portas UDP podem ser alteradas conforme a necessidade, dificultando a descoberta do serviço, o que ocorre com outras tecnologias de tunelamento que utilizam portas e protocolos específicos.

⁠Segurança

A segurança é uma prioridade máxima no design do WireGuard, que utiliza algoritmos criptográficos reconhecidos por sua força e eficácia, como o Curve25519 para ECDH, ChaCha20 para criptografia simétrica, Poly1305 para autenticação de mensagens, entre outros. Essas escolhas garantem uma conexão segura e privada entre os pontos da rede.

⁠Uso Amplo

WireGuard está sendo amplamente adotado devido à sua simplicidade de configuração, desempenho superior e robustez de segurança. Ele é adequado tanto para pequenos projetos pessoais quanto para implantações empresariais complexas, fornecendo uma solução VPN moderna que é tanto acessível quanto poderosa.

⁠Início Rápido

Para começar, utilize o arquivo docker-compose.example como um ponto de partida. Certifique-se de ajustar as variáveis de ambiente conforme necessário, incluindo chaves privadas e públicas, endereços IP, entre outros.

Para gerar chaves, basta rodar o container sem nenhuma configuração que o container irá gerar um conjunto de chaves privadas/públicas para realizar a configuração das variáveis de ambiente do docker-compose:

user$ docker run --rm cpehub/wireguard

Cpehub - VPN Wireguard
Repositório: https://github.com/cpehub/wireguard
Fatal error: Local private key not found
Generating key: 
Local Private Key:
IFB8pqfq0e1r1XS6XisA4YFIP4zXIYWaUEj+E0l7aGo=
Local Public Key (Configure this in the remote peer):
4yzZzqswt81XBiVA9cOiV6/AgCXUUhWwtq24kC2pCRI=

Utilize a chave privada para realizar a configuração do docker-compose, lembre-se que você deve fazer o processo em ambos os peers (ter duas chaves privadas/públicas) para realizar a configuração.

⁠docker-compose.yaml
version: '3.8'

services:
  wireguard:
    image: cpehub/wireguard
    restart: on-failure
    network_mode: host
    cap_add:
      - NET_ADMIN
      - SYS_MODULE
    environment:
      - LOCAL_PRIVATE_KEY=your_local_private_key
      - LOCAL_ADDRESS=192.168.120.1/32
      - PEER_PUBLIC_KEY=your_peer_public_key
      - PEER_ENDPOINT=peer_ip:peer_port
      - PEER_ALLOWED_IPS=192.168.120.2/32,192.168.50.0/24
      - LISTEN_PORT=51820
    volumes:
      - /lib/modules:/lib/modules
    healthcheck:
      #change the IP here (use peer ip to check connectivity)
      test: ["CMD", "sh", "-c", "ping -c 1 -W 10 192.168.120.2"] 
      interval: 15s
      timeout: 8s
      retries: 4
      start_period: 2m
     

Substitua os valores de variáveis de ambiente pelos seus próprios valores antes de iniciar o container. Após a configuração, inicie o serviço com:

docker-compose up -d

⁠Variáveis de ambiente

Para configurar o serviço VPN WireGuard dentro do container, as seguintes variáveis de ambiente podem ser definidas:

  • LOCAL_PRIVATE_KEY: A chave privada do peer local. Essencial para a autenticação e segurança da conexão VPN.

  • LOCAL_ADDRESS: O endereço IP (com máscara de rede) atribuído à interface WireGuard no container. Este endereço é usado para comunicação interna na VPN.

  • PEER_PUBLIC_KEY: A chave pública do peer remoto (outro lado da VPN). Usada para estabelecer uma conexão segura entre os peers.

  • PEER_ENDPOINT: O endereço IP e a porta do peer remoto. Formato: IP:porta. Especifica como o container deve alcançar o outro lado da VPN.

  • PEER_ALLOWED_IPS: Uma lista de IPs ou sub-redes separadas por vírgulas que são roteadas através da VPN para o peer remoto. Isso pode incluir IPs individuais (192.168.50.1) ou sub-redes (192.168.50.0/24).

  • LISTEN_PORT: A porta na qual a interface WireGuard vai escutar por conexões de entrada. Isso é relevante se o container atua como um servidor VPN.

  • KEEPALIVE: (Opcional) Especifica a frequência, em segundos, com que as mensagens keepalive são enviadas para manter a conexão ativa. Útil em redes que podem fechar conexões inativas.

  • DNS: (Opcional) Especifica o(s) servidor(es) DNS que devem ser usados pelo peer local. Pode ser útil para resolver nomes de domínio através da VPN.

  • INTERFACE_NAME: (Opcional) O nome da interface WireGuard, como wg0

Estas variáveis são usadas pelo script de entrada para configurar dinamicamente a interface WireGuard no container, permitindo uma personalização flexível da conexão VPN.

⁠Contribuições

Contribuições para este projeto são bem-vindas. Por favor, abra uma issue ou um pull request com suas sugestões ou melhorias.

Tag summary

Content type

Image

Digest

sha256:446b064d1…

Size

8.5 MB

Last updated

over 2 years ago

docker pull cpehub/wireguard