Configurando IPtables para espelhar o tráfego no CentOS

1

Estou tentando configurar o iptables para espelhar o tráfego que entra na eth2 e enviar para o 10.1.4.4. Eu tenho lido muita documentação sobre isso, mas estou tendo alguns problemas.

Aqui está o comando que estou tentando usar:

[root@test]# iptables -t mangle -A PREROUTING -i eth2 -j TEE -gateway 10.1.4.4
iptables v1.4.7: multiple -j flags not allowed

Atualmente estou testando isso no CentOS 6.5 e usando o iptables v1.4.7. Alguma idéia de por que isso não está funcionando?

    
por Jacob Bergeron 11.02.2015 / 14:32

1 resposta

4

Você tem um erro de sintaxe, você deve usar dois traços como opção de gateway, assim:

iptables -t mangle -A PREROUTING -i eth2 -j TEE --gateway 10.1.4.4

EDIT: no iptables do CentOS 6.x userspace não é corrigido corretamente. O TEE foi adicionado na versão 1.4.8 e o CentOS 6 na versão 1.4.7, e eu acho que você precisará corrigir e reconstruir o RPM. Eu posso verificar o código e oferecer uma solução, se desejar.

EDIT: Problema é um pouco mais complicado. Eu tentei backporting várias versões do iptables para fazê-lo funcionar, e, não é só problema iptables por si só. Também é problema do kernel. A versão CentOS do EL7 funciona bem (1.4.21) e algumas versões do Fedora também. Então, o que você pode fazer é:

# rpm -Uvh http://mirrors.nic.cz/fedora-archive/fedora/linux/releases/14/Everything/x86_64/os/Packages/iptables-1.4.9-1.fc14.x86_64.rpm
Retrieving http://mirrors.nic.cz/fedora-archive/fedora/linux/releases/14/Everything/x86_64/os/Packages/iptables-1.4.9-1.fc14.x86_64.rpm
warning: /var/tmp/rpm-tmp.NDCBn2: Header V3 RSA/SHA256 Signature, key ID 97a1071f: NOKEY
error: Failed dependencies:
    libxtables.so.4()(64bit) is needed by (installed) iproute-2.6.32-32.el6_5.x86_64

Agora, se você quiser instalá-lo, precisará adicionar --force -nodeps, o que tornará o iproute inoperável devido à falta de dependência. Então você terá que extrair o libxtables.so.4 do original do iptables rpm e mantê-lo manualmente no sistema para corrigir o iproute:)

E depois de tudo isso, você receberá o seguinte erro:

# /sbin/iptables -t mangle -A PREROUTING -i eth2 -j TEE --gateway 10.1.4.4
iptables: No chain/target/match by that name.

Este é um problema do kernel - o módulo xt_TEE.ko está ausente dos kernels padrão do CentOS / RHEL EL6:

# rpm -ql kernel | grep xt_TEE

Você pode contornar isso usando o kernel ELrepo:

# rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
# rpm -Uvh http://www.elrepo.org/elrepo-release-6-6.el6.elrepo.noarch.rpm
# yum --enablerepo=elrepo-kernel install kernel-lt
# rpm -ql kernel-lt | grep xt_TEE
/lib/modules/3.10.69-1.el6.elrepo.x86_64/kernel/net/netfilter/xt_TEE.ko

Para ler mais sobre os pacotes kernel-lt (LongTerm) e quais são suas limitações / benefícios, acesse: link .

Se você planeja usar isto em produção, por favor, tente-o e teste-o completamente e tente fazer o backport do material em kernels padrão EL e em iptables padrão 1.4.7:)

Isso pode ser feito, mas é uma lata de vermes que eu não tenho certeza se você quer abrir. Vale a pena?

    
por 11.02.2015 / 17:40