はじめに
未だ nftables に対する理解が追いついていないので、設定に関してはひたすらググって出てきたものを観察して考えて適用していったけどいまいちしっくり来ない感じが。
そこで ChatGPT に聞いてみたらシンプルでスッキリした設定が出てきたので備忘録としてペタリ。
VPN のパケットを nftables で NAT する
ChatGPT が教えてくれた設定例は以下の通り。既存の設定と上手いことマージするようにした。
VPN のネットワークレンジは OpenVPN の設定に合わせることと、「外部インターフェイス」の部分は eth1 とか ens160 だとか IF 名を記述する。
table ip filter {
chain input {
type filter hook input priority 0;
policy drop;
# ループバックインターフェースを許可
iif lo accept
# 既に確立された接続を許可
ct state established,related accept
# OpenVPN ポートを許可 (例:1194/UDP)
udp dport 1194 accept
# 必要に応じて他のポートも許可
}
chain forward {
type filter hook forward priority 0;
policy drop;
# 既に確立された接続を許可
ct state established,related accept
# VPN ネットワークからの転送を許可
ip saddr 10.8.0.0/24 accept
}
}
table ip nat {
chain postrouting {
type nat hook postrouting priority 100;
# VPN ネットワークからのトラフィックをNATする
ip saddr 10.8.0.0/24 oif <外部インターフェース> masquerade
}
}
おわりに
ChatGPT は頼りになるし、例示してくれた設定で上手く動いたが、これが正しい物であるかは経過観察をしていきたい。
コメント