한 줄로 어떻게 할 수 있나요?
tcp dport 53 counter accept comment "accept DNS"
udp dport 53 counter accept comment "accept DNS"
답변1
충분히 새로운 경우 다음과 같이 nftables
작성할 수 있습니다.
meta l4proto {tcp, udp} th dport 53 counter accept comment "accept DNS"
실제로 다음과 같이 하면 더 잘할 수 있습니다.
set okports {
type inet_proto . inet_service
counter
elements = {
tcp . 22, # SSH
tcp . 53, # DNS (TCP)
udp . 53 # DNS (UDP)
}
그런 다음:
meta l4proto . th dport @okports accept
포트/서비스 이름(from)을 사용하려는 경우 domain
대신 작성할 수도 있습니다.53
/etc/services
답변2
이것이 가능하다는 것을 모든 사람에게 보여 주려면 (아마도 그다지 유용하지는 않을 것입니다) 예, 가능합니다.최근의 nftable원시 페이로드 표현.
따라서 inet
(이중 ip
/ ip6
) 테이블의 경우 먼저 적절하게 필터링된 레벨 4 프로토콜 세트(여기서는 TCP=6 및 UDP=17)를 사용한 다음 포트 53을 필터링해야 합니다. 이것은 매우 편리합니다.전송 제어 프로토콜그리고UDP 프로토콜해당 형식의 대상 포트 위치는 동일합니다. dport
패킷의 TCP/UDP 부분에서 대상 포트의 오프셋으로 표현됩니다(이전 링크에 표시된 대로 16비트, 크기 16). tcp
및 는 기호 이름을 통해 사용할 수 있지만 not 으로 선언해야 하는 udp
것처럼 보이지만 이는 및 (또는 나중에 참조)이 두 개의 서로 다른 "프로토콜 네임스페이스"에 있기 때문이라고 상상할 수 있습니다 .dns
53
dns
dns/tcp
dns/udp
domain
생성된 명령은 다음과 같습니다(여기에 작은따옴표를 추가하거나 큰따옴표를 이스케이프 처리해야 함).
# nft 'add rule inet filter input meta l4proto {tcp, udp} @th,16,16 53 counter accept comment "accept DNS"'
IPv4만 필요한 경우 해당 ip
테이블과 체인을 초기화 inet
하고 ip
.
또한 거의 동일한 내용이 예제로 제공됩니다.0.8.3 릴리스 노트이제 포함됨nft
매뉴얼 페이지아쉽게도 이 예제는 작동하지 않습니다. dns
및를 and로 바꿔야 http
합니다 (일부 배포판/버전에서는 대신 이를 요구할 수 있음 ).53
80
domain
dns