방화벽 규칙을 설정하기 위해 iptables-persist를 사용합니다.
이것은 내 표준 구성입니다.
*filter
:INPUT DROP [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -p tcp --dport 2123 -m mac --mac-source XX:XX:XX:XX:XX:XX -j ACCEPT
COMMIT
문제는 데비안 서버에서 패키지를 다운로드할 수 없고 로컬 및 외부 IP 주소를 핑할 수 없다는 것입니다.
INPUT은 "들어오는" 연결에서만 작동합니다. 이것이 맞습니까?
다음은 IPv6에 대한 규칙입니다.
*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT DROP [0:0]
COMMIT
답변1
당신이 겪고 있는 문제는 들어오는 패킷을 허용하지 않는다는 것입니다. 따라서 외부 서버에 접속하려고 하면 응답을 받을 수 없습니다!
종종 이는 "확립된" 규칙에 의해 처리될 수 있습니다.
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
여기서의 아이디어는 나가는 연결과 일치하는 들어오는 패킷이 다시 허용된다는 것입니다.
지금은기본적으로 폐기됨수신 체인의 경우 다른 문제(예: ICMP 패킷)가 나타날 수 있으므로 요구 사항에 따라 이를 허용해야 할 수도 있습니다.
답변2
문제가 해결되었습니다.
새로운 고정 규칙:
*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT DROP [0:0]
-A INPUT -i lo -j ACCEPT
-A FORWARD -o lo -j ACCEPT
-A OUTPUT -o lo -j ACCEPT
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A OUTPUT -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p tcp --dport 2123 -m mac --mac-source XX:XX:XX:XX:XX:XX -j ACCEPT
COMMIT
답변3
iptables를 더 효과적으로 제어하려면 conntrack "--ctstate" 모듈을 사용하세요. "--state"보다 더 좋고 최신입니다.
예를 들어:
iptables -A INPUT -p tcp -m tcp -m conntrack --ctstate ESTABLISHED -j ACCEPT