ゲートウェイとしてDebianシステムがあります。私の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
1 つのアプローチですが、発信トラフィック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
構成に構成しようとしているチェーンも欠けていることに注意してください。