게이트웨이로 데비안 시스템이 있습니다. 내 nftables.conf는 매우 간단합니다.
#!/usr/sbin/nft -f
flush ruleset
table inet filter {
chain input {
type filter hook input priority filter;
}
chain forward {
type filter hook forward priority filter;
}
chain output {
type filter hook output priority filter;
}
}
table ip nat {
chain prerouting {
type nat hook prerouting priority filter; policy accept;
}
chain postrouting {
type nat hook postrouting priority srcnat; policy accept;
oifname "enp5s0" masquerade
}
}
이제 인터넷에서 포트 80으로 들어오는 트래픽을 192.168.1.3 호스트로 리디렉션하도록 수정하고 싶습니다.
tcp dport 80 dnat to 192.168.1.3
체인을 추가하려고 시도했지만 nat:prerouting
나가는 트래픽도 리디렉션됩니다. 추가가 iffname "enp5s0"
전혀 작동하지 않는 것 같습니다. 즉 이것은:
#!/usr/sbin/nft -f
flush ruleset
table inet filter {
chain input {
type filter hook input priority filter;
}
chain forward {
type filter hook forward priority filter;
}
chain output {
type filter hook output priority filter;
}
}
table ip nat {
chain prerouting {
type nat hook prerouting priority filter; policy accept;
iifname enp5s0 tcp dport 80 dnat to 192.168.1.3
}
chain postrouting {
type nat hook postrouting priority srcnat; policy accept;
#oifname "enp5s0" masquerade
masquerade
}
}
올바른 접근 방식이 무엇인지 아시나요? 구글링해도 별로 도움이 안 됐는데
감사해요!
답변1
들어오는 트래픽을 리디렉션하는 것이 WAN
한 가지 접근 방식이지만 NAT
나가는 트래픽도 필요하지만 패킷이 전달되는 호스트로만 필요합니다.
saddr
따라서 해당 호스트에만 적용되도록 백 라우팅 체인의 소스 주소를 지정 해야 합니다 .
table ip nat {
chain prerouting {
type nat hook prerouting priority filter; policy accept;
iifname enp5s0 tcp dport 80 dnat to 192.168.1.3
}
chain postrouting {
type nat hook postrouting priority srcnat; policy accept;
# This will SNAT only that host but not outgoing traffic from localhost
ip saddr 192.168.1.3 masquerade
}
}
보너스:
사전 라우팅 체인의 dstnat
우선순위 는 filter
다음과 같습니다.
chain prerouting {
type nat hook prerouting priority dstnat; policy accept;
iifname enp5s0 tcp dport 80 dnat to 192.168.1.3
forward
구성 에 구성하려는 체인 도 누락되어 있다는 점에 유의하세요 .