Iptables encaminhar com pptp e openvpn

2

Eu tenho o OpenVPN e o PPTP instalados em um VPS. Estou tendo algumas perguntas que não consigo responder com firmeza.

Eu quero instalar o OpenVPN em 1.1.1.1 (eth0, endereço IP público) e PPTP em 1.1.1.2 (eth0: 1, endereço IP público). Eu consegui fazer isso com o SNAT. No entanto, de todos os tutoriais que estou lendo, recomenda-se encaminhar o ppp + para eth0 e vice-versa e a mesma situação para a interface tun.

iptables -A FORWARD -i tun0 -o eth0 -j ACCEPT
iptables -A FORWARD -i eth0 -o tun0 -j ACCEPT
iptables -A FORWARD -i ppp+ -o eth0 -j ACCEPT
iptables -A FORWARD -i eth0 -o ppp+ -j ACCEPT

Minha configuração é o CentOS, servidor dedicado.

Por alguma razão, estou supondo que o iptables irá rotear todo o tráfego de eth0 para tun0 e parar assim.

  1. Essas regras avançadas conflitarão entre si?
  2. Vou precisar encaminhar o ppp + para eth0: 1 para evitar conflito? É mesmo possível? Eu ainda não descobri um caminho.
  3. O iptables é inteligente o suficiente para rotear o tráfego que é específico para tun e ppp por meio dessas regras?
por John 06.04.2013 / 20:19

1 resposta

2

Se bem entendi, você quer um túnel OpenVPN e um túnel PPTP, cada um que irá encaminhar o tráfego encapsulado para fora eth0, mas cada um com seu próprio IP.

Se eu estiver errado, tente esclarecer e farei o que puder para ajudar. Mas acredito que esse roteiro fará o que você está pedindo.

#!/bin/bash

# This enables forwarding in the kernel.
echo 1 > /proc/sys/net/ipv4/ip_forward

# This will allow all return traffic to pass back to the originating socket
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT

# This permits forwarding traffic that came in either tunnel and bound out eth0.
# Note: This does not explicitly permit forwarding between tunnels.
iptables -A FORWARD -i tun0 -o eth0 -j ACCEPT
iptables -A FORWARD -i ppp+ -o eth0 -j ACCEPT

# This blocks all forwarding that is not explicitly permitted.
# Removing this line would be unsafe.
iptables -A FORWARD -j DROP

# These lines will SNAT the traffic coming from each tunnel to the
# appropriate IP address.
iptables -t nat -A POSTROUTING -i tun0 -o eth0 -j SNAT --to-source 1.1.1.1
iptables -t nat -A POSTROUTING -i ppp+ -o eth0 -j SNAT --to-source 1.1.1.2

A execução deste script várias vezes fará com que as regras sejam criadas. O script a seguir liberará suas regras de firewall e desativará o encaminhamento. Eu geralmente incluo isso no início dos meus scripts de firewall, mas não sei se é seguro fazer isso, então incluímos isso separadamente.

#!/bin/bash
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t filter -F
iptables -t nat -F
    
por 07.04.2013 / 06:11