それマグで!

知識はカップより、マグでゆっくり頂きます。 takuya_1stのブログ

習慣に早くから配慮した者は、 おそらく人生の実りも大きい。

nftables

OpenWRTでパケットをマークして許可する(ポリシールーティング)

WEB-UI ( Luci )を使った場合 Luci で ip rule を作って ip route テーブルを作ることはできる。 前回やったコマンドからのポリシールーティングをLuCI(WEB)経由でやる話です。 やることは次の通り。 nftables でマークを扱う。 マーク済パケットをAccept…

OpenWrtにfw4でポリシールーティングを入れる

OpenWrtでポリシールーティングを入れる ポリシールーティングを入れると何が嬉しいのか。 OpenWrtの nftables (nft) では inet fw4 のテーブルに全部入っている。 しかしLuciのZONE転送の許可拒否とTraffic Acceptをうまく両立するのが大変だった。 Zone 転…

nft で指定位置にinsert する

nft で指定位置にinsert する 既存のルールが次のようになっているとき table inet fw4 { chain forward { # handle 2 type filter hook forward priority filter; policy drop; $EXISTS_RULE # handle 2340 $EXISTS_RULE # handle 2341 $EXISTS_RULE # hand…

nftablesのfowardが記述が大量になる問題。

nftablesのテーブルのルールがあふれる どんなに整理しても、既存のforward テーブルがあふれかえることは避けられない。 細かく条件を入れればいれるほど、forward テーブルに処理が集中してしまい、結局のところiptables時代と何も変わらない気がします。 …

nftablesでaccept後のdropにマッチを回避できない。

nftablesでacceptとdropにマッチするとdropになる問題 nftablesを使ってると、accept しても他のテーブルでreject(drop)されてしまうことがある。 複数テーブルでaccept と dropが混合しちゃう 例えば、tableAとtableBにforwardの許可設定を書くわけよ。tabl…

nftables で、パケットが該当ルールに届いているかチェックする方法

nftables で、パケットが該当ルールに来ているかチェックする方法 パケットの行先が不明のとき、どこまでマッチしているか調べる必要がある。このときcounter を使うのが一番簡単。 例えば、Google(v6) 宛のパケットを探したい 次のように、ターゲットとなる…

nft によるMSQUERADE(iptables MASQUERADEからの移行)

nft によるMSQUERADE(iptables MASQUERADEからの移行) iptablesでマスカレード(またはSNAT)は古くから行われている枯れた手法。これをnft(nftables)に書き換える場合のメモ 次のような、マスカレード(NAT)をiptablesで追記しているとする。 iptables -…

nftablesでルールを追加したら、Operation not supported になる

nftablesでruleを追加してたら、時々遭遇するこの記述である。 Error: Could not process rule: Operation not supported になるのは、type nat のルールを type filter に入れたとき 再現例 filter に snat を入れる # filter を作る nft add table sample …

nftables output チェイン(hook)ルーティングができない。-> type routeする

nftablesでルーティングが効かかないことがあった。 ポリシ・ルーティングをしていて、ルーティングされないので頭を悩ませてた。しらべたら、 type routeを使うのが必須であった。 パケットを転送するときは、ポリシルーティングが効く、しかし、ルーティン…

nftablesでiptables recentと同等の処理をする(ipset利用で動的ファイアウォール)

nftablesでiptables xt_recent を使えない iptables でrecent モジュールを使って、閾値を設けることができる。 iptables -I INPUT -i eth2 -m conntrack --ctstate NEW -m recent --name fromList --set iptables -I INPUT -i eth2 -m recent --name fromLi…

nftables でポリシールーティング

マーキングしたパケットを通常のルーティングより優先度を上げた別のルーティングテーブルで転送する このとき、nf_tables でパケットの条件を指定して、マーキングする。 該当のパケットをマーキングする wireguardのインターフェイスから来たパケットは0x6…

linuxのnftables(nft)でルータ機能を作る

linuxで単純なルータ機能を作る マスカレードやDNAT/SNATをして、ルータ機能を作ってみる。 先のiptablesと比較してnft でどうなるのかを見たいので、試した。 ネットワーク構成図 以下のようなネットワーク構成を作る 実際に作った構成 ipコマンドには netn…

nftables移行のためnftコマンドとnftablesを調べたときのメモ。

nftablesへの移行 openwrt をアップグレードしたら、fw3 が fw4 にアップグレードされて、nftablesがデフォルトになった。 そして、nftablesを使わないルールがあると、注意・警告が出るようになった。とても煩わしいし、ルールの確認のために見る箇所が増え…

nftablesに変わった後、iptablesで- j ACCEPTが動かない。

nftablesに変わったらiptablesが動かなくなった。 nftablesに変わってもiptablesはそのまま動作する。と思ってたのですが。iptablesだけで書くとそのまま動作するが、nftablesとiptablesが混ざるとACCEPTが動かない。混ぜるな!と思うかもしれませんが、ディ…

IPv6間のMasquerade(NAT)nftablesでLinux v6 GWを作る方法。

ipv6 NATをnftables v4 の masquerade は次のようになっていた。 nft を使ってv4 を作る単純な例は次のようになる。 # テーブル追加 nft add table my_nat44 # テーブルにフィルタチェーンを追加 nft add chain my_nat44 postrouting { type nat hook postro…

nftablesのv4-v4のsnat/masqueradeとiptablesの比較

nftables linux のiptablesはそのままのコマンドで動作するのですが。 iptablesはnftablesのサブセットのような扱いになっています。 iptablesと比較しながら、超基本的な書式を学ぶことにした。 nftables nftables で masquerade する。 最初にテーブル追加…

ubuntuのaptで入れたsslhで細かい設定を行う。

ubuntu の apt で入れた sslh が微妙だった件。 ubuntu の apt で入れた sslh にいくつか問題があった。どのようにめんどくさいかというと、設定の追加がほぼ不可能なのだ。 /etc/init.d/sslh/ をベースにしていて、 init.dが/etc/default/sslh を sourceし…