예를 들어 사람들은 다음을 수행할 수 있습니다.
ip saddr vmap { 192.168.1.2: goto chain_a, 192.168.1.6: goto chain_b }
그러나 분명히 그렇지 않습니다.
ip saddr vmap { { 192.168.1.2, 192.168.1.4 }: goto chain_a,
{ 192.168.1.6, 192.168.1.8 }: goto chain_b }
나는 다음과 같은 일을 할 수 있는 사람을 알고 있습니다.
ip saddr vmap { 192.168.1.2: goto chain_a, 192.168.1.4: goto chain_a,
192.168.1.6: goto chain_b, 192.168.1.8: goto chain_b }
아니면 그냥:
ip saddr { 192.168.1.2, 192.168.1.4 } goto chain_a
ip saddr { 192.168.1.6, 192.168.1.8 } goto chain_b
하지만 컬렉션(또는 유사한 것)을 (v)맵의 키로 사용하는 방법이 있는지 궁금합니다.
답변1
존재하다nftables 1.0.0(2021년 8월 출시) 다음을 수행할 수 있습니다.
컬렉션을 포함하는 변수를 여러 맵으로 확장
define interfaces = { eth0, eth1 }
table ip x {
chain y {
type filter hook input priority 0; policy accept;
iifname vmap { lo : accept, $interfaces : drop }
}
}
# nft -f x.nft
# nft list ruleset
table ip x {
chain y {
type filter hook input priority 0; policy accept;
iifname vmap { "lo" : accept, "eth0" : drop, "eth1" : drop }
}
}
변수 내부가 아닌 컬렉션을 사용하는 것도 작동하는지 모르겠지만 이제는 새로운 버전이 나올 때마다 nftables
가능성이 높아짐에 따라 작동합니다.