IP encaminhamento Ubuntu

1

Para o meu trabalho, temos um espaço de teste com um servidor Ubuntu que também é um roteador. Ontem nós colocamos um novo no rack e nosso significado era torná-lo um servidor que é acessível a partir da Internet. O servidor / roteador do Ubuntu era apenas um roteador primeiro, que redireciona o tráfego de dentro para fora e era um servidor DHCP.

Para fazer a rota do roteador para a Internet, usamos iptables para NAT:

*nat
:PREROUTING ACCEPT [323:23056]
:INPUT ACCEPT [59:6795]
:OUTPUT ACCEPT [31:2677]
:POSTROUTING ACCEPT [0:0]
-A POSTROUTING -o eth5 -j MASQUERADE
-A POSTROUTING -o eth2 -j MASQUERADE
COMMIT
*filter
:INPUT ACCEPT [278:36336]
:FORWARD ACCEPT [18603:9408689]
:OUTPUT ACCEPT [105:12060]
-A INPUT -i lo -j ACCEPT
-A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A OUTPUT -o lo -j ACCEPT
-A OUTPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
COMMIT

Agora, queremos redirecionar algum tráfego para o servidor da Web, mas temos alguns endereços IP públicos. Queremos encaminhar todo o tráfego para o endereço IP xxx.xxx.xxx.14 para o endereço IP interno 10.10.10.10.

Eu tentei aplicar as seguintes regras no iptables :

iptables -t nat -A PREROUTING -d xxx.xxx.xxx.14 -j DNAT --to 10.10.10.10
iptables -t nat -A POSTROUTING -s 10.10.10.10 -j SNAT --to-source xxx.xxx.xxx.14

Mas isso não parece funcionar.

Como minhas habilidades em Ubuntu / Linux são muito baixas, não sei exatamente o que estou fazendo de errado. Alguém pode me ajudar com o meu problema?

O significado é que todo o tráfego para o IP xxx.xxx.xxx.14 está sendo redirecionado para 10.10.10.10. Todo o outro tráfego não precisa ser tocado e pode ser redirecionado como tráfego NAT normal para eth5 .

eth2 é a porta Ethernet externa. eth5 é a porta ethernet interna.

    
por Rens 14.07.2015 / 17:48

1 resposta

0

Por favor, verifique se o encaminhamento de ip está habilitado e, se não, ative-o.

$ cat /proc/sys/net/ipv4/ip_forward
1


$ sudo su
# echo "1" > /proc/sys/net/ipv4/ip_forward
# exit
exit
$

EDIT: O.K. então ip_forward está habilitado.

exclua a linha que faz MASQUERADE para eth5.
Certifique-se de que o seu comando POSTROUTING específico esteja na regra definida antes do genérico. Eu estou dizendo isso:

iptables -t nat -A POSTROUTING -s 10.10.10.10 -j SNAT --to-source xxx.xxx.xxx.14

pode precisar ser isso:

iptables -t nat -I 1 POSTROUTING -s 10.10.10.10 -j SNAT --to-source xxx.xxx.xxx.14

(ou similar, eu não verifiquei a sintaxe) ou se você tem todo o conjunto de regras mestre, coloque-o antes do outro.

Notas:
Com as regras de política padrão do ACCEPT, você não precisa de seus ACCEPTs condicionais.

    
por Doug Smythies 14.07.2015 / 20:08