[#routerboard][#mikrotik][Tips] 也许可能更多的是,RouterOS的提示 2017

2017/11/04 14:22mikrotiklogging,Mikrotik,Path MTU Discovery,PMTU,PMTUD,RouterOS,script,tcp mss

bbf61c46-7699-45b8-a1d0-1c9ab2dccc78.png

題名を中国語(簡体字)で表記したことについては、特に意味がありません。

本当は向こうに書こうか迷ったのですが、まぁメモ代わりということもあるので、こちらに書きます。

実は設定で漏れていたりしませんか、という内容になります。

その1

まず最初にPath MTU Discovery (PMTUD)について。

これって調べてみると深い問題なんですね。
重要度についてはあまり理解していませんでした。

YAMAHA RTXシリーズだと以下の設定パラメータになると思います。

ip tcp mss limit auto

TCPのMSSサイズの制限については、RouterOSのFirewallのデフォルトルールには無かった気がします。

ただ、iptablesの設定例で調べてみると案外出てくるんですね。

ipv4については、「MTU」と「MRU」を1454などに設定する必要があるので、大きく影響することは少ないのですが、ipv6については影響が大きいようです。

UDPとICMPの深いぃ話 /
https://www.nic.ad.jp/ja/materials/iw/2014/proceedings/t2/t2-matsuhira.pdf

PowerPoint Presentation /
https://www.janog.gr.jp/meeting/janog34/doc/janog34-6pmtu-kunitake-1.pdf

というわけで、以下のFirewallルールをipv4、ipv6とも追加しておいたほうが良いでしょう。

/ip firewall mangle
add action=change-mss chain=forward comment="Clamp MSS to PMTU" \
new-mss=clamp-to-pmtu passthrough=yes protocol=tcp tcp-flags=syn

/ipv6 firewall mangle
add action=change-mss chain=forward comment="Clamp MSS to PMTU" \
new-mss=clamp-to-pmtu passthrough=yes protocol=tcp tcp-flags=syn

RouterOSの場合は、これでTCP MSSの自動調整が機能するようになります。

参考情報:

その2

過去にこのような記事を書いているのを覚えている方はいらっしゃいますでしょうか。

これはかなり有用な機能の追加になるのですが一つ問題が。

この手の機能を使用した方はわかると思うのですが、大量のaddress-listの入れ替えが発生するため、logにその旨のメッセージが大量に出力されてしまうことです。十数行ならまだしも数千行になると、一気にlogの可読性が落ちます。

ということでこれを防ぐ手段です。

/system loggingのon-eventに以下のように記述すると良いと思います。

:log warning "Disabling system Logging";
/system logging disable 0
<実行したいScript>
:log warning "Enabling system Logging";
/system logging enable 0

気がついた人もいるかもしれません。これは/system loggingの0番を無効にしたり有効にしたりする方法になります。

0番に該当するのはinfo/memoryになり、今回のようにinfoレベルのlogが出力される際のフラグになります。

[admin@MikroTik] /system logging> print 
Flags: X - disabled, I - invalid, * - default 
 #    TOPICS                           ACTION                          PREFIX    
 0  * info                             memory                                    
 1  * error                            memory                                    
 2  * warning                          memory                                    
 3  * critical                         echo                                      
 4 X  debug                            memory                                    
 5 X  debug                            memory                                    
      dhcp                           

これを一時的に無効にすることで、logの大量出力を防ぎます。

ただ、この無効化を忘れたままにしていると、重要なlogを逃す可能性がありますので、実装する際は十分に注意するようにしましょう。

上にもあるように、「:log warning "Enabling system Logging";」のような形で、予めメッセージを出力するようにしてあげるのが良いと思います。

この記事を書いた人
kometchtech

kometchtech
うつ病を患いながら、IT業界の末席にいるおっさんエンジニア。科学計算をしたことがないのに、HPC分野にお邪魔している。興味のある分野で学習したことをblogにまとめつつ、うつ病の経過症状のメモも置いておく日々。じつはRouterboard User Group JPの中の人でもある。
Amazon欲しいものリスト / Arm板を恵んでくれる人募集中

Buy Me A Coffee