
У меня есть правило iptable, в котором я разрешаю подсеть IP-адресов. Правило выглядит следующим образом:
iptables -I ВВОД 2 -i eth0 -s xxxx/24 -d xxXx -j ПРИНЯТЬ
Например, я хочу разрешить подсеть 172.16.0.0/24. Могу ли я столкнуться с проблемой, что IP из этой подсети не имеет доступа, хотя я настроил эту подсеть как разрешенную?
Я столкнулся с такой проблемой. Я настроил 172.16.0.0/24 как разрешенный в iptables, но когда я пытаюсь получить доступ с IP 172.16.0.9, у меня нет доступа.
решение1
Вы можете отладить правила netfilter, включив цель TRACE:
Сначала загрузите соответствующий модуль ядра для ведения журнала непосредственно в syslog:
modprobe -i ipt_LOG
А затем создайте правило для регистрации всего трафика из вашей некорректно работающей системы:
iptables -t raw -A PREROUTING --source 172.16.0.9 -p tcp -j TRACE
Пакеты регистрируются со строковым префиксом: TRACE: tablename:chain- name:type:rulenum
где тип может быть «правилом» для простого правила, «возвратом» для неявного правила в конце цепочки, определенной пользователем, и «политикой» для политики встроенных цепочек. Номер правила можно найти с помощьюiptables -L --line-numbers
решение2
Попробуйте удалить "-d xxxx". Я говорю это, потому что INPUT означает весь трафик, направленный на вашу машину, поэтому нет необходимости указывать место назначения. EDIT: Также попробуйте добавить "-p tcp" перед "-s xxxx/24". Я думаю, вам нужно указать протокол для соответствия. – aseaudi 17 минут назад
решение3
Я думаю о двух возможных проблемах:
1 - вы не позволяете трафику выходить из вашей машины
iptables -I OUTPUT 1 -i eth0 -d x.x.x.x/24 -j ACCEPT
2 - вы препятствуете распространению широковещательных пакетов на ваш компьютер
попробуйте это вместо вашего первоначального ввода:
iptables -I INPUT 1 -i eth0 -s x.x.x.x/24 -j ACCEPT
без использования IP-адреса назначения.