Linux iptables가 거부되었습니다. 다시 활성화하려면 어떻게해야합니까?


8

네트워크에 클라이언트가 arpspoof로 컴퓨터를 통해 라우터에 연결되어 있습니다. 패킷 전달을 중지하고 싶을 때 다음을 실행합니다.

iptables -A FORWARD -j REJECT

그것은 내가 기대했던 방식으로 작동합니다. 그러나 내가 다음과 같은 일을하려고 할 때 :

iptables -A FORWARD -j ACCEPT

처음처럼 패킷을 통과시킬 수 없습니다.

내가 잘못했거나 "ACCEPT"와 다른 다른 인수를 사용해야합니까?


4
사용중인 그런데 -A, 어쩌면 당신은 사용할 -P세트에 P의 (체인에서 다른 규칙이 적용되지 않습니다 때 기본 동작을) olicy을. 예를 들어 iptables -P FORWARD DROP(이 될 수 없음 REJECT).
JoL

"질문이 합리적인 시스템 관리 기술을 입증해야한다"는 무슨 의미입니까? :)
Marco

답변:


35

IPtables에는 규칙 목록이 있으며 각 패킷마다 규칙 목록을 순서대로 확인합니다. 패킷과 일치하고 정책 (ACCEPT, REJECT, DROP)을 지정하는 규칙이 발견되면 일치하는 패킷의 운명이 결정됩니다. 더 이상 규칙이 검사되지 않습니다.

이것은 명령을 실행하는 순서가 중요하다는 것을 의미합니다. 를 사용 iptables -A하면 규칙 목록 끝에 규칙을 추가하므로 다음과 같은 규칙 목록이 나타납니다.

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         
REJECT     all  --  anywhere             anywhere            reject-with icmp-host-prohibited
ACCEPT     all  --  anywhere             anywhere

REJECT규칙이 규칙 보다 우선 하므로 규칙이 먼저ACCEPT 트리거되므로 전달이 수행되지 않습니다.

따라서 REJECT규칙을 추가하는 대신 규칙 을 삭제해야합니다 ACCEPT. 거부 규칙을 삭제하려면 다음을 실행하십시오.

iptables -D FORWARD -j REJECT 

자세한 내용은 iptables 맨 페이지를 참조하십시오.


18

-A플래그은 당신의 아래 끝을 의미 체인에 규칙을 추가 할 iptables를 알려줍니다 REJECT규칙, 그리고 첫 번째 규칙이 일치하기 때문에, 사용하지 않을 것.

당신은 당신의 규칙을 나열 iptables -L FORWARD하고 이것을 직접 볼 수 있습니다. 추가 한 규칙을 제거하려면 다음을 실행하십시오.

iptables -D FORWARD -j REJECT 

체인에 더 이상 그러한 규칙이 없을 때까지.


1

FORWARD규칙 의 끝에 단 하나의 규칙이 될 새로운 체인으로 뛰어 들기 위해 어설프게 할 것인가? ACCEPT또는 일 수 있습니다 REJECT. 말하다...

iptables -N accept-chain
iptables -A accept-chain -j ACCEPT
iptables -A FORWARD -j accept-chain

그런 다음이 규칙을 accept-chain다음과 같이 변경할 수 있습니다.

iptables -R accept-chain 1 -j REJECT

트래픽을 비활성화하거나 -j ACCEPT활성화합니다.

또한 라우팅을 켜고 끄는 것이 무엇입니까?

echo "0" > /proc/sys/net/ipv4/ip_forward

패킷 전달 비활성화 및 "1"-활성화


0

주문이 중요합니다. 이렇게하면 규칙이 추가되는 대신 맨 위에 삽입됩니다.

iptables -I FORWARD 1 -j ACCEPT

-삽입하고 # 1은 위치입니다

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.