ct helper
다음은 현재 객체가 선언되는 방법에 대한 실제 예입니다.nftables 문서
#!/usr/sbin/nft -f
add table filter_4 {
# TODO: Can helper object be declared outside the scope of table declaration scope?
# ct helper stateful object
# "ftp-standard" is the name of this ct helper stateful object
# "ftp" is the in-kernel name of the ct helper for ftp
ct helper ftp-standard {
type "ftp" protocol tcp;
}
}
그런 다음 개체가 ct helper
사용됩니다. 다음과 같이:
add chain filter_4 new_out_4 {
comment "New output IPv4 traffic"
}
# FTP (active and passive)
# Rule for initial ftp connection (control channel), setting ct helper stateful object to use
# "ftp-standard" is the name of the ct helper stateful object
add rule filter_4 new_out_4 tcp sport >1023 tcp dport 21 ct helper set "ftp-standard" accept
제가 달성하려는 목표는 ct helper
컬렉션이 선언되는 방식과 유사한 방식으로 테이블 외부의 개체를 선언하는 구문을 이해하는 것입니다.
테이블 선언 범위 외부에서 컬렉션을 선언하는 방법의 예
add set filter_4 multicast_proto { type inet_proto; comment "IPv4 multicast protocols"; }
add element ip filter_4 multicast_proto { udp, igmp }
비슷한 방식으로 다음과 같은 객체를 선언하고 싶습니다 ct helper
.
# Table declaration
add table filter_4
# Declare ct helper separately
add ct helper ftp-standard {
type "ftp" protocol tcp;
}
물론 이것은 작동하지 않습니다. ct helper
이와 같은 \statement를 추가하는 구문은 무엇입니까?
ct helper
테이블에 바인딩해야 하는 것 같으니 (사실인가요?) 위의 예에서는 테이블 이름을 지정해야 할 수도 있습니다.
답변1
구문은 다음에 설명되어 있습니다.nft(8)
:
add ct helper [family] table name { type type protocol protocol ; [l3proto family ;] }
delete ct helper [family] table name
list ct helpers
귀하의 경우에는 다음과 같습니다.
쉘에서(
'
적절한 경우 올바른 쉘 이스케이프 사용 포함,nft
자체적으로는 상관하지 않음: 인수를 동일하게 구문 분석하지만 별도로 제공됨):nft add ct helper filter_4 ftp-standard '{ type "ftp" protocol tcp; }'
또는 이미
nft
컨텍스트에 있는 경우 다음과 같이 하세요.add ct helper filter_4 ftp-standard { type "ftp" protocol tcp; }