encaminhamento de porta openvpn para SNAT ou DNAT com Iptables?

encaminhamento de porta openvpn para SNAT ou DNAT com Iptables?

Consegui configurar o openvpn e emitir ips internos estáticos para os clientes. Agora, o problema que tenho é que estou tentando atribuir uma porta aberta por cliente, pois agora eles têm IP interno estático, o que torna mais fácil estar pronto para adicionar regras. O que estou enfrentando é como fazer isso corretamente por meio do iptables.

O exemplo de ip estático interno 10.8.0.10 enviado pelo cliente seria encaminhar a porta 1234

Eu tentei isso sem sorte, o VPN usa udp e na porta 1194, mas tentei as regras abaixo modificadas como udp e como tcp e ambas juntas. Observe que o VPN já funciona e possui regras de mascaramento, mas fora isso, o iptables está vazio.

iptables -t nat -A PREROUTING -p tcp --dport 1234 -j DNAT --to-destination 10.8.0.10
iptables -A FORWARD -s 10.8.0.10 -p tcp --dport 1234 -j ACCEPT

Eu também tentei 10.8.0.1 sendo gateway e 10.8.0.10 sendo cliente precisando de porta todas as portas encaminhadas

iptables -t nat -A PREROUTING -d 10.8.0.1 -j DNAT --to-destination 10.8.0.10

Estou tentando realizar 2 coisas primeiro, sendo capaz de encaminhar uma porta por cliente e, se necessário, um IP público estático se eles precisarem encaminhar todas as portas.

servidor openvpn.conf

local 123.123.123.123 #- your_server_ip goes here
port 1194 #- port
proto udp #- protocol
client-config-dir /etc/openvpn/ccd
push "route 10.8.0.0 255.255.0.0"
ifconfig-pool-persist /etc/openvpn/openvpn.dhcp 30
dev tun
tun-mtu 1500
tun-mtu-extra 32
mssfix 1450
ca /etc/openvpn/easy-rsa/2.0/keys/ca.crt
cert /etc/openvpn/easy-rsa/2.0/keys/server.crt
key /etc/openvpn/easy-rsa/2.0/keys/server.key
dh /etc/openvpn/easy-rsa/2.0/keys/dh1024.pem
plugin /etc/openvpn/radiusplugin.so /etc/openvpn/radiusplugin.cnf
client-cert-not-required
username-as-common-name
server 10.8.0.0 255.255.255.0
push redirect-gateway def1
push dhcp-option DNS 8.8.8.8
push dhcp-option DNS 8.8.4.4
keepalive 5 30
comp-lzo
persist-key
persist-tun
status 1194.log
verb 3

iptables-save:

# Generated by iptables-save v1.3.5 on Sun Aug 26 14:27:12 2012
*nat
:PREROUTING ACCEPT [4834:503608]
:POSTROUTING ACCEPT [1000:70847]
:OUTPUT ACCEPT [1000:70847]
-A POSTROUTING -s 10.8.0.0/255.255.255.0 -o eth0 -j MASQUERADE
COMMIT
# Completed on Sun Aug 26 14:27:12 2012
# Generated by iptables-save v1.3.5 on Sun Aug 26 14:27:12 2012
*filter
:INPUT ACCEPT [21545:23742094]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [14867:1938275]
COMMIT
# Completed on Sun Aug 26 14:27:12 2012

Responder1

Funciona bem para mim. Algumas coisas para verificar:

  • Isso não ocorrerá em conexões NAT feitas a partir do próprio servidor VPN, para isso você precisa da regra na cadeia OUTPUT.
  • O cliente está configurado para roteartodostráfego através da VPN? Caso contrário, você poderá descobrir que os pacotes de resposta não estão sendo enviados de volta pela VPN.
  • Tem certeza de que está usando o endereço IP do lado do cliente e não o lado do servidor da conexão ponto a ponto desse cliente?
  • Você deseja corresponder a um IP de destino específico na regra, caso contrário, capturará outras conexões nesse número de porta.
  • É provável que o NAT de todas as conexões para 10.8.0.1 cause problemas, uma vez que todos os clientes roteiam o tráfego através deste IP.

Responder2

-A  PREROUTING -p tcp -m tcp --dport 1234 -j DNAT --to-destination 10.8.0.10

é o que você procura :)

passei por esse mesmo problema sozinho

Vejo e presumo que você está usando o arquivo ccd para enviar o ip interno estático? nesse caso, a regra acima deve funcionar quando editada em seu iptables

informação relacionada