パケットの送信元・宛先 IP アドレスを書き換える

昨日にひきつづき 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 アドレスを書き換える方法を説明しました。

Tagged , ,

Leave a Reply