Назад | Перейти на главную страницу

Почему эти правила iptables не работают

Я думаю, что нужно немного подробнее. Я открыл новое кафе в моем районе, и люди загружают вещи, которые увеличивают мои счета, поэтому я хочу заблокировать протоколы на моем маршрутизаторе, а затем снова включить его для любого ПК, если ПК понадобится позже, что может быть дней или месяцев

Мой роутер работает под управлением Openwrt Attitude Adjustment

Я блокировал http, чтобы протестировать его, а затем добавлял протоколы с помощью фильтра l7

Привет, я новичок в Iptables и возился с ним, чтобы получить его.

Вот система

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

Я применил приведенное ниже правило, и все HTTP-пакеты были отброшены.

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

а затем я хотел включить http для ПК1, я написал следующее правило, но http не работает.

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

Работает только когда я ввожу правило

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

но теперь он доступен во всех системах.

Что мне делать, чтобы сначала заблокировать http во всех системах, а затем включить его, скажем, только на ПК1.

Спасибо за помощь!

Вывод

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
iptables -I -INPUT -p tcp ! -s [IP address here] --dport 80 -j DROP

Обратите особое внимание на символ "!" оператор. Он сбрасывает весь трафик, не с исходного IP-адреса.

Однако в более позднем комментарии вы говорите:

Натан, чего я пытаюсь достичь, это сначала заблокировать все http, а затем повторно включить любое устройство по одному по моему желанию

Это немного другое. В этом случае вам нужно полагаться на порядок. Вам нужно явно запретить весь HTTP, но затем добавить одно правило выше это правило отбрасывания для каждого хоста, который вы хотите принять. Ответ Натана более точен.

Сделайте следующее:

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

Это разрешит трафик с этого IP-адреса на порт 80 (http), иначе он будет отброшен. Не уверен, почему вы используете FORWARD цепь.