Faça o tráfego ir unidirecional usando iptables

2

Eu tenho uma topologia de rede:

[C1] - [R1] - [R2] - [C2]

A rede C1-R1 é 192.168.100.0/24
Rede R1-R2 é 10.9.8.0/30
A rede R2-C2 é 192.168.200.0/24

O que eu preciso fazer é fazer com que o C2 possa se conectar com C1 aplicando algumas regras do iptables ao R2. Ao mesmo tempo, não quero que o C1 se conecte ao C2. Eu tentei cunhar algumas regras da cadeia FORWARD, mas eu simplesmente não consigo trabalhar.

Existe uma maneira simples de fazê-lo funcionar?

Aqui o que iptables -L -v diz:

Chain INPUT (política DROP 5 pacotes, 372 bytes)
 pkts bytes destino prot opt in out destino de origem

Chain FORWARD (política DROP 4 pacotes, 240 bytes)
 pkts bytes destino prot opt in out destino de origem

5 420 REJECT all - any enp0s3 em qualquer lugar de qualquer lugar
estado NOVO rejeitar-com icmp-port-inacessível

Chain OUTPUT (política DROP 5 pacotes, 560 bytes)
pkts bytes destino prot opt in out destino de origem

    
por Александр Гаращенко 25.04.2015 / 18:01

1 resposta

1

Experimente o estado ou o módulo conntrack.

iptables -A FORWARD -o $IFACE -m state --state NEW -j REJECT

onde $IFACE é a interface no R2 que a conecta ao C2.

Desta forma, os pacotes de C1 que estabeleceriam uma nova conexão serão rejeitados. Pacotes de C2 a C1 não são afetados por esta regra.

EDITAR : Como sua cadeia FORWARD tem DROP de política, você também precisará de regras que permitam que os pacotes sigam na direção oposta, como:

iptables -A FORWARD -i $IFACE -j ACCEPT
iptables -A FORWARD -o $IFACE -m state ! --state NEW -j ACCEPT
    
por 25.04.2015 / 18:16