nftables
(v0.9.6)을 사용하여 방화벽 + NAT를 설정하고 있습니다. 이 도구는 광범위한 규칙 중복을 방지하기 위해 컬렉션과 매핑을 제공합니다.
공통 데이터 구조(세트 또는 맵)를 사용하여 DNAT 및 필터링 규칙(전달)을 구성하고 싶습니다.
( )하려고 하면 nft --check -f example.conf
항상 오류가 발생합니다. 이 작업을 수행할 수 있는 방법을 알고 있나요?반복할 필요 없음NAT는 2개의 데이터 구조(맵과 세트)에 매핑됩니까?
다음은 제가 사용하는 예입니다(대문자 주석 참조).
이것들은지도 및 설정:
table inet filter {
map mymap {
type inet_service : ipv4_addr
elements = {
12345 : 192.168.0.66,
4321 : 192.168.0.77
}
}
set myset {
type ipv4_addr . inet_service
elements = {
192.168.0.66 . 12345,
192.168.0.77 . 4321
}
}
이것들은규칙:
chain natprerouting {
type nat hook prerouting priority dstnat; # =-100
# ACCEPTED:
dnat ip to tcp dport map @mymap
# ERROR AT PARSING (unexpected string: @myset):
dnat ip addr . port to @myset
}
chain forward {
type filter hook forward priority filter; # =0
# ERROR AT PARSING (unexpected dport):
ip daddr tcp dport map @mymap accept
# ACCEPTED:
ip daddr . tcp dport @myset accept
}
}
dnat to
수용 가능한 경우 작동합니다.놓다. 하나 변환할 수 있어요지도가 되다놓다(혹은 그 반대로도)? 어떤 방법이 있나요?
답변1
각각의 DNATed 연결을 명시적으로 수락할 필요가 없습니다.정방향 가닥에서는 연결 추적으로 인해 DNAT가 이미 알려져 있습니다.
ct status dnat accept
다음과 같이 사용하세요.
table inet filter {
chain forward {
type filter hook forward priority filter; # =0
# THIS ONE AUTOMATICALLY ACCEPTS ALL OUR DNATed PACKETS
ct status dnat accept
}
}
일부 크레딧은 다음과 같습니다.netfilter 메일링 리스트의 Trent Buck.