AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / server / Perguntas / 1171702
Accepted
Dmitriano
Dmitriano
Asked: 2025-01-27 07:07:19 +0800 CST2025-01-27 07:07:19 +0800 CST 2025-01-27 07:07:19 +0800 CST

Os clientes OpenVPN se veem sem a opção cliente-para-cliente

  • 772

Eu executo um servidor VPN experimental em um contêiner Docker .

Meu docker-compose.ymlarquivo:

version: '3'
services:
dockovpn:
    image: alekslitvinenk/openvpn
    cap_add:
        - NET_ADMIN
    ports:
        - 1194:1194/udp # Expose tcp if you defined HOST_TUN_PROTOCOL=tcp
    environment:
        HOST_ADDR: ${HOST_ADDR}
    volumes:
        - /var/lib/dockovpn:/opt/Dockovpn_data
    restart: always

onde HOST_ADDRestá meu endereço IP?

Eu executo o contêiner com

sudo docker-compose up -d

comando e consigo conectar-me à VPN a partir de dispositivos Windows, Android e iOS.

Não há client-to-clientopção em server.conf:

sudo docker exec -it dockovpn_dockovpn_1 bash
cd /opt/Dockovpn
cat config/server.conf

port 1194
proto %HOST_TUN_PROTOCOL%
dev tun
ca /etc/openvpn/ca.crt
cert /etc/openvpn/MyReq.crt
key /etc/openvpn/MyReq.key
dh /etc/openvpn/dh.pem
server 10.8.0.0 255.255.255.0
ifconfig-pool-persist ipp.txt
push "redirect-gateway def1 bypass-dhcp"
push "dhcp-option DNS 208.67.222.222"
push "dhcp-option DNS 208.67.220.220"
duplicate-cn
keepalive 10 120
cipher AES-256-GCM
ncp-ciphers AES-256-GCM:AES-256-CBC
auth SHA512
persist-key
persist-tun
status openvpn-status.log
verb 4
tls-server
tls-version-min 1.2
tls-auth /etc/openvpn/ta.key 0
crl-verify /etc/openvpn/crl.pem

então, de acordo com a documentação do OpenVPN , os clientes não deveriam ver uns aos outros, mas eles realmente veem. Por exemplo, eu posso conectar via Remote Desktop a máquinas Windows remotas com endereços IP como 10.8.0.14, etc...

Como consertar isso?

EDITAR1

Foi encontrado o seguinte em scripts\start.sh :

# Allow traffic on the TUN interface.
iptables -A INPUT -i tun0 -j ACCEPT
iptables -A FORWARD -i tun0 -j ACCEPT
iptables -A OUTPUT -o tun0 -j ACCEPT

Provavelmente seria melhor remover iptables -A FORWARD -i tun0 -j ACCEPTem vez de adicionar iptables -A FORWARD -i tun0 -o tun0 -j REJECT?

openvpn
  • 1 1 respostas
  • 94 Views

1 respostas

  • Voted
  1. Best Answer
    Nikita Kipriyanov
    2025-01-27T14:54:21+08:002025-01-27T14:54:21+08:00

    Só pode haver um motivo, não é o OpenVPN, mas seu SO roteia pacotes. Sem o client-to-client, o OpenVPN opera em um modo de "roteamento simplificado", por assim dizer; ele encaminha tudo que veio da VPN para o SO e tudo que veio do SO para a VPN.

    No seu caso, quando o pacote vem de um cliente, ele é dado ao SO, onde ele aparece fora da tuninterface. O SO considera sua tabela de roteamento, vê que o destino está atrás da mesma tuninterface de onde ele veio e o encaminha para lá, devolvendo o pacote ao OpenVPN. Do ponto de vista do OpenVPN, esta não é uma comunicação cliente-cliente, mas uma comunicação cliente-SO e uma comunicação SO-cliente.

    Mas o encaminhamento do SO está sujeito às suas tabelas de roteamento, regras e ao firewall. Você pode configurar o firewall dentro do contêiner para evitar isso. Em termos de iptables, será algo como iptables -A FORWARD -i tun0 -o tun0 -j REJECT(ajuste um nome de interface tun, ou use tun+, é um tipo de curinga).


    Como nota lateral, pare de usar duplicate-cnoption. Você pode perfeitamente executar uma VPN CA (use easy-rsa, é trivial) e gerar para cada cliente um certificado/par de chaves dedicado; faça isso. É (quase) inútil tê-lo junto com ifconfig-pool-persiste crl-verify, também.

    • 2

relate perguntas

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Você pode passar usuário/passar para autenticação básica HTTP em parâmetros de URL?

    • 5 respostas
  • Marko Smith

    Ping uma porta específica

    • 18 respostas
  • Marko Smith

    Verifique se a porta está aberta ou fechada em um servidor Linux?

    • 7 respostas
  • Marko Smith

    Como automatizar o login SSH com senha?

    • 10 respostas
  • Marko Smith

    Como posso dizer ao Git para Windows onde encontrar minha chave RSA privada?

    • 30 respostas
  • Marko Smith

    Qual é o nome de usuário/senha de superusuário padrão para postgres após uma nova instalação?

    • 5 respostas
  • Marko Smith

    Qual porta o SFTP usa?

    • 6 respostas
  • Marko Smith

    Linha de comando para listar usuários em um grupo do Windows Active Directory?

    • 9 respostas
  • Marko Smith

    O que é um arquivo Pem e como ele difere de outros formatos de arquivo de chave gerada pelo OpenSSL?

    • 3 respostas
  • Marko Smith

    Como determinar se uma variável bash está vazia?

    • 15 respostas
  • Martin Hope
    Davie Ping uma porta específica 2009-10-09 01:57:50 +0800 CST
  • Martin Hope
    kernel O scp pode copiar diretórios recursivamente? 2011-04-29 20:24:45 +0800 CST
  • Martin Hope
    Robert ssh retorna "Proprietário incorreto ou permissões em ~/.ssh/config" 2011-03-30 10:15:48 +0800 CST
  • Martin Hope
    Eonil Como automatizar o login SSH com senha? 2011-03-02 03:07:12 +0800 CST
  • Martin Hope
    gunwin Como lidar com um servidor comprometido? 2011-01-03 13:31:27 +0800 CST
  • Martin Hope
    Tom Feiner Como posso classificar a saída du -h por tamanho 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich O que é um arquivo Pem e como ele difere de outros formatos de arquivo de chave gerada pelo OpenSSL? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent Como determinar se uma variável bash está vazia? 2009-05-13 09:54:48 +0800 CST

Hot tag

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve