
1개의 물리적 인터페이스에 3개의 IP 별칭이 있는 방화벽이 있습니다. 패킷은 이 3가지 인터페이스(ICMP, HTTP 등) 사이에서 삭제됩니다. FORWARD 규칙에서 INVALID로 표시되고 이 규칙으로 인해 삭제된 패킷을 추적했습니다.
chain FORWARD {
policy DROP;
# connection tracking
mod state state INVALID LOG log-prefix 'INVALID FORWARD DROP: ';
mod state state INVALID DROP;
mod state state (ESTABLISHED RELATED) ACCEPT;
}
(즉, INVALID FORWARD DROP
로그가 표시됩니다 dmesg
.)
이 문제의 원인은 무엇입니까?
답변1
IP 별칭 대신 브리지 모드에서 macvlan을 사용하고 물리적 인터페이스를 promisc 모드로 유지하세요.
예를 들어
- eno1은 사용하려는 인터페이스입니다.
- 그런 다음 macvlan1@eno1, macvlan2@eno1 및 macvlan3@eno1을 만듭니다.
- eno1을 promisc 모드로 유지하십시오.
macvlan 인터페이스를 생성하려면 아래 순서를 참조하세요.
# /sbin/ip link add link eno1 macvlan1 type macvlan mode bridge
# /sbin/ip addr add 192.168.1.1/24 dev macvlan1
# /sbin/ip link set macvlan1 address aa:bb:bb:dd:ee:ff up
eno2에 대해 promisc 모드를 활성화하려면 아래 명령을 참조하십시오.
# /sbin/ip link set eno1 promisc on
답변2
상태 INVALID
는 패킷이 알려진 연결과 연결되어 있지 않으며 새 연결도 시작하지 않음을 의미합니다. 제가 생각할 수 있는 유일한 이유는 무언가가 연결 추적 테이블을 지우고 있거나, 테이블이 오버플로되거나, 항목이 너무 빨리 시간 초과되는 것입니다. 로 연결 추적 테이블의 크기 sudo conntrack -L | wc -l
와 최대 항목 수를 확인할 수 있습니다 cat /proc/sys/net/netfilter/nf_conntrack_max
.