
IP 서브넷을 허용하는 iptable 규칙이 있습니다. 규칙은 다음과 같습니다.
iptables -I 입력 2 -i eth0 -s xxxx/24 -d xxXx -j 수락
예를 들어 서브넷 172.16.0.0/24를 허용하고 싶습니다. 이 서브넷을 허용하도록 구성했는데도 이 서브넷의 IP에 액세스할 수 없는 것과 같은 문제가 발생할 수 있습니까?
저는 이런 문제를 다루고 있습니다. iptables에서 허용되도록 172.16.0.0/24를 구성했지만 IP 172.16.0.9에서 액세스하려고 하면 액세스할 수 없습니다.
답변1
TRACE 대상을 활성화하여 netfilter 규칙을 디버깅할 수 있습니다.
먼저 관련 커널 모듈을 로드하여 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
여기서 유형은 일반 규칙의 경우 "rule", 사용자 정의 체인 끝의 암시적 규칙의 경우 "return", 내장된 체인의 정책의 경우 "policy"일 수 있습니다. 함께 발견되다iptables -L --line-numbers
답변2
"-d xxxx"를 제거해 보십시오. INPUT은 귀하의 컴퓨터로 향하는 모든 트래픽을 의미하므로 대상을 지정할 필요가 없기 때문에 이렇게 말하는 것입니다. 편집: 또한 "-s xxxx/24" 앞에 "-p tcp"를 추가해 보십시오. 내 생각에는 경기에 대한 프로토콜을 지정해야 할 것 같습니다. – 아세우디 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를 사용하지 않고.