1.1-ä»®æ³ã©ãã®äœæïŒäœæ¥å Žæã確ä¿ãããããã³ã³ãã¥ãŒã¿ãŒã§ä»®æ³ãããã¯ãŒã¯ãäœæããæ¹æ³ã瀺ããŸãããããã¯ãŒã¯ã¯3ã€ã®Linux ubuntuãã·ã³ã§æ§æãããŸãïŒã
1.2 -Linuxã§ã®ç°¡åãªã¢ãžã¥ãŒã«ã®äœæã Netfilterã®æŠèŠãšããã䜿çšãããã©ãã£ãã¯ã®ååã ãã¹ãŠããŸãšããŠãã¹ãããŸãã
1.3- åçŽãªcharããã€ã¹ã®äœæã ä»®æ³ãã¡ã€ã«ã·ã¹ãã ã®è¿œå -sysfsã ãŠãŒã¶ãŒã€ã³ã¿ãŒãã§ã€ã¹ãèšè¿°ããŸãã ãã¹ãŠããŸãšããŠãã¹ãããŸãã
2çªç®ã®éšåã®å 容ïŒ
é衚瀺ã®ããã¹ã
2.1-2çªç®ã®ããŒãã®çŽ¹ä»ã ãããã¯ãŒã¯ãšãããã³ã«ã調ã¹ãŸãã Wireshark
2.2-ãã¡ã€ã¢ãŠã©ãŒã«ããŒãã«ã ãã©ã³ã¹ããŒãå±€ æ§é TCPãUDPã ãã¡ã€ã¢ãŠã©ãŒã«ãæ¡åŒµããŸãã
2.3-æ©èœãæ¡åŒµããŸãã ãŠãŒã¶ãŒç©ºéã§ããŒã¿ãåŠçããŸãã libnetfilter_queueã
2.4 -ïŒ*ãªãã·ã§ã³ïŒå®éã®ãããã¡ãªãŒããŒãããŒæ»æã調æ»ãããã¡ã€ã¢ãŠã©ãŒã«ã®å©ããåããŠãããé²ããŸãã
2.2-ãã¡ã€ã¢ãŠã©ãŒã«ããŒãã«ã ãã©ã³ã¹ããŒãå±€ æ§é TCPãUDPã ãã¡ã€ã¢ãŠã©ãŒã«ãæ¡åŒµããŸãã
2.3-æ©èœãæ¡åŒµããŸãã ãŠãŒã¶ãŒç©ºéã§ããŒã¿ãåŠçããŸãã libnetfilter_queueã
2.4 -ïŒ*ãªãã·ã§ã³ïŒå®éã®ãããã¡ãªãŒããŒãããŒæ»æã調æ»ãããã¡ã€ã¢ãŠã©ãŒã«ã®å©ããåããŠãããé²ããŸãã
ãªãã¬ãŒãã£ã³ã°ã·ã¹ãã ã®éåžžã«ç°¡åãªçŽ¹ä»
äžè¬çãªãªãã¬ãŒãã£ã³ã°ã·ã¹ãã ãç¹ã«Linuxã·ã¹ãã ã®åºæ¬ã«ç²ŸéããŠããªã人ã®ããã«ãå ã«é²ãããã«éåžžã«ç°¡åãªåºæ¬æŠå¿µãå¿ èŠã§ãã Linuxã§ã¯ãä»ã®å€ãã®ãªãã¬ãŒãã£ã³ã°ã·ã¹ãã ãšåæ§ã«ã ã«ãŒãã«ã¹ããŒã¹ãšãŠãŒã¶ãŒã¹ããŒã¹ã® 2ã€ã®ã¢ãã¬ã¹ã¹ããŒã¹ããããŸã ã ã«ãŒãã«ã¹ããŒã¹ -ãªãã¬ãŒãã£ã³ã°ã·ã¹ãã ã¯ããã§åäœããäž»ã«ããã°ã©ã éã®ã³ã³ãã¥ãŒã¿ãŒãªãœãŒã¹ã®åæ£ïŒããšãã°ãçŸåšããã»ããµã§å®è¡ãããŠããããã°ã©ã ïŒã¹ã±ãžã¥ãŒãªã³ã°ïŒãããŒããŒãããã®åºåã®éä¿¡ããããã¯ãŒã¯ã«ãŒãããã®ãã±ããã®åŠçãIOæäœãªã©ïŒãã®ä»ïŒã OSã¯ãããŒããŠã§ã¢ïŒããŠã¹ãã¢ãã¿ãŒãããªã³ã¿ãŒãªã©ïŒãšéåžžã«å¯æ¥ãªé¢ä¿ã«ãããŸãã 圌女ã®ä»äºã¯éåžžã«éèŠã§ããããã ãŠãŒã¶ãŒã¹ããŒã¹ã«é¢é£ä»ããããŠããªãã¡ã¢ãªå ã®å¥ã®éšåãå²ãåœãŠãããŸããããã¯ããšãã£ã¿ãŒãé»åããã©ãŠã¶ãŒãªã©ãã»ãšãã©ã®ãŠãŒã¶ãŒããã°ã©ã ãæ©èœããå Žæã§ãã Linuxã§ã¯ãOSã«æ°ããæ©èœãå€æŽãŸãã¯è¿œå ããæ¹æ³ãããã€ããããŸãã ãããã®1ã€ã¯ãã«ãŒãã«ãœãŒã¹ãå€æŽããå床ã³ã³ãã€ã«ããããšã§ãã ãããããã®æ¹æ³ã¯ãç¹ã«æ©èœãæå°éãŸãã¯åçã«æ¡åŒµããå¿ èŠãããå Žåãé·ãå°é£ã§ãã ãããã£ãŠãå¥ã®æ¹æ³ããããŸã-ã¢ãžã¥ãŒã«ã ã¢ãžã¥ãŒã«-倧ãŸãã«èšãã°-ããã¯ã«ãŒãã«ã¹ããŒã¹ã«åçãã€è¿ éã«è¿œå ã§ããããã°ã©ã ã§ãããã®åŸãã¢ãžã¥ãŒã«ã¯ãªãã¬ãŒãã£ã³ã°ã·ã¹ãã ã®äžéšãšãªããéåžžã®ããã°ã©ã ãããå€ãã®æ©èœãšãªãœãŒã¹ãžã®ã¢ã¯ã»ã¹ãç²åŸããŸãã
ãã®ããŒãã«é¢ããèšäºã¯æ°å€ããããŸããããšãã°ã ããã¯éåžžã«åªããŠããŸãã èªåã®çŽæãäŒããããšãã§ããããšãé¡ã£ãŠããŸãã
Linuxã§ç°¡åãªã¢ãžã¥ãŒã«ãäœæããŸãã ç·Žç¿ãã
ãŸããããããç°¡åãªã¢ãžã¥ãŒã«ã®äŸãç°¡åã«æ€èšããŸãã次ã«ãNetfilterãäœã§ããã1ã€ã®ãœãŒã¹ã³ãŒãã§ãã¹ãŠã®äºææ§ãããããæ€èšããŸãã 以äžã§ã¯ãèšäºã®æåŸã«ããã¹ãŠã®ãœãŒã¹ããã¹ããžã®ãªã³ã¯ããããŸãã ãªã©ïŒ
ããã¯éåžžã«åçŽãªã¢ãžã¥ãŒã«ã®ãœãŒã¹ã³ãŒãã§ãã ããã€ãã®ããšïŒ
1 -Geanyãšãã£ã¿ãŒã§äœæ¥ããŸãããã®å ŽåãEclpiseã®ãããªãã®ã¯æ©èœããŸããã ç§ã¯ç«¯æ«ãä»ããŠã³ã³ãã€ã«ããŸãããGeanyãä»ããŠå¯èœã§ãã
2-ã«ãŒãã«ã«ã¯printfã¯ãããŸãããã察å¿ããprintkããããåãããã«æ©èœããŸãã ãšããã§ãã«ãŒãã«ã«ã¯å¿ èŠãªãã¹ãŠã®ã©ã€ãã©ãªãšé¢æ°ã®é¡äŒŒç©ããããŸãïŒstdlibã®ãããªæšæºã©ã€ãã©ãªã¯ãããŸããïŒã
3 -printkãã³ã³ãœãŒã«ã«ã¯æžã蟌ã¿ãŸããããdmesgã³ãã³ãã䜿çšããŠå 容ãèªã¿åãããšãã§ããç¹å¥ãªãã¡ã€ã«ã«æžã蟌ã¿ãŸãã ç§ãã¡ãšäžç·ã«ããããããã°ã©ã ããããã°ããäž»ãªæ¹æ³ã«ãªããŸãïŒããšãã°ãXã€ã³ã¿ãŒãã§ã€ã¹Ctrl + Shift + F1ãªãã§ã³ã³ãœãŒã«ã«ã¢ã¯ã»ã¹ããå Žåãprintkã®åäœã確èªããä»ã®æ¹æ³ããããŸãïŒã ãŸãããã®ãã¡ã€ã«ã«èç©ããããã¹ãŠãã¯ãªã¢ããã®ã«äŸ¿å©ãªdmesg âcã§ãã
4 - MODULE_LICENSEãMODULE_AUTHORãMODULE_DESCRIPTION-ãããã¯ãç¹æ®ãªã³ãã³ãã䜿çšããŠååŸã§ããã¢ãžã¥ãŒã«ã«é¢ããlinuxæ å ±ããäžããããã¯ãã§ãïŒè©³çŽ°ã«ã€ããŠã¯ãªã³ã¯ãåç §ããŠãã ããïŒã
5-ã«ãŒãã«ã¯C89ã®æ§æã䜿çšããŠCã§èšè¿°ããŸããããšãã°ïŒãããŠæãéèŠãªïŒ-éåžžã®C99ãšã¯ç°ãªãããã¹ãŠã®å€æ°ã¯é¢æ°ã®æåã§å®£èšããå¿ èŠããããä»ã®éšåã§ã¯å®£èšã§ããŸããã ãã®èŠåã«åŸããªãå Žåãã³ãŒãã¯ã³ã³ãã€ã«ãããŸãããèŠåã衚瀺ãããŸãïŒããã¯æªãããšã§ãããç§ãã¡ã«ãšã£ãŠã¯äžé©åã§ãïŒã
ã¢ãžã¥ãŒã«ã®ã³ã³ãã€ã«
Makefileã«æ³šæããŠãã ããïŒåçã®äžïŒã ãŠãŒã¶ãŒç©ºéã®éåžžã®ããã°ã©ã ãšã¯ç°ãªããŸãã ããã¯ãããã»ã¹å šäœã®å€èŠ³ã§ãã
ã¢ãžã¥ãŒã«ã¯ç¹å¥ãªã³ãã³ããinsmod ./module_name.koãã§ããŒãããã module_initãã¯ããå®è¡ãããŸãã ã¢ãžã¥ãŒã«ã¯ãã³ãã³ããrmmod module_nameãã䜿çšããŠã³ã³ãã¥ãŒã¿ãŒã®ã¡ã¢ãªããåé€ãããŸãã
確èªããŸãã ã¢ãžã¥ãŒã«ãããŒãããŠãããã¢ã³ããŒãããŠdmesgãèŠãŠãã ãã
ã§ãã ããã§ã¢ãžã¥ãŒã«ã®çŽ¹ä»ã¯å®äºã§ãã
Netfilterã®çŽ¹ä»ã çè«
Netfilterã¯ãLinuxã«ãŒãã«ã«çµã¿èŸŒãŸãããã¬ãŒã ã¯ãŒã¯ã§ãããããŸããŸãªãããã¯ãŒã¯æäœãå®è¡ã§ããŸãã çä¿¡ããã³çºä¿¡ãã©ãã£ãã¯ãååããããšã«èå³ããããŸãã
ã¡ãªã¿ã«ããã®ãã¬ãŒã ã¯ãŒã¯ã«æãé »ç¹ã«é¢é£ä»ããããŠããããã°ã©ã ã¯iptablesã§ã ãããã«ãããLinuxã«çµã¿èŸŒãŸããŠãããã©ãã£ãã¯ãã£ã«ã¿ãªã³ã°ã«ãŒã«ïŒã€ãŸããåãªããã¡ã€ã¢ãŠã©ãŒã«ã«ãããŸããïŒãåçã«èšå®ã§ããŸãã ãã·ã¢èªçã®ãŠã£ãããã£ã¢ã§ã¯ã2ã€ã®çšèªãã»ãšãã©åºå¥ããŠããŸããã§ããããããã¯æ£ãããªããšæãã®ã§ãè±èªçãžã®ãªã³ã¯ãæäŸããŸãã ãŠã£ãããã£ã¢-Netfilter
å ¬åŒãŠã§ããµã€ãã§ã ãã¹ãŠã®å¿ èŠãªæ å ±ããããŸãã www.netfilter.org
ãã©ãã£ãã¯ãããã¯ããããã®ã¢ãŒããã¯ãã£ã çè«
Netfilterã§ãã©ãã£ãã¯ãããã¯ããã¢ãŒããã¯ãã£ã¯æ¬¡ã®ãšããã§ãã
åç
ãã®å³ã¯ããã±ãããphyãããã¯ãŒã¯ã«ãŒãã«ãããããåŸã«ééãã段éã瀺ããŠããŸãã ããèŠãŠã¿ãŸãããïŒ
äºåã«ãŒãã£ã³ã° -å€éšããããã€ã¹ã®ãããã¯ãŒã¯ã«ãŒãã«å°çãããã¹ãŠã®ãã±ããïŒããšãã°ããããã¯ãŒã¯ã®èª°ããç§ãã¡ã«ã¡ãŒã«ãéä¿¡ããããšããŠãããããã±ããã®ã«ãŒãäžã«ããã転éããå¿ èŠãããïŒã
転é -åä¿¡ãããã±ãããç¹å®ã®IPã¢ãã¬ã¹ã«åããããŠããªãå Žåããªãã¬ãŒãã£ã³ã°ã·ã¹ãã ã¯ãããããã«è»¢éããŸãïŒåã®éšåãã転éãæå¹ã«ããŸããïŒïŒããŸãã¯äžèŠãšå€æããå Žåã¯ç Žæ£ããŸãã
å ¥å -ä»»æã®ã¢ããªã±ãŒã·ã§ã³åãã®ãã¹ãŠã®ããã±ãŒãžãããã«å±ããŸãã ããšãã°ãããŒãžããªã¯ãšã¹ãããåŸããã©ãŠã¶çšã®ããã±ãŒãžã«ãªãå ŽåããããŸãã
åºå -ããã§ã¯ãã³ã³ãã¥ãŒã¿ãŒã¢ããªã±ãŒã·ã§ã³ããããã¯ãŒã¯ã«éä¿¡ãããã¹ãŠã®ãã±ããã衚瀺ãããŸãïŒã€ãŸãã転éãè¡ããã±ããã§ã¯ãããŸããïŒã ããšãã°ãã€ã³ã¿ãŒãããããããŒãžãååŸããããã®ãŸã£ããåããã©ãŠã¶èŠæ±ã ãŸãã¯pingã
ãã¹ãã«ãŒãã£ã³ã°-ãã¹ãŠã®çºä¿¡ãã±ãããçµåããŸãã
æ°åŠçã«ïŒ
å ¥åããŒã¿=äºåã«ãŒãã£ã³ã°=転é+å ¥å
åºåããŒã¿=ãã¹ãã«ãŒãã£ã³ã°=åºå+ãã©ã¯ãŒã
ãã¡ãããéåžžã¯inputïŒ= Outputã§ã ïŒäœããã®çç±ã§ç解ã§ããªãå Žåã¯ããããã¯ãããäžåºŠèªã¿çŽãããã€ã³ã¿ãŒãããã§ããã«ç¢ºèªããå¿ èŠããããŸãïŒã
ããšãã°ããã©ãŠã¶ã®è¡ã«www.site.comãšå ¥åãããš ãããã±ãŒãžã¯ãããã¯ãŒã¯ã«å°éããåã«2ã€ã®ãã¹ãããããééããŸãïŒ åºåãšãã¹ãã«ãŒãã£ã³ã° ïŒ ã
site.comãç§ãã¡ã«çãããšãããã±ãŒãžã¯ãã©ãŠã¶ãŒã«å°éããåã«2ã€ã®ãã¹ããŒã·ã§ã³ããééããŸãã å ¥åããŒã¿ãšäºåã«ãŒãã£ã³ã°ã§ãã
ããšãã°ãhost1-> host2ããã®ãã®ä»ã®ãã±ããã¯ã å ¥åã転éãåºåãééããŸãã
åãåæ¢ãã§ãããã£ããããããã±ãããã«ã€ããŠæ±ºå®ãäžãããšãã§ããŸã-ãããããã«ã¹ãããããããã©ããïŒãŸãã¯ä»ã®äœãïŒã
ãã©ãã£ãã¯ãããã¯ããããã®ã¢ãŒããã¯ãã£ã ç·Žç¿ãã
楜ãã¿ã®ããã«ãFW_devã³ã³ãã¥ãŒã¿ãŒïŒãã¡ã€ã¢ãŠã©ãŒã«ãã€ã³ã¹ããŒã«ããã³ã³ãã¥ãŒã¿ãŒïŒçšã«èšèšããããã¹ãŠã®ãã±ããããŸãã¯FW_devã代ããã«ä»ã®ã³ã³ãã¥ãŒã¿ãŒã«éä¿¡ãããã¹ãŠã®ãã±ãããèš±å¯ããŸãïŒåãå ¥ããŸãïŒã ä»ã®ãã¹ãŠã®ãã©ãã£ãã¯ã¯éããŸãïŒæåŠïŒã æçµçãªç®æšã¯ãééãããã±ããæ°ãçŠæ¢ããããã±ããæ°ãèšç®ãããŠãŒã¶ãŒã«ïŒãŠãŒã¶ãŒç©ºéã§ïŒããŒã¿ã転éããããšã§ãã
ãããè¡ãã«ã¯ãã¢ãžã¥ãŒã«ã®æåã§ãããã€ãã®ã°ããŒãã«å€æ°ãå®çŸ©ããŸãã
static unsigned int accepted_num = 0; static unsigned int dropped_num = 0;
次ã«ãããã¯é¢æ°ãç®çã®ãã©ãã£ãã¯ååãã€ã³ãã«èšå®ããŸãã æåã«ãé¢æ°èªäœãäœæããŸãã ãã¹ãŠã®é¢æ°ã«ã¯ãäºåå®çŸ©ãããã¿ã€ããå¿ èŠã§ãã
unsigned int hook_func(unsigned int hooknum, struct sk_buff *skb, const struct net_device *in, const struct net_device *out, int (*okfn)(struct sk_buff *)) {}
æ©èœã³ãŒãïŒ
// hook out packets, accept packet unsigned int hook_func_out(unsigned int hooknum, struct sk_buff *skb, const struct net_device *in, const struct net_device *out, int (*okfn)(struct sk_buff *)) { accepted_num++; return NF_ACCEPT; } // hook in packets, accept packet unsigned int hook_func_in(unsigned int hooknum, struct sk_buff *skb, const struct net_device *in, const struct net_device *out, int (*okfn)(struct sk_buff *)) { accepted_num ++; return NF_ACCEPT; } // hook forward packets, drop packet unsigned int hook_func_forward(unsigned int hooknum, struct sk_buff *skb, const struct net_device *in, const struct net_device *out, int (*okfn)(struct sk_buff *)) { dropped_num++; return NF_DROP; }
次ã®ã¹ãããã¯ããããã·ã¹ãã ã«ç»é²ããããšã§ãããããã£ãŠãã¢ãžã¥ãŒã«ãããŒããããšãã«ãããè¡ãã®ãè«ççã§ãã 次ã®ããã«ãªããŸãã
// hook functions structs for registration usage static struct nf_hook_ops nfho_forward; static struct nf_hook_ops nfho_out; static struct nf_hook_ops nfho_in; static int __init fw_module_init(void) { ..... // netfilter functions printk("initialize kernel module\n"); nfho_in.hook = hook_func_in; nfho_in.hooknum = NF_INET_LOCAL_IN; nfho_in.pf = PF_INET; nfho_in.priority = NF_IP_PRI_FIRST; nf_register_hook(&nfho_in); // Register the hook nfho_out.hook = hook_func_out; nfho_out.hooknum = NF_INET_LOCAL_OUT; nfho_out.pf = PF_INET; nfho_out.priority = NF_IP_PRI_FIRST; nf_register_hook(&nfho_out); // Register the hook nfho_forward.hook = hook_func_forward; nfho_forward.hooknum = NF_INET_FORWARD; nfho_forward.pf = PF_INET; nfho_forward.priority = NF_IP_PRI_FIRST; nf_register_hook(&nfho_forward); // Register the hook ⊠}
ããã§hooknumãã£ãŒã«ãã«æ³šæãæã䟡å€ããããŸãã ãã®ãã£ãŒã«ãã«ã¯ããã±ãããã£ããã£ã®å Žæã決å®ããäžã®å³ãšäžèŽããå€ãå²ãåœãŠãŸãã æåŸã®ã¹ãããã¯ãOSããã¢ãžã¥ãŒã«ãåé€ããåã«ããããåé€ããããšã§ãïŒç»é²è§£é€ïŒã
static void __exit fw_module_exit(void) { ⊠// net filter functions nf_unregister_hook(&nfho_in); nf_unregister_hook(&nfho_out); nf_unregister_hook(&nfho_forward); // end netfilter functions ⊠}
äœæ¥ãæ€èšŒãããŠãŒã¶ãŒã€ã³ã¿ãŒãã§ã€ã¹ãè¿œå ããŠããã¹ãŠã®ãŠãŒã¶ãŒãã¢ãžã¥ãŒã«ããããŒã¿ãèªã¿åããããã«ããŸãã æåã«ç¢ºèªããŠãã ããã
æºæ±ºåã³ãŒã
#include <linux/module.h> #include <linux/netfilter_ipv4.h> #include "fw.h" MODULE_AUTHOR( AUTHOR); MODULE_DESCRIPTION( DESCRIPTION); MODULE_VERSION( VERSION); MODULE_LICENSE("GPL"); static unsigned int accepted_num; static unsigned int dropped_num; // hook functions static struct nf_hook_ops nfho_forward; static struct nf_hook_ops nfho_out; static struct nf_hook_ops nfho_in; // hook out packets unsigned int hook_func_out(unsigned int hooknum, struct sk_buff *skb, const struct net_device *in, const struct net_device *out, int (*okfn)(struct sk_buff *)) { printk("Get output packet, accept\n"); accepted_num++; return NF_ACCEPT; } // hook in packets unsigned int hook_func_in(unsigned int hooknum, struct sk_buff *skb, const struct net_device *in, const struct net_device *out, int (*okfn)(struct sk_buff *)) { printk("Get input packet, accept\n"); accepted_num++; return NF_ACCEPT; } // hook forward packets unsigned int hook_func_forward(unsigned int hooknum, struct sk_buff *skb, const struct net_device *in, const struct net_device *out, int (*okfn)(struct sk_buff *)) { printk("Get forward packet, drop\n"); dropped_num++; return NF_DROP; } static int __init fw_module_init(void) { printk("Starting FW module loading\n"); accepted_num = 0; dropped_num = 0; nfho_in.hook = hook_func_in; nfho_in.hooknum = NF_INET_LOCAL_IN; nfho_in.pf = PF_INET; nfho_in.priority = NF_IP_PRI_FIRST; nf_register_hook(&nfho_in); // Register the hook nfho_out.hook = hook_func_out; nfho_out.hooknum = NF_INET_LOCAL_OUT; nfho_out.pf = PF_INET; nfho_out.priority = NF_IP_PRI_FIRST; nf_register_hook(&nfho_out); // Register the hook nfho_forward.hook = hook_func_forward; nfho_forward.hooknum = NF_INET_FORWARD; nfho_forward.pf = PF_INET; nfho_forward.priority = NF_IP_PRI_FIRST; nf_register_hook(&nfho_forward); // Register the hook return 0; } static void __exit fw_module_exit(void) { printk("Removing FW module\n"); nf_unregister_hook(&nfho_in); nf_unregister_hook(&nfho_out); nf_unregister_hook(&nfho_forward); } module_init( fw_module_init); module_exit( fw_module_exit);
ã³ã³ãã€ã«ãã¢ãžã¥ãŒã«ã®ããŒã
host2ãã10.0.2.3ã« 1ã€ã®pingã¡ãã»ãŒãžãéä¿¡ããŸãïŒ 10.0.2.3ãå éšã€ã³ã¿ãŒãã§ã€ã¹ã§ãããããã¢ãžã¥ãŒã«ãã¹ãããããããšãæåŸ ããŸããã¡ãã»ãŒãžãhost1-10.0.1.1ã§ããå ŽåãèŠéããŸããïŒ
ããã°ããèŠãŠãã¢ãžã¥ãŒã«ãã¢ã³ããŒãããŸã
ã©ããã
8354-ã¢ãžã¥ãŒã«ãããŠã³ããŒãããŸããã
8356-çºä¿¡ãã±ãããèŠã€ãããŸããã ãã®æ®µéã§ã¯ããããäœã§ããããç¥ãããšã¯ã§ããŸããããã»ãšãã©ã®å Žåãæ§æããDHCPã€ã³ã¿ãŒãã§ã€ã¹ã®ããã±ãŒãžã®1ã€ã§ãã
8359ã§ãçä¿¡ãã±ãããçºèŠããŸãã-ããã¯pingã§ããã åãåã£ãåŸãããã«åçãéä¿¡ããŸããã
8359-pingãžã®çãã
8394-圌ãã¯ã¢ãžã¥ãŒã«ãã¢ã³ããŒãããŸããã
ãã®æ®µéã§ãã·ã¹ãã ãããã£ãŠã host1- > host2ããã®ãã©ãã£ãã¯ãééããªãããšã確èªã§ããŸãã
ããã§ãã¹ãŠã§ãããªã³ã¯ã®ãªã¹ãïŒ
» Linuxã«ãŒãã«ã¢ãžã¥ãŒã«ããã°ã©ãã³ã°ã¬ã€ã
» ç°¡åãªäŸã§ç¬èªã®Linuxã«ãŒãã«ã¢ãžã¥ãŒã«ãäœæããæ¹æ³
» Https://en.wikipedia.org/wiki/Netfilter
www.netfilter.org
» ãã¡ã€ã¢ãŠã©ãŒã«ãŸãã¯ãã±ãããã£ã«ã¿ãªã³ã° -ããã§åçãæ®ããŸãã:)