Por que essas regras iptables não funcionam?

1

Eu acho que um pouco mais de detalhes é necessário. Eu abri um novo café na minha área e as pessoas estão baixando coisas que estão aumentando minhas contas, então eu quero bloquear protocolos no meu roteador e então reativá-lo para qualquer PC se o PC precisar dele em uma data posterior que pode ser dias ou meses

Meu roteador executa o Ajuste de Atitude Openwrt

Eu estava bloqueando o http apenas para testá-lo e depois adicionar protocolos usando o filtro l7

Oi eu sou um noob no Iptables e estava brincando com ele para se apossar dele.

Aqui está o sistema

Router IP-192.168.1.10
PC1 IP-192.168.1.11
PC2 IP-192.168.1.12
Laptop IP-192.168.1.13
Mobile IP-192.168.1.14

Apliquei a regra abaixo e descartei todos os pacotes http.

iptables -I FORWARD -m layer7 --l7proto http -j DROP

e, em seguida, eu queria habilitar http para PC1 eu escrevi a regra abaixo, mas http não funciona.

iptables -I FORWARD -mlayer7 --l7proto http -s 192.168.1.11 -j ACCEPT

Funciona apenas quando entro na regra

iptables -I FORWARD -m layer7 --l7proto http -j ACCEPT

mas agora é ativado em todos os sistemas.

O que devo fazer para primeiro bloquear o http em todos os sistemas, seguido por ativá-lo, digamos apenas PC1.

Obrigado pela sua ajuda!

Saída

Chain FORWARD (policy DROP 12 packets, 2700 bytes)
pkts bytes target     prot opt in     out     source               destination
5   200 ACCEPT     all  --  *      *       192.168.1.113        0.0.0.0/0           LAYER7 l7proto http
25  1036 DROP       all  --  *      *       0.0.0.0/0            0.0.0.0/0           LAYER7 l7proto http
    
por user3406774 10.04.2014 / 22:03

2 respostas

1
iptables -I -INPUT -p tcp ! -s [IP address here] --dport 80 -j DROP

Preste muita atenção ao '!' operador. Ele baixa todo o tráfego que não é do endereço IP de origem.

No entanto, em um comentário posterior, você diz:

Nathan what I am trying to achieve is first block everything http and then re-enable any device one by one per my wish

Isso é um pouco diferente. Nesse caso, você vai querer confiar em pedidos. Você precisará negar explicitamente todo o HTTP, mas depois adicionar uma única regra acima à regra de descarte para cada host que você deseja aceitar. A resposta de Nathan está mais no alvo.

    
por 10.04.2014 / 22:31
0

Faça o seguinte:

iptables -I INPUT -p tcp -s 192.168.1.11 --dport 80 -j ACCEPT iptables -I INPUT -p tcp --dport 80 -j DROP

Isso permitirá o tráfego desse IP na porta 80 (http), caso contrário, solte-o. Não tenho certeza porque você está usando a corrente FORWARD .

    
por 10.04.2014 / 22:28