Linuxã«ãŒãã«ãã©ãã£ãã¯å¶åŸ¡ãµãã·ã¹ãã ã®U32ãã£ã«ã¿ãŒã¯åçŽã§ç°¡åã§ãããšèããããŠããããã詳现ãªããã¥ã¡ã³ãã¯å¿
èŠãããŸããã ããšãã°ãLARTCïŒLinux Advanced Routing and Traffic ControlïŒã«ã¯ãããã«é¢ããããã€ãã®æ®µèœãããããŸããã ããããå®éã«ã¯ãU32ã¯ã¯ããã«è€éã§èå³æ·±ããã®ã§ãããèŠãç®ã»ã©ç°¡åã«äœ¿çšã§ããããã§ã¯ãããŸããã catã®äžã«ã¯ã䜿çšäŸãšè©³çŽ°ãªèª¬æãå«ããã®ãã£ã«ã¿ãŒã«é¢ããèšäºããããŸãã
ãããã³ã°
ãããã£ãŠãU32ãã£ã«ã¿ãŒã®äž»ãªæ©èœã¯ããã±ããããããŒã¿ã®ãããã¯ãååŸããæå®ãããå€ãšæ¯èŒããããšã§ãã å€ãäžèŽãããšãããã±ãŒãžã«å¯ŸããŠããã€ãã®ã¢ã¯ã·ã§ã³ãå®è¡ãããŸãã ããã±ãŒãžå
ã®ããŒã¿ãããã¯ã¯ã次ã®ãã©ã¡ãŒã¿ãŒã«ãã£ãŠæå®ãããŸãã
- ããŒã¿ãããã¯ã®ãµã€ãºã ãã©ã¡ãŒã¿u32 / u16 / u8ã«ãã£ãŠæ±ºå®ãããŸãã çŽèŠ³çã«ã¯ãæ°åã¯ãããåäœã®ãããã¯ã®é·ãã§ãã ã«ãŒãã«ã¯32ããããããã¯ã§åäœããŸãã tcã§ã¯ããããã¯é·ã8ã16ã32ãããã«èšå®ã§ããŸãã
- ããããã¹ã¯ã ããã¯ãããŒã¿ãããã¯å
šäœã§ã¯ãªããåã
ã®ãããã®ã¿ããã§ãã¯ããå¿
èŠãããå Žåã«å¿
èŠã§ãã åœç¶ããã¹ã¯ã®é·ãã¯ãããã¯ã®é·ããšäžèŽããå¿
èŠããããŸãã ãããããšã®ANDæŒç®ã䜿çšããŠãããã¯ã«ãã¹ã¯ãé©çšããããã®æŒç®ã®çµæã¯ãã§ã«èšå®å€ãšæ¯èŒãããŠããŸãã
- ãã±ããã®éå§ããã®ãªãã»ããã ãã¹ãŠã®ãªãã»ããã¯32ãããå¢çã§æŽåãããŸãã ãã¹ãŠãèŠããã»ã©æçœã§ã¯ãªããããããã«ã€ããŠã¯åŸã§èª¬æããŸãããä»ã®ãšããã¯ãã®åçŽåã§ååã§ãã ã»ãšãã©ã®å ŽåããŒãã®ãªãã»ããã¯ããããã¯ãŒã¯å±€ããããŒã®å
é ã«å¯Ÿå¿ããŸãã IPv4 / IPv6ãã±ããã®å
é ã
ããšãã°ã次ã®tcã³ãã³ãã®äŸãèŠãŠãã ããã
tc filter add \ dev eth0 \ parent 1: \ pref 10 \ protocol ip \ u32 \ match u32 0xc0a80100 0xffffff00 at 12 \ classid 1:8
åªå
床10ã®ã¿ã€ãu32ã®ãã£ã«ã¿ãŒããeth0ã®èŠåŸ1ïŒ0ã«è¿œå ããŸãã æ¯èŒãæåãããšãããã±ãŒãžã¯ã¯ã©ã¹1ã«åé¡ãããŸãã8ã 7è¡ç®ã¯ç¹ã«èå³æ·±ãã®ã§ã詳现ã«æ€èšããŸãã
- match u32-äžèŽæ¡ä»¶ã®éå§ãšãã±ããããååŸããããŒã¿ãããã¯ã®ãµã€ãºãèšå®ããŸãã
- 0xc0a80100ã¯ããã±ããã®ããããæ¯èŒããå€ã§ãã
- 0xffffff00ã¯ããã±ããã®ããŒã¿ã«ã¹ãŒããŒã€ã³ããŒãºãããããããã¹ã¯ã§ãããçµæã¯ãã§ã«èšå®ãããã®ãšæ¯èŒãããŸãã å€ãšãã¹ã¯ãããããŒã¿ãããã¯ãçããå Žåãç¹å®ã®ã¢ã¯ã·ã§ã³ãå®è¡ãããŸãã ã»ãšãã©ã®å Žåããã®ã¢ã¯ã·ã§ã³ã¯ããã±ãŒãžã®åé¡ã«ãªããŸãã
- at 12-ããŒã¿ãããã¯ã®å
é ãäœçœ®ããå
é ããã®ãªãã»ããã ãã®ãã©ã¡ãŒã¿ãŒãæå®ãããŠããªãå Žåããªãã»ããã¯ãŒããšèŠãªãããŸãã ãã£ã«ã¿ãŒã®æåã®éšåã§ã¯ããŒãå¢çã¯IPv4ãªã©ã®ãããã¯ãŒã¯ã¬ã€ã€ãŒããããŒã®å§ãŸããšèŠãªãããŸãã è² ã®ãªãã»ãããå¯èœã§ãã
ãããã®æé ã§ã¯ããœãŒã¹ã¢ãã¬ã¹ã確èªãïŒIPv4ããããŒã®åœ¢åŒãèŠããšç¢ºèªã§ããŸãïŒãããã192.168.1.0/24ãµããããã«å±ããŠããå Žåããã±ããã1ïŒ8ã¯ã©ã¹ã«éä¿¡ããŸãã ãã¡ãããRFCã絶ããæãäžããããšã¯é¢åã§ããããã¹ãŠã®ãã€ã¢ã¹ã念é ã«çœ®ãããšã¯å°é£ã§ãããã®ãããtcã¯ãã䜿çšãããã±ãŒã¹ã«æ§æç³è¡£ãæäŸããŸãã ããšãã°ã次ã®ããã«èšè¿°ããå Žåããã®äŸã¯ããæ確ã«ãªããŸãã
tc filter add \ dev eth0 \ parent 1: \ pref 10 \ protocol ip \ u32 \ match ip src 192.168.1.0/24 \ classid 1:8
1ã€ã®ã³ãã³ãã§è€æ°ã®ãäžèŽããã©ã¡ãŒã¿ãŒãæå®ã§ãããã¹ãŠã®æ¡ä»¶ãæºããããå Žåã«ã®ã¿äžèŽãæåããŸãã éä¿¡å
ã¢ãã¬ã¹ã192.168.1.0/24ã§ãToSå€ã0x10ïŒã€ã³ã¿ã©ã¯ãã£ããã©ãã£ãã¯ïŒã§ãããã¹ãŠã®ãã±ãããã¯ã©ã¹1ïŒ1ïŒã«éä¿¡ããŸãããã
tc filter add \ dev eth0 \ parent 1: \ pref 10 \ protocol ip \ u32 \ match ip src 192.168.1.0/24 \ match ip tos 0x10 0x1e \ classid 1:1
ãã¹ãŠãæ£åžžã«æ©èœãããã©ããã確èªããŸãã
ã芧ã®ãšããããã¹ãŠãæ£åžžã«æ©èœããŸããããã±ãŒãžã¯ç®çã®ã¯ã©ã¹ã«ãªããŸãã ããããtcã®åºåã泚ææ·±ãèŠããšãããã€ãã®ç¹ããŸã äžæã§ãã ããšãã°ããããã®äžå¯è§£ãªfhå€ã¯800 :: 800ã§ãã ãããã¯ããããããã³ãã«ïŒè±èªã®ããã³ãã«ãããã®ãã¬ãŒã¹ïŒ-U32å
ã®ãã£ã«ã¿ãŒèå¥åã§ãã
åã
ã®ãã£ã«ã¿ãŒã®åãã³ãã«ã¯ã3ã€ã®16é²æ°ã§æ§æãããã€ã³ã¿ãŒãã§ã€ã¹ã®U32ãã£ã«ã¿ãŒã¹ããŒã¹å
ã§äžæã§ãã ç§ãã¡ã®å Žåãããã¯ãã³ãã«800 :: 800ã§ãã ããã§ãæåŸã®æ°åïŒè¿œå ããããã£ã«ã¿ãŒã®çªå·ïŒã®ã¿ã«é¢å¿ããããŸãã æå®ããªãå Žåãã·ã¹ãã èªäœããããå²ãåœãŠãŸã-æãå€ããã®ã®æ¬¡ã0x800ããéå§ããŸãã ãã£ã«ã¿ãŒçªå·ã®ç¯å²ã¯0x001ã0xfffã§ãã é©åãªãã©ã¡ãŒã¿ãŒã䜿çšããŠããã£ã«ã¿ãŒçªå·ãæåã§æå®ã§ããŸãã
tc filter add \ dev eth0 \ parent 1: \ pref 10 \ protocol ip \ handle ::1 \ u32 \ match ip src 192.168.1.0/24 \ match ip tos 0x10 0x1e \ classid 1:1
ãã£ã«ã¿ã¯çªå·é ã«å®è¡ãããŸãã
ãã€ã³ãã£ã³ã°
2ã€ã®ãã£ã«ã¿ãŒãè¿œå ããŸãããã
tc filter add \ dev eth0 \ parent 1: \ pref 10 \ protocol ip \ handle ::1 \ u32 \ match ip src 192.168.1.0/24 \ match ip tos 0x10 0x1e \ classid 1:1 tc filter add \ dev eth0 \ parent 1: \ pref 10 \ protocol ip \ handle ::2 \ u32 \ match ip src 192.168.1.0/24 \ match ip tos 0x08 0x1e \ classid 1:2
äž¡æ¹ã®ãã£ã«ã¿ãŒã«ã¯ãåããã¬ãã£ãã¯ã¹ïŒãã³ãã«ã®æåã®2ã€ã®æ°åïŒ800ïŒ0ïŒïŒãä»ããŸãã çªå·-ãã³ãã«ã®æåŸã®çªå·ã®é ã«ããããæžãçãããšæ³åãããšããã£ã«ã¿ãŒã®ãªã¹ããåŸãããŸãïŒ
800ïŒ0ãªã¹ãïŒ
:: 1-ip src 192.168.1.0/24 tos 0x10-> classid 1ïŒ1
:: 2-ip src 192.168.1.0/24 tos 0x08-> classid 1ïŒ2
1ã€ã®ãªã¹ãã®ãã£ã«ã¿ãŒã§ã¯ããã³ãã«ã¯æåŸã®æ°åã§ã®ã¿ç°ãªãããããªã¹ãèªäœã¯ããã³ãã«ã®æåã®2ã€ã®æ°å-ãã¬ãã£ãã¯ã¹ïŒ800ïŒ0ïŒã§èå¥ã§ããŸãã åè¿°ã®ããã«ããã£ã«ã¿ãŒã¯åŸãé åºã§å®è¡ãããŸãã ããããã®ãã£ã«ã¿ãŒã§äžèŽãæåããå Žåãäœããã®ã¢ã¯ã·ã§ã³ãå®è¡ãããU32ãçµäºããŸãã ãªã¹ãã®æåŸã«å°éããäžèŽãããã®ã1ã€ãåä¿¡ããŠããªãå ŽåãU32ãã£ã«ã¿ãŒã¯æªåé¡ã®ãã±ãããå
é ã«è¿ããŸãã

