Faça do CentOS 7.x um dispositivo NAT de encaminhamento de porta

2

Eu gostaria de fazer do CentOS uma máquina NAT de encaminhamento de porta usando o iptables. Esta é a primeira vez que eu tentei isso e acho que talvez precise de um pouco de ajuda.

Esta é a configuração que estou tentando alcançar. Estou tentando fazer uma conexão de área de trabalho remota através da máquina CentOS na porta 80 e ter o CentOS conectado ao servidor na porta 80.

192.168.0.120 é o cliente que deve se conectar à porta 80 em 192.168.30.37 conectando-se a 192.168.0.100 (CentOS) na porta 80.

  • o CentOS ens160 é 192.168.0.100/24
  • o CentOS ens192 é 192.168.30.254/24
  • O CentOS ens224 é 192.168.40.254/24

O que eu tentei até agora:

  1. desativado SELINUX
  2. Encaminhamento IPv4 ativado em /etc/sysctl.conf

    /etc/sysctl.conf
    net.ipv4.ip_forward = 1
    
  3. / etc / systemconfig / iptables é

    *filter
    :INPUT ACCEPT [0:0]
    :FORWARD ACCEPT [0:0]
    :OUTPUT ACCEPT [12:944]
    -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
    -A INPUT -p icmp -j ACCEPT
    -A INPUT -i lo -j ACCEPT
    -A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
    -A INPUT -j REJECT --reject-with icmp-host-prohibited
    -A FORWARD -i ens160 -o ens192 -m state --state RELATED,ESTABLISHED -j ACCEPT
    -A FORWARD -i ens192 -o ens160 -j ACCEPT
    -A FORWARD -i ens160 -o ens224 -m state --state RELATED,ESTABLISHED -j ACCEPT
    -A FORWARD -i ens224 -o ens160 -j ACCEPT
    -A FORWARD -j REJECT --reject-with icmp-host-prohibited
    COMMIT
    *nat
    :PREROUTING ACCEPT [4:272]
    :INPUT ACCEPT [0:0]
    :OUTPUT ACCEPT [0:0]
    :POSTROUTING ACCEPT [0:0]
    -A PREROUTING -i ens160 -p tcp -m tcp --dport 80 -j DNAT --to-destination 192.168.30.37:80
    -A POSTROUTING -o ens160 -j MASQUERADE
    -A POSTROUTING -d 192.168.0.100/32 -j MASQUERADE
    COMMIT
    

Então, há algo errado com minhas regras do iptables? Ou há algo que eu possa estar perdendo?

    
por Yuan Chen 19.11.2014 / 11:17

2 respostas

1

De qualquer forma, você está sentindo falta de uma regra para frente

iptables -A FORWARD -i ens160 -o ens192 -p tcp -m tcp -d 192.168.30.37 -m state --state NEW -j ACCEPT

Você precisa inserir as regras acima, antes disso:

-A FORWARD -j REJECT --reject-with icmp-host-prohibited
    
por 19.11.2014 / 14:20
4

No RedHat Enterprise Linux 7.0 (o "upstream" do CentOS 7.0) a interação pretendida com iptables é através de firewalld . Modificar manualmente a configuração iptables , enquanto possível, não é o método pretendido, se houver interação.

Se você quiser modificar diretamente a configuração iptables , talvez queira dar uma olhada na documentação sobre iptables . Você está indo pelo caminho certo, mas, por exemplo, os argumentos -i e -o são destinados a denotar interfaces de entrada e saída ( eth0 , etc), não nomes de host. Parece que você precisa apenas de um histórico sobre como o iptables funciona.

    
por 19.11.2014 / 13:56