[routerboard][mikrotik] RouterOSでCountry Blockを使用する方法。

2014/06/25 10:55mikrotikcountry block,Mikrotik,RouterOS,script,国別ブロック

RouterOSを使用しているとどうしても使用する場面が想定されるCountry Block(国別防御)だと思いますが、RouterOSには標準では機能として搭載されていません。

しかし同じような事を考える人が多いらしく、過去にはScriptが組まれていたのですが、最近のRouterOSでは動作しないことが確認されています。

しかし、態々国別のCIDRをRouterOSの仕様にしてリスト化しているサイトが有りました。

検証環境:

  • RouterOS 6.15

まずはScriptを2つ作成します。
一つは該当するリストの削除。もう一つはCIDRリストのダウンロードし、アドレスリストとして登録するScriptになります。

リストを削除するScriptは以下になります。今回はロシアのリストがある前提です。

[admin@MikroTik] /system script> add name=remove_russia policy=ftp,read,write,policy,test,winbox,api source="
n:foreach i in=[/ip firewall address-list find ] do={
n:if ( [ /ip firewall address-list get $i list ] = "RU" ) do={
n/ip firewall address-list remove $i
n}
n}
n"

そして、もう一つはロシアのCIDRリストをダウンロードするScriptになります。

[admin@MikroTik] /system script> add name=download_RU policy=read,write,test,polic
icy source={
{... /tool fetch url=http://www.iwik.org/ipcountry/mikrotik/RU
{... /import file-name=RU
{... }

そして、これらを1日1回のペースで実行するようにスケジューラーに登録します。

/system scheduler
add interval=1d name=CB_RU on-event="/system script run remove_russiar
n:delay 30r
n/system script run download_RU" policy=
ftp,read,write,policy,test,winbox,api start-time=startup

一応一つのScriptとしてまとめて実行することは可能ですが、対象とする国が増えたりする場合、メンテナンス性を考慮すると面倒でも国別にScriptを分けて実行したほうがいいと思います。

そして、最後にfirewall filterにdropするように登録して終了です。

/ip firewall filter
add action=drop chain=input comment=Country_Block_Russia src-address-list=RU
RB750GL
RB750GL

MikroTik
売り上げランキング : 75088

Amazonで詳しく見る by AZlink

RB2011UiAS-IN
RB2011UiAS-IN

MikroTik
売り上げランキング : 92440

Amazonで詳しく見る by AZlink

この記事を書いた人
kometchtech

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

Buy Me A Coffee

2014/06/25 10:55mikrotikcountry block,Mikrotik,RouterOS,script,国別ブロック

Posted by kometchtech