Upgrade to Pro — share decks privately, control downloads, hide ads and more …

mrubyで作る海外IPフィルター

yasuaki-tahira
June 10, 2017
3.9k

 mrubyで作る海外IPフィルター

PHPカンファレンス福岡2017のスポンサーセッションでお話した「mrubyで作る海外IPフィルター」のスライドです。

yasuaki-tahira

June 10, 2017
Tweet

Transcript

  1. ాฏ߁࿕(.01FQBCP *OD
    1)1ΧϯϑΝϨϯε෱Ԭ
    NSVCZͰ࡞Δւ֎*1ϑΟϧλʔ

    View Slide

  2. ΠϯϑϥΤϯδχΞ
    ాฏ߁࿕!UBQSB
    ϗεςΟϯάࣄۀ෦ΠϯϑϥνʔϜ
    IUUQUBQJSBIBUFOBCMPHDPN

    View Slide

  3. झຯ

    View Slide

  4. (.0ϖύϘʹ͍ͭͯ

    View Slide

  5. ϗεςΟϯά
    &$ࢧԉ
    ϋϯυϝΠυ
    ίϛϡχςΟ

    View Slide

  6. View Slide

  7. ͋Δ೔ͷΞϥʔτ

    View Slide

  8. Ϩεϙϯε஗ԆΛݕ஌
    8FCαʔόίϯςϯπͷϨεϙϯε࣌ؒ؂ࢹάϥϑ

    View Slide

  9. ΞϥʔτݪҼΛௐࠪ

    View Slide

  10. Ξϥʔτൃੜ௚લͷΞΫηεݩͷࠃ
    ւ֎

    ೔ຊ

    ࠃ಺ͷαʔϏεʹ΋ؔΘΒͣւ֎͕ଟ਺
    ͦͷଟ͕͘৐ͬऔΓ΍ߴෛՙΛ༩͑Δ߈ܸ

    View Slide

  11. ւ֎͔ΒͷΞΫηε੍ݶ͕ඞཁ

    View Slide

  12. ւ֎*1ϑΟϧλʔ

    View Slide

  13. ւ֎*1ϑΟϧλʔͱ͸
    ւ֎*1ϑΟϧλʔ
    8FC4FSWFS
    ւ֎͔Βͷ
    ΞΫηε
    ೔ຊ͔Βͷ
    ΞΫηε

    View Slide

  14. ϩϦϙοϓʂʹ͓͚Δ
    ւ֎*1ϑΟϧλʔͰߟྀ͢Δ՝୊

    View Slide

  15. ϩϦϙοϓʂ͸େن໛ɾߴूੵ
    wར༻࣮੷ສਓ
    wυϝΠϯ਺ສҎ্
    wΞΫηε૯਺໿ԯ೔ ໿ສඵ

    wαʔό਺ສυϝΠϯऩ༰ͷߴूੵ ˞೥݄຤࣌఺

    View Slide

  16. ϩϦϙοϓʂ͸େن໛ɾߴूੵΏ͑ͷ՝୊
    ௨͢΂͖ւ֎͔ΒͷΞΫηεΛڐՄ
    ಛఆͷϦΫΤετύεͰಈ࡞
    υϝΠϯ͝ͱʹ༗ޮɾແޮ੾Γସ͑
    Ϩεϙϯε଎౓Λ௿Լͤ͞ͳ͍

    View Slide

  17. ௨͢΂͖ւ֎͔ΒͷΞΫηεΛڐՄ
    wྫ͑͹ʜ
    wେखݕࡧΤϯδϯͷΫϩʔϥͷେ൒͸ւ֎
    wΫϩʔϥΛϒϩοΫ͢ΔͱΠϯσοΫε͞Εͳ͍

    View Slide

  18. ಛఆͷϦΫΤετύεͰಈ࡞

    wαΠτ৐ͬऔΓ΍αʔόෛՙʹܨ͕ΔݪҼʹݶఆ
    wର৅Λݶఆ͢Δ͜ͱʹΑΓෆཁͳ൑ఆॲཧΛ๷͙
    wѱҙͷͳ͍ւ֎Ϣʔβ΁ͷӨڹΛ࠷খݶʹ

    View Slide

  19. ւ֎*1ϑΟϧλʔ
    υϝΠϯ͝ͱʹ༗ޮɾແޮ੾Γସ͑
    ւ֎Λڋ൱͍ͨ͠
    υϝΠϯ
    ւ֎ΛڐՄ͍ͨ͠
    υϝΠϯ
    wւ֎*1ϑΟϧλʔͷར༻͸Ϣʔβ͕ࣗ༝ʹબ୒
    8FC4FSWFS

    View Slide

  20. Ϩεϙϯε଎౓Λ௿Լͤ͞ͳ͍
    wւ֎*1ϑΟϧλʔ༗ޮԽ࣌ʹ଎౓௿ԼΛײͤ͡͞ͳ͍
    wʮॏ͍͔Βແޮʹ͍ͨ͠ʯͱϢʔβʹࢥΘͤͳ͍

    View Slide

  21. ࣮૷

    View Slide

  22. ϩϦϙοϓʂͷߏ੒

    View Slide

  23. ϓϩΩγαʔόʔͱ8FC4FSWFSͷଟஈߏ੒
    ϦόʔεϓϩΩγ
    /HJOY
    ɾɾɾ
    8αʔό
    ςφϯτ
    ςφϯτ
    ɾɾɾ
    ɾɾɾ
    8αʔό
    ςφϯτ
    ςφϯτ ɾɾɾ
    ΞΫηε
    ΞΫηεΛద੾ʹৼΓ෼͚

    View Slide

  24. HFPJQϞδϡʔϧͰͷ࣮૷Λݕ౼

    View Slide

  25. HFPJQϞδϡʔϧͱ͸
    wOHJOYDPOG಺ͰࠃίʔυΛ࢖༻੍ͨ͠ݶ͕Մೳ
    # US(ΞϝϦΧ)ͱJP(೔ຊ)Λڋ൱
    map $geoip_country_code $allowed_country {
    default yes;
    US no;
    JP no;
    }

    View Slide

  26. ௨͢΂͖ւ֎͔ΒͷΞΫηεΛڐՄ
    ಛఆͷϦΫΤετύεͰಈ࡞
    υϝΠϯ͝ͱʹ༗ޮɾແޮ੾Γସ͑
    ࠃ୯Ґͷڋ൱͸༰қ͕ͩଞͷ৚݅ͱ૊Έ߹Θͤਏ͍

    View Slide

  27. ௨͢΂͖ւ֎͔ΒͷΞΫηεΛڐՄ
    ಛఆͷϦΫΤετύεͰಈ࡞
    υϝΠϯ͝ͱʹ༗ޮɾແޮ੾Γସ͑
    ࠃ୯Ґͷڋ൱͸༰қ͕ͩଞͷ৚݅ͱ૊Έ߹Θͤਏ͍
    ϩϦϙοϓʂͰ͸ཁ݅Λຬͨͨ͢Ί
    ࡉ͔ͳઃఆΛߦ͍͍ͨ

    View Slide

  28. ͜ͷ՝୊Λղܾ͢Δ
    ιϑτ΢ΣΞ

    View Slide

  29. OHY@NSVCZNSVCZ

    View Slide

  30. OHY@NSVCZͱ͸
    w!NBUTVNPUPSZ͕։ൃ
    wOHJOYͰNSVCZΛར༻͢ΔͨΊͷ֦ுϞδϡʔϧ
    wOHJOYͷڍಈΛ3VCZͰ֦ுՄೳ
    wύϑΥʔϚϯεྼԽ͕࠷খݶ

    View Slide

  31. OHY@NSVCZͰཁ݅Λຬͨ͢
    ւ֎*1ϑΟϧλʔΛ࡞Δ

    View Slide

  32. *1ͷࠃίʔυΛ.BY.JOE%#͔Βऔಘ͠൑ఆ
    w*1ͱࠃίʔυΛඥ෇͚ͨ.BY.JOE%#Λར༻
    wSFNPUF@BEESม਺ΑΓΞΫηεݩ*1औಘ
    wऔಘͨ͠*1ͷࠃίʔυΛ.BY.JOE%#ΑΓऔಘ
    wऔಘͨ͠ࠃίʔυ͕ڐՄͯ͠Α͍͔൑ఆ

    View Slide

  33. 6TFS"HFOUΛݩʹ௨͢΂͖ւ֎͔ΒͷΞΫηε͔൑ఆ
    wIUUQ@VTFS@BHFOUม਺ΑΓ6TFS"HFOUΛऔಘ
    wऔಘͨ͠6TFS"HFOU͕௨͢΂͖΋ͷ͔൑ఆ

    View Slide

  34. ϦΫΤετύεΛݩʹ੍ݶର৅͔൑ఆ
    wSFRVFTU@VSJม਺ΑΓϦΫΤετύεΛऔಘ
    wऔಘͨ͠ϦΫΤετύε੍͕ݶର৅͔൑ఆ

    View Slide

  35. ΞΫηε൑ఆΛߦ͏ػೳΛ
    OHY@NSVCZ͔Β؆ܿʹݺͼग़͢

    View Slide

  36. NSVCZJQpMUFS

    View Slide

  37. NSVCZJQpMUFSͷ໾ׂ
    wIUUQTHJUIVCDPNQFQBCPNSVCZJQpMUFS
    w༷ʑͳଐੑΛ΋ͱʹڐՄɾڋ൱ͷ൑ఆ
    wϦΫΤετύεɾ6TFS"HFOUɾΞΫηεݩࠃίʔυ
    wQFSNJU ɾEFOZ ͱ͍͏ڞ௨ͷϝιουͰ൑ఆ
    wࠓޙͦͷଞ༷ʑͳύϥϝʔλʹରԠ༧ఆ

    View Slide

  38. ༷ʑͳ৘ใΞΫηεʹΑΔ
    ύϑΥʔϚϯεྼԽΛ࠷খݶʹ཈͑Δ

    View Slide

  39. NSVCZNTE

    View Slide

  40. NSVCZNTEͷ໾ׂ
    wIUUQTHJUIVCDPNQFQBCPNSVCZNTE
    w!QZBNBͱڞಉͰ։ൃ
    wσʔλϕʔεɾωοτϫʔΫ,74ɾΠϯϝϞϦ,74΁
    ͷΞΫηεΛࣗಈͰ࠷దԽ
    w.Z42-ɾ3FEJTɾ-.$ ΠϯϝϞϦͷ,74
    Λ࠾༻

    View Slide

  41. NSVCZNTE
    ΠϯϝϞϦ
    ,74
    MPDBMNFNDBDIF

    ωοτϫʔΫ
    ,74
    ʢ3FEJTʣ
    σʔλϕʔε
    .Z42-

    σʔλΞΫηε
    ॲཧίετ͕௿͍σʔλετΞ͔ΒॱʹΞΫηε
    σʔλ͕ݟ͔ͭΓ࣍ୈฦ͢
    ࣍ճҎ߱ͷΞΫηεͷͨΊʹΩϟογϡ
    OHY@NSVCZ

    View Slide

  42. ւ֎*1ϑΟϧλʔͷॲཧͷྲྀΕ

    View Slide

  43. ւ֎*1ϑΟϧλʔͷॲཧ಺༰
    ւ֎*1ϑΟϧλʔ
    ւ֎*1ϑΟϧλʔ͕༗ޮͳαΠτʁ ࠷దԽ͞Εͨ
    σʔλετΞ
    :&4
    63-൑ఆ 6TFS"HFOU൑ఆ ࠃίʔυ൑ఆ
    શͯʹ֘౰͠ͳ͍ΞΫηεͷΈ8αʔόʹసૹ
    ΞΫηε

    View Slide

  44. ·ͱΊ

    View Slide

  45. ·ͱΊ
    wηΩϡϦςΟɾߴෛՙରࡦͱ͓٬༷΁ͷӨڹͷόϥϯεΛ
    ߟྀͨ͠ւ֎*1ϑΟϧλʔΛ࣮૷ͨ͠
    wࠃίʔυ΍ϦΫΤετ৘ใΛݩʹ൑ఆΛߦ͏

    *1ϑΟϧλʔϞδϡʔϧ
    wσʔλΞΫηε࠷దԽ͠େن໛؀ڥ΁ద༻΋Մೳͱͨ͠

    View Slide

  46. 1)1Λ҆શɾշదʹ࢖͏ͳΒϩϦϙοϓʂ

    View Slide

  47. ܅΋ϖύϘͰಇ͔ͳ͍͔ʁ
    ࠷৽ͷ࠾༻৘ใΛνΣοΫˠ !QC@SFDSVJU

    View Slide

  48. ͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠

    View Slide