昨日にひきつづき Modify-Field アクションでパケットを書き換えてみましょう。今日はパケットの送信元と宛先 IP アドレスを書き換える方法です。
IP アドレス書き換えアクションを作る
IP アドレスを書き換えるアクションは ActionSetNwSrc とActionSetNwDst です。
# 送信元 IP アドレスを指定した値に書き換える ActionSetNwSrc.new( "192.168.1.1" ) # 宛先 MAC アドレスを指定した値に書き換える ActionSetNwDst.new( "192.168.2.100" )
見れば分かる通り、使い方は MAC アドレスを書き換える ActionSetDlSrc, ActionSetDlDst とほぼ一緒です。
Flow Mod でアクションを指定する
こうして作ったアクションはいつもの通り Flow Mod の :actions オプションに指定できます。
def packet_in datapath_id, message # .. send_flow_mod_add( datapath_id, :match => Match.new( :dl_src => message.macsa, :dl_dst => message.macda ), :actions => [ ActionSetNwDst.new( "192.168.2.100" ), ActionOutput.new( port_no ) ] )
Packet Out のアクションも同様です。
まとめ
ActionSetNwSrc と ActionSetNwDst でパケットの送信元・宛先 IP アドレスを書き換える方法を説明しました。