åé¡ã«å ããŠãã¢ã¯ã·ã§ã³ã¯ãããã±ãŒãžããã§ãã¯ããããã®å¥ã®ãã£ã«ã¿ãŒãªã¹ããžã®ç§»è¡ã«ãªããŸãã ããã¯ã次ã®ããã«ããclassidãã§ã¯ãªããlinkããã©ã¡ãŒã¿ã䜿çšããŠè¡ãããŸãïŒãclassidããã©ã¡ãŒã¿ãæå®ãããŠããŠãç¡èŠãããŸãïŒã
tc filter add \ dev eth0 \ parent 1: \ prio 10 \ protocol ip \ handle ::2 \ u32 \ match ip src 192.168.1.0/24 \ link 1:
ãã±ããã«ãµãããã192.168.1.0/24ããã®éä¿¡å
ã¢ãã¬ã¹ãããå Žåã1ã®ãã³ãã«ã§ãã£ã«ã¿ãŒãªã¹ãã®ãã§ãã¯ãéå§ãããŸãïŒ0ã æåããæ¯èŒããªãå Žåãåã®ãªã¹ã800ïŒ0ã«æ»ãããã§ãã¯ãç¶ããŸãã åæ§ã«ã1ïŒ0ãªã¹ãããã®ãã£ã«ã¿ãŒã¯ä»ã®ãªã¹ãã«ããŸã3çªç®ãªã©ã®ãªã¹ãã«é·ç§»ã§ããŸãã ãã®ãããæ倧7ã€ã®é·ç§»ïŒããã§ã¯äžååãªå Žåãã«ãŒãã«ãœãŒã¹ã®ãã¯ã眮æTC_U32_MAXDEPTHãå€æŽã§ããŸãïŒã

ãŸããå€æ°ã®ãã£ã«ã¿ãŒãå€æ°ã®ãªã¹ãã«åå²ãããã®ãããªãã©ã³ãžã·ã§ã³ãå¹³åçã«æŽçããããšã¯ã1ã€ã®å€§ããªãªã¹ãã«å¯ŸããŠãã§ãã¯ãããããã¯ããã«é«éã§ã¯ãªãããšãèæ
®ã«å
¥ããå¿
èŠããããŸãã ãã ããååãšããŠããã€ã³ãã£ã³ã°ã¯å¥ã®U32ã¡ã«ããºã ïŒããã·ã¥ïŒãšçµã¿åãããŠäœ¿çšââãããŸãã
ããã·ã³ã°
ãã®åã«ããã£ã«ã¿ãŒãªã¹ããèŠãŸããã ãããå®éã«ã¯ããããã¯ããã·ã¥ããŒãã«ãšåŒã°ãããã倧ããªæ§é ã®äžéšã«ãããŸããã ãã®å Žåãããã·ã¥ããŒãã«ã¯ã»ã«ã®1次å
é
åïŒãã±ããã®è±èªé
åïŒã§ãããããããã«1ã€ã®ãã£ã«ã¿ãŒãªã¹ããæ ŒçŽãããŸãã
ãã³ãã«ã§ã¯ãæåã®çªå·ã ããããã·ã¥ããŒãã«çªå·ã§ããã2çªç®ã¯ã»ã«çªå·ã§ãã ããã·ã¥ããŒãã«çªå·ã®ç¯å²ã¯0x000ã0xfffã§ãã»ã«çªå·ã®ç¯å²ã¯0x00ã0xffã§ãã ã»ã«ã®æ°ã¯1ã256ã§ã2ã®çŽ¯ä¹ã§ãªããã°ãªããŸããïŒå¥ã®å€ãèšå®ããããšã¯ã§ããŸãã-tcã¯ãšã©ãŒã¡ãã»ãŒãžã衚瀺ããŸãïŒã çªå·0x800ã®ããã·ã¥ããŒãã«ã¯ã«ãŒããšåŒã°ãã1ã€ã®ã»ã«ã§æ§æãããèªåçã«äœæãããŸãã ããã±ãŒãžãã§ãã¯ã¯ãåžžã«ã»ã«800ã®ãªã¹ãã調ã¹ãããšããå§ãŸããŸãïŒ0ã
次ã®ãããªè¿œå ã®ããã·ã¥ããŒãã«ãäœæã§ããŸãã
tc filter add \ dev eth0 \ parent 1: pref 10 \ protocol ip \ handle 1: \ u32 divisor 1
ããã§ãããã³ãã«1ïŒãã¯ããã·ã¥ããŒãã«ã®çªå·ãèšå®ãããé€æ°1ã-ãã®äžã®ã»ã«ã®æ°ïŒãã®å Žåãçªå·1ã®ããã·ã¥ããŒãã«ã«ã¯ããã£ã«ã¿ãŒãªã¹ã1ïŒ0ãé
眮ãããã»ã«ã1ã€ã ããããŸãïŒã
ãªã¹ãã®ãžã£ã³ãã䜿çšããŠããœãŒã¹ã¢ãã¬ã¹ãšToSãã£ãŒã«ãã«ããåé¡ã§äŸãæ¡åŒµããŸãã
ããããããªã³ã¯ããã©ã¡ãŒã¿ãŒã䜿çšãããšãã»ã«çªå·0ã«ãããã£ã«ã¿ãŒãªã¹ãã«ã®ã¿ç§»åã§ããŸããããã§ã¯ãä»ã®ã»ã«ã®ãªã¹ããã©ã®ããã«ç¢ºèªã§ããŸããïŒ ãããè¡ãã«ã¯ãhashkeyãã©ã¡ãŒã¿ãŒãšããã·ã¥ã¡ã«ããºã ã䜿çšãããŸãã U32ã§ã®ããã·ã¥ã®æå³ã¯ãã·ã¹ãã ããã±ããã®ããŒã¿ã«åºã¥ããŠãªã¹ãã«ã»ã«ã®çªå·ãåãåãããšã§ãã ããã¯ããã§ãã¯ã®åæ°ãæžããããã«å¿
èŠã§ãã 衚瀺æéã¯ãªã¹ãå
ã®ãã£ã«ã¿ãŒã®æ°ã«ç·åœ¢ã«äŸåãããªã¹ããšã¯ç°ãªããããã·ã¥ã¯äžå®æéïŒããã«éåžžã«çãæéïŒå®è¡ãããŸãã å€æ°ã®ãã£ã«ã¿ãŒã䜿çšããŠãããã·ã¥ã䜿çšãããšããªã¹ããšé·ç§»ã®ã¿ã䜿çšãããããæ¡éãã«é«ãããã©ãŒãã³ã¹ãå®çŸã§ããŸãã

ããã·ã¥ã䜿çšããŠåã®äŸãæžãçŽããŸãã
ãã®äŸã®ããã·ã¥ã¢ã«ãŽãªãºã ãæ€èšããŠãã ããã ãã®ã¢ã«ãŽãªãºã ã¯ã«ãŒãã«ããŒãžã§ã³2.6ã§å°å
¥ããããŸã å€æŽãããŠããŸããïŒã«ãŒãã«ããŒãžã§ã³2.4ã§ã¯ã¢ã«ãŽãªãºã ãç°ãªããŸãïŒã
- ãããã·ã¥ããŒããã©ã¡ãŒã¿ã§æå®ããããã¢ããããªãã»ããã§32ãããã¯ãŒããååŸããŸãã ãªãã»ããã¯ãŒããªã®ã§ãIPãã±ããã®æåã®32ããããååŸãããŸãã
- åããã©ã¡ãŒã¿ãŒããããããã¹ã¯ãé©çšããŸãã ããããã¹ã¯ã¯ã0x001f0000ãã§ãToSãã£ãŒã«ãã®äœçœ®ã«å¯Ÿå¿ããŠããŸãã
- çµæãæäžäœãããã®æ¹åã«nãããã ãã·ããããŸãã nã®å€ã¯ãã¹ã¯ããèšç®ããããã®äžã®æäžäœãŒããããã®æ°ã«çãããªããŸãã ãã¹ã¯ã§ã¯ãæäžäœãŒããããã®æ°ã¯16ã§ããããã¯ããã¹ã¯ãããããã«ã¯ãŒãããããã®16ãããã ãã·ãããããããšãæå³ããŸãã ãã®åŸãToSå€ãäž5æ¡ã«è¡šç€ºãããŸãã
- çµæã®å€ã«0xffãã¹ã¯ãé©çšããŸãã ãã®å Žåãäœãå€æŽãããŸããã ä»ã®å Žåãããã¯ãã€ããŒãé€ããã¹ãŠã®ãªã¯ãããããªã»ããããŸãã
- æåŸã«ãã¿ãŒã²ããããŒãã«ã®ã»ã«æ°ã256æªæºã®å Žåãçµæã«æ°å€kã«çããããããã¹ã¯ãéããããŸãã kã®å€ã¯ã移è¡å
ã®ããã·ã¥ããŒãã«ã®ã»ã«ããã1ã€å°ãããªããŸãã ã¿ãŒã²ããããŒãã«ã«ã¯32åã®ã»ã«ããããŸããã€ãŸããkã®å€ã¯31ã«ãªããŸãããã®ãã¹ã¯ãé©çšãããšãçµæã¯ã»ã«ã®æ°ä»¥äžã«ãªãããšãä¿èšŒãããŸãã
æ®å¿µãªããããã®å Žåãtcã¯ãªãã»ããã®æžã蟌ã¿ãåçŽåããæ段ãæäŸããªãããããhashkey ip tosãã®ãããªãã®ãæžã蟌ãããšã¯ã§ããŸããã ãã1ã€ã®é£ç¹ã¯ããã£ã«ã¿ãŒãé
眮ããååããã¯ã¹ã決å®ããããšã§ãã æ¹æ³ã¯1ã€ãããããŸãã-æåã§ããã·ã¥ãèªã¿åãæ¹æ³ïŒtcã«ã¯ããsampleããã©ã¡ãŒã¿ãŒããããç®çã®ã»ã«ã«ãã£ã«ã¿ãŒãé
眮ããããã«ããã·ã¥ãèªåçã«èšç®ã§ããŸãããããã·ã¥ã¢ã«ãŽãªãºã ã¯ã«ãŒãã«2.4ããã³ãã以éã®ã«ãŒãã«ã«ã¯ãŸã é©ããŠããŸããïŒ
ãªãã»ãã
ããããŒã®é·ããåºå®ãããŠããã°ããã¹ãŠãåçŽã«ãªããŸãã ããããæ®å¿µãªãããããã¯ããã§ã¯ãããŸãã-ããããŒã«ã¯è¿œå ã®ãªãã·ã§ã³èŠçŽ ãããã次ã®ã¬ãã«ã®ããããŒã®ãã£ãŒã«ããæ¯èŒããããšãéåžžã«é£ãããªããŸãã 幞ããªããšã«ãU32ã¯ãããæäŸããŸãã ãã®é¢æ°ã¯ãããããŒãªãã»ããããšåŒã°ããããã±ãŒãžèªäœãã次ã®ããããŒã®ãªãã»ãããèŠã€ããããã«èšèšãããŠããŸãã
ããããæåã«ãU32ãã£ã«ã¿ãŒã®2ã€ã®æ°ããæŠå¿µãç解ããŸããããå®æ°ãªãã»ããïŒç°¡æœã«ããããã«ãpermoffããšæå®ããŸãïŒãšäžæçãªå€äœïŒãtempoffããšæå®ããŸãïŒã§ãã permoffå€ã¯ããlinkããã©ã¡ãŒã¿ãŒã䜿çšããŠè¡ããã次ã®é·ç§»ããã³ãã以éã®é·ç§»äžã«ãã¹ãŠã®ãªãã»ããã«åžžã«è¿œå ãããæ°ããpermoffããã³tempoffå€ã®èšç®ã«äœ¿çšãããŸãã ããŒã¯ãŒããnexthdr +ãããã©ã¡ãŒã¿ãŒã§äœ¿çšããããã以äžã®ç§»è¡ã®åœ±é¿ãåããªãå Žåãtempoffå€ã¯æ¬¡ã®ç§»è¡äžã«ã®ã¿æå®ããããªãã»ããã«è¿œå ãããŸãã åã®ãªã¹ãã«æ»ããšãå€ã¯ããŒã«ããã¯ãããŸãã
å°ããªä»®èª¬çãªäŸãèããŠã¿ãŸãããã ãªã¹ã1ïŒ0ãå®è¡ãããšãã«permoffããŒãã«ãããšãäžèŽãæåããŸãã ãªã¹ã2ã®å®è¡ã«é²ããšãæ°ããpermoffå€ã¯20ã«çãããªããŸãã ãã®å Žåãå€20ã¯ã2ïŒ5ãªã¹ãã®ãã£ã«ã¿ãŒã«ç€ºãããŠãããã¹ãŠã®ãªãã»ããã«è¿œå ãããŸã2ïŒ2ïŒ5ãªã¹ãã§ã3ïŒ12ãªã¹ããžã®é·ç§»ãšã®å¥ã®äžèŽããããå®æ°ãªãã»ããã8ã«å€æŽããããšãæ°ãããããŠãpermoffå€ã¯28ã«ãªããŸãããªã¹ã3:12ãå®è¡ãããšãå€28ã¯ãã¹ãŠã®ãªãã»ããã«æ¢ã«è¿œå ãããŸãããªã¹ã3:12ã«æåããæ¯èŒããªãå ŽåãU32ã¯ãªã¹ã2ïŒ5ã«æ»ããpermoffã¯åã³20ã«ãªããŸãããããŠæåããæ¯èŒã¯ãããŸããããããŠãªã¹ã1ã«æ»ããŸãïŒ0ãããããpermoffã¯åã³çãããªããŸã ãã«ãŒãã å®éããŒãããŒã¯ãåçŽã«ã·ããããããã«å¯ŸããŠãªãã»ãããããã«ç€ºããŸãã permoffãštempoffã®å€ã¯ãæåã¯ãŒãã§ãã
RFCãèŠãŠãIPv4ããããŒåœ¢åŒãèŠãŠãã ããã 幞ããªããšã«ããã®ãã£ãŒã«ãã«ã¯ç¹å¥ãªãã£ãŒã«ããããããã®å€ã¯ããã«ã¯ãŒãã§ã®ã¿ã€ãã«ã®é·ããšåãã§ãã ãããŠããã®ããã«ãã®æ
å ±ã䜿çšã§ããŸãã 次ã®ã¬ãã«ã®ããããŒã®äœçœ®ãèšç®ããŸãã
ããã¯æ¬¡ã®ããã«è¡ãããŸãã
tc filter add \ dev eth0 \ parent 1: \ pref 10 \ protocol ip \ u32 \ match ip src 192.168.1.0/24 \ match protocol 0x01 0xff \ link 1: \ offset at 0 mask 0x0f00 shift 6 plus 0 eat
æåŸã®è¡ãšäœãèµ·ãããã詳ããèããŠã¿ãŸãããïŒ
- offset-ãããã³ã°ãæåãããšãã«permoffãŸãã¯tempoffã®å€ãå€æŽããŠããããšã瀺ããŸãã
- ãatããã©ã¡ãŒã¿ã§æå®ããããªãã»ããã§åäžã®åèªãååŸãããŸãã ç§ãã¡ã®å Žåãããã¯ãŒãã§ããããããã±ããã®æåã®16ããããååŸãããŸãã ãatããã©ã¡ãŒã¿ã®å€ã¯2ã®åæ°ã«æžå°ããŸãã
- ããããã¹ã¯ã¯ããã±ããããåä¿¡ããå€ã«éç³ãããŸãã ããã¯ãIPv4ããããŒé·ãã£ãŒã«ãã®äœçœ®ã«å¯Ÿå¿ãã0x0f00ã«çãããªããŸãã ãã®ãã£ãŒã«ãã«å€5ïŒãã€ããªè¡šçŸ0101ïŒããããšããŸãã ãã€ããªåœ¢åŒã§ã¯ã以åã®æäœã®çµæã¯ã0000.0101.0000.0000ãã«çãããªããŸãã
- IPããããŒé·ãã£ãŒã«ãã®å€ã¯ãããã«ã¯ãŒãã§è¡šããããããŒã®é·ããšçããããšãããã£ãŠããŸãã ãã®ãããååŸããå€ãäœããã®æ¹æ³ã§ãã€ãã«å€æããå¿
èŠããããŸãã ãã®çµæãå¿
èŠãªããããããã«ãªãã»ããããããããåé¡ã¯è€éã§ãã äžäœãªã¯ãããã«è¡šç€ºãããããã«å€ãã·ããããŸããäžäœãããã«8ãããã·ããããã0000.0000.0000.0101ããååŸããŸãã èŠåºãã®ãµã€ãºã¯ããã«ã¯ãŒãã§ç€ºãããŠãããããããã§4ãæããŸãã ä¹ç®ã¯ãäžäœãããã®æ¹åã«2ãããã·ããããããšã§çœ®ãæããããŸãã ã·ããåŸãã0000.0000.0001.0100ããåŸãããŸãã é©åãªå€ãååŸããŸããã äž¡æ¹ã®ã·ããæäœã1ã€ã«çµåããŸãã ãã®çµæãããããŒã®é·ãããã€ãåäœã§ååŸããã«ã¯ããã¹ã¯ãããåæå€ãæäžäœãããã®æ¹åã«6ãããã·ããããå¿
èŠããããŸãã ããã¯ããshiftããã©ã¡ãŒã¿ãŒã䜿çšããŠè¡ãããŸãã ãã¹ãŠã®æäœã®åŸãå€ã¯20ã«ãªããŸããã
- plusãã©ã¡ãŒã¿ãŒã®å€ã¯ãååŸããå€ã«è¿œå ãããŸãã ç§ãã¡ã®å Žåãããã¯0ãªã®ã§ãäœãè¿œå ãããŸããã ãã®ãã©ã¡ãŒã¿ãŒãæå®ããããšããã§ããŸããã§ããã
- eatãã©ã¡ãŒã¿ãŒã¯ãèšç®ãããå€ãpermoffå€ã«è¿œå ãããããšã瀺ããŠããŸãã ãã以å€ã®å Žåãtempoffå€ãèšç®ãããŸãã
- ãã®çµæã1ïŒ0ãªã¹ããããã£ã«ã¿ãŒããã§ãã¯ãããšãããŒããªãã»ããã¯æ¬¡ã®ããããŒã®å
é ã«å¯Ÿå¿ããäžèŽããICMPããããŒãã£ãŒã«ãã«åºã¥ããŠãã£ã«ã¿ãŒãæ§ç¯ã§ããŸããããšãã°ãã¡ãã»ãŒãžã¿ã€ãå€ããã§ãã¯ããŸãã tempoffå€ãå€æŽããå Žåã¯ããnexthdr +ãããŒã¯ãŒãã䜿çšããŠãªãã»ãããæå®ããçä¿¡ãªã¹ãã§æ瀺çã«æå®ããå¿
èŠããããŸãã
ãã®åŸãICMPã¡ãã»ãŒãžã¿ã€ãã1ïŒ0ãªã¹ãã«äžèŽãããã£ã«ã¿ãŒãè¿œå ã§ããŸãã ããšãã°ãã¿ã€ãEcho-Requestã®ICMPãã±ããã¯ã¯ã©ã¹1ã«éä¿¡ãããŸãã8ã
~$tc f add \ dev eth0 \ parent 1: \ pref 10 \ protocol ip \ handle 1::1 \ u32 \ ht 1: \ match u8 0x08 0xff \ classid 1:8
ããã ãã§ãããªãªãžãã«ã«ã¯ãããã«è©³ããæ
å ±ããããŸã-ãã©ã€ã¬ã€ããšæ¯èŒã®ãªã¹ãïŒåãæ§æã®ç ç³ïŒããªãªãžãã«-u32ãã£ã«ã¿ãŒã-æ®å¿µãªãããèè
ã¯ç§ã«ã¯ç¥ãããŠããªããããã¹ãŠãã©ãã»ã«ã»ã¹ãã¥ã¯ãŒããæããŠããã