Ëæ×ÅÍøÂç¹æÄ£µÄÔö´ó¡¢¸´ÔÓÐÔµÄÔö³¤ºÍÒì¹¹ÐԵļÓÇ¿£¬´«Í³µÄIPÍøÂçÖÎÀíºÍ̸SNMP£¨Simple Network Management Protocol£¬µ¥Ò»ÍøÂçÖÎÀíºÍ̸£©¶Ôµ±Ç°¸´ÔÓÍøÂçµÄÖÎÀí±äµÃÔ½À´Ô½ÄÑÌ⣬ÓÈÆäÎÞ·¨Âú×ãÅäÖÃÖÎÀíÒÔ¼°´óÐÍÍøÂçµÄÀûÓÃϵͳ¿ª·¢·½ÃæµÄÐèÒª¡£ÎªÁËÌí²¹SNMPµÄ²»¼°£¬IETF×éÖ¯Ôì¶©»ùÓÚXML£¨Extensible Markup Language£¬¿ÉÀ©´óÏóÕ÷˵»°£©µÄÍøÂçÖÎÀíÅäÖúÍ̸¡ª¡ªNETCONF£¨Network Configuration Protocol£¬ÍøÂçÅäÖúÍ̸£©¡£ËüÌṩÁËÒ»Öֿɱà³ÌµÄ¡¢¶ÔÍøÂçÉ豸½øÐÐÅäÖúÍÖÎÀíµÄ²½Öè¡£¸ÃºÍ̸ʹÓÃXMLÌåʽµÄ±¨ÎÄÉèÖòÎÊý¡¢»ñÈ¡²ÎÊýÖµ¡¢»ñȡͳ¼ÆÐÅÏ¢µÈ£¬ÓµÓÐÓÅÁ¼µÄÀ©´óÐÔ£¬Ê¹ÍøÂçÉ豸µÄÅäÖÃÖÎÀí¹¤×÷±äµÃ¸üµ¥Ò»¸ü¸ßЧ¡£
NETCONFµÄͨѶģʽѡȡC/Sģʽ£¬É豸ÉÏÔËÐкÍ̸µÄ·þÎñÆ÷·¨Ê½£¬Óû§ÔËÐкÍ̸µÄ¿Í»§¶Ë·¨Ê½¡£ºÍ̸±¨ÎÄÌåʽΪXMLÌåʽ£¬Ô̺¬ËùÓÐÅäÖÃÊý¾ÝºÍºÍ̸ÐÂΞùΪXMLÌåʽ¡£ÓëISO/OSI·Ö²ãÀàËÆ£¬NETCONFºÍ̸ÓÉÏÂÖÁÉÏ·ÖΪËIJ㣺´«Êä²ã¡¢RPC²ã¡¢²Ù×÷²ã¡¢ÄÚÈݲ㡣Èçͼ1-1Ëùʾ¡£
ͼ1-1 NETCONFµÄºÍ̸½á¹¹Í¼

´«Êä²ãΪNETCONFºÍ̸Ìṩ°²È«´«Êäͨ·£¬Ê¹ÓÃSSH¡¢SOAPºÍBEEPµÈ°²È«ºÍ̸£¬µ±Ç°Í¨³£Ê¹ÓÃSSHºÍ̸¡£
RPC²ãÌṩÁËÒ»¸öµ¥Ò»µÄ¡¢Óë´«ÊäºÍ̸Î޹صĻúÔ죬Ô̺¬Ò»Ð©ÃýÎó·´À¡ÐÂÎÅÔªËØµÄ»®¶¨¡£RPC²ã½ç˵ÁËÈýÖÖÐÂÎÅÀàÐÍ£º
l Hello£ºÔÚNETCONF¿Í»§¶ËÓë·þÎñÆ÷¸Õ³ÉÁ¢»á»°Ê±ÊµÏÖÄÜÁ¦¼¯»¥»»¡£
l RPCºÍRPC-Reply£ºRPCÊÇNETCONF¿Í»§¶ËÌáÒéµÄ·¢Ë͸ø·þÎñÆ÷µÄÒªÇóÐÂÎÅ£»RPC-ReplyÊÇNETCONF·þÎñÆ÷ÏìÓ¦¿Í»§¶ËµÄÏìÓ¦Êý¾Ý£¬²»ÄÜ×Ô¶¯ÌáÒ飬½öÄÜÔÚÊÕµ½RPCÖ®ºó»Ø¸´£¬ÇÒ±ØÐëЯ´øÓëÊÕµ½µÄRPCÒ»ÑùµÄmessage-id¡£
l Notification£ºÒÔ¶©ÔÄ·½Ê½½øÐÐÐÂÎÅ֪ͨ¡£
RPCÖÐÀûÓõĸù»ùÔÓï²Ù×÷¼¯£¬½ç˵ÁË9ÖÖ»ù´¡µÄ²Ù×÷²½Öè¡£
l »ñÈ¡Êý¾Ý²Ù×÷£ºget¡¢get-config¡£
l ÅäÖòÙ×÷£ºedit-config¡¢copy-config¡¢delete-config¡£
l ¶ÔÉ豸ÁÙ½ç×ÊÔ´£¨ÅäÖÃÎļþµÈ£©²¢·¢²Ù×÷ʱµÄËø±£»¤£ºlock¡¢unlock¡£
l ʵÏֻỰ²Ù×÷£ºclose-session¡¢kill-session¡£
ÄÚÈݲãÊDZ»ÖÎÀíµÄÊý¾Ý¶ÔÏó¼¯ÖС£ÄÚÈݲãÊÇNETCONFºÍ̸ĿǰΨһûÓб»³ß¶È»¯¡¢Ã»ÓÐͳһÊý¾ÝÄ£Ð͵IJ㡣
×¢Ã÷
GA»Æ½ð¼×²úƷʹÓÃYANG¶ÔÊý¾Ý½¨Ä££¬Ê¹ÓÃXML´«ÊäÊý¾Ý¡£
ͼ1-2 NETCONF»á»°½»»¥±¨ÎÄʾÒâͼ

NETCONF»á»°µÄ½»»¥¹ýÈçͼ1-2Ëùʾ£¬Äܹ»·ÖΪÈý²¿ÃÅ¡£
(1) NETCONF´«Êä²ãÒÀÀµÓÚSSHºÍ̸¡£É豸ÉÏNETCONF·þÎñ¶ËÆô¶¯NETCONF¹ý³Ìºó£¬³ÉÁ¢Ò»¸ö¼àÌý¶Ë¿Ú¡£
(2) ·þÎñ¶Ë¼àÌý830¶Ë¿Ú£¬³ÉÁ¢SSHͨ·£º¾¹ýһϵÁеĴ«ÊäËã·¨ÐÉÌ£¨ÆäÖÐÔ̺¬ÃÜÔ¿ÐÉÌ¡¢Ñ¹ËõËã·¨¡¢¹þÏ£Ëã·¨¡¢¼ÓÃÜËã·¨¡¢ÊðÃûËã·¨µÈ£©ºÍÓû§ÈÏÖ¤ºó³ÉÁ¢SSHͨ·¡£
(3) NETCONF´«Êä²ãµÄÏνӻỰ³ÉÁ¢£¬NETCONF¿Í»§¶ËÄܹ»Í¨¹ýÕâ¸ö»á»°Í¬NETCONF·þÎñÆ÷½øÐн»»¥¡£
×¢Ã÷
ºÍ̸»®¶¨NETCONFĬÈϵÄSSH TCP¶Ë¿ÚÊÇ830£¬Äܹ»Æ¾¾ÝÏÖʵÇé¿ö×ÔÐÐÅäÖÃNETCONF SSH TCP¶Ë¿Ú¡£
NETCONF»á»°½¨Á¢ÏνÓÖ®ºó£¬Ë«·½µ±¼´Í¨¹ýÏ໥·¢ËÍHello±¨ÎÄÌṩ¸÷×ÔʵÏÖµÄÄÜÁ¦¼¯£¬¶Ô×Ô¼º²»Àí½âµÄ»òÕßûÓÐʵÏÖµÄÄÜÁ¦½øÐкöÂÔ¡£µ«ÊÇË«·½¶¼±ØÐëÖ§³ÖºÍ̸¸ù»ùÄÜÁ¦£¨urn:ietf:params:netconf:base:1.1£©¡£ÈôÊDZØÒª¼æÈݾɺÍ̸°æ±¾£¬Ë«·½»¹±ØÒªÖ§³Ö¾ÉºÍ̸¸ù»ùÄÜÁ¦£¨urn:ietf:params:netconf:base:1.0£©¡£×îÖÕ»ñµÃÒ»¸öÁ½¶ËʵÏÖÄÜÁ¦µÄ½»¼¯£¬ÒÔ½øÐкóÐøµÄÊý¾Ý²Ù×÷ÓëÖÎÀí¡£
°ÑÎÈ
¡ñ »¥»»µÄÄÜÁ¦Öµ³ýÁËÔÚNETCONF RFCÖнç˵µÄ¡°ÄÜÁ¦¡±±í£¬¿ª·¢ÈËÔ±Äܹ»Í¨¹ý×ñÑRFCÖÐÃèÊöµÄ¹æ·¶ÌåʽÔö³¤¶î±íµÄ¡°ÄÜÁ¦¡±¡£
¡ñ ¿Í»§¶Ë·¢¸ø·þÎñ¶ËµÄÄÜÁ¦½»»¥±¨ÎÄ£¬²»µÃ´øÓлỰID½Úµã£¨<session-id>£©¡£
l get£º»ñÈ¡É豸״̬»òÅäÖÃÊý¾Ý¡£
¿Í»§¶Ë·¢Ëͱ¨ÎÄÌåʽÈçÏ£º
<?xml version="1.0" encoding="utf-8"?>
<rpc message-id="xxx " xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
<get>
<filter type="subtree">
¡¡¡¡¡¡ ÅäÖÃÊý¾Ý£¨»òÕß״̬Êý¾Ý£©¹ýÂ˹涨
</filter>
</get>
</rpc>
·þÎñ¶ËÓ¦´ð±¨ÎÄÌåʽÈçÏ£º
<?xml version="1.0" encoding="utf-8"?>
<rpc-reply message-id="xxx " xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
<data xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
»ñÈ¡µ½µÄÅäÖÃÊý¾Ý£¨»òÕß״̬Êý¾Ý£©
</data>
</rpc-reply>
ÈôÊÇÉ豸ÉÏ״̬Êý¾ÝµÄËùÓÐ×Ó¼¯¶¼ÎÞ·¨Æ¥Åä¹ýÂ˹涨£¬Ôò»áÓ¦´ð¿ÕµÄdata½Úµã£¬ÈçÏ£º
<?xml version="1.0" encoding="utf-8"?>
<rpc-reply message-id="ÐÂÎÅID " xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
<data xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"/>
</rpc-reply>
l get-config£ºÆ¾¾Ý²Ù×÷ÄÚÈݵĹýÂ˽ڵã»ñÈ¡ÏàÓ¦µÄÅäÖÃÊý¾Ý¡£
¿Í»§¶Ë·¢Ëͱ¨ÎÄÌåʽÈçÏ£º
<?xml version="1.0" encoding="utf-8"?>
<rpc message-id="xxx" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
<get-config>
<source>
<running/>
</source>
<filter type="subtree">
¡¡¡¡¡¡ºÍ̸¹ýÂ˹涨
</filter>
</get-config>
</rpc>
·þÎñ¶ËÓ¦´ð±¨ÎÄÌåʽÈçÏ£º
<?xml version="1.0" encoding="utf-8"?>
<rpc-reply message-id="xxx" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
<data xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
»ñÈ¡µ½µÄÅäÖÃÊý¾Ý
</data>
</rpc-reply>
ÈôÊÇÉ豸ÉÏÅäÖÃÊý¾ÝµÄËùÓÐ×Ó¼¯¶¼ÎÞ·¨Æ¥Åä¹ýÂ˹涨£¬Ôò»áÓ¦´ð¿ÕµÄdata½Úµã£¬ÈçÏ£º
<?xml version="1.0" encoding="utf-8"?>
<rpc-reply message-id="xxx " xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
<data xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"/>
</rpc-reply>
×¢Ã÷
get-config²Ù×÷ͨ¹ý¸÷Àà×ÓÊ÷¹ýÂ˹涨»ñÈ¡ÏàÓ¦µÄÅäÖÃÊý¾Ý×Ó¼¯£¬µ«ÊDz»ÄÜ»ñÈ¡É豸״̬Êý¾Ý¡£
l edit-config£ºÆ¾¾ÝÊý¾ÝÄ£Ðͽç˵ÒÔ¼°²Ù×÷ÊôÐÔ½øÐÐÉ豸ÅäÖá£
ÅäÖõı¨ÎÄÖУ¬Ô̺¬5¸ö²Ù×÷ÊôÐÔ£¬±ÉÈË·¢µÄXML±¨ÎÄÖÐÅäÖýڵãµÄoperationÊôÐÔÃèÊöÖиø³ö£¬Õâ5¸ö²Ù×÷ÊôÐÔ±ðÀëÊÇ£º
merge£º½«edit-config±¨ÎÄÖÐÔ̺¬¸ÃÊôÐÔµÄÅäÖÃÊý¾Ý¹é²¢µ½Ö¸¶¨É豸ÅäÖÃÎļþÖлòÕßÊý¾Ý¿âÖС£ÈôÊÇÅäÖÃÊý¾Ý²»´æÔÚ£¬Ôò´´½¨¸ÃÅäÖÃÊý¾Ý¡£
replace£º½«edit-config±¨ÎÄÖÐÔ̺¬¸ÃÊôÐÔµÄÅäÖÃÊý¾Ý´úÌæÖ¸¶¨É豸ÅäÖÃÎļþÖлòÕßÊý¾Ý¿âÖеÄÏàÓ¦ÅäÖÃÊý¾Ý½Úµã¡£ÈôÊǸÃÅäÖÃÊý¾Ý²»´æÔÚ£¬ÔòÖ±½Óƾ¾ÝÏ·¢ÄÚÈÝ´´½¨¸ÃÅäÖá£
create£ºÔÚÖ¸¶¨ÅäÖÃÊý¾ÝÎļþÖлòÕßÊý¾Ý¿âÖд´½¨edit-config±¨ÎÄÖÐÔ̺¬¸ÃÊôÐÔµÄÅäÖÃÊý¾Ý¡£ÈôÊÇÅäÖÃÊý¾Ý²»´æÔÚ£¬Ôò³É¹¦Ï·¢ÄÚÈÝ´´½¨¸ÃÅäÖÃÊý¾Ý£»ÈôÊÇÅäÖÃÊý¾ÝÒѾ´æÔÚ£¬Ôò»áÓ¦´ðrpc-error±¨ÎÄ£¬error-tagֵΪ¡°data-exists¡±¡£
delete£ºÔÚÖ¸¶¨ÅäÖÃÊý¾ÝÎļþÖлòÕßÊý¾Ý¿âÖÐɾ³ýedit-config±¨ÎÄÖÐÔ̺¬¸ÃÊôÐÔµÄÅäÖÃÊý¾Ý¡£ÈôÊÇÅäÖÃÊý¾Ý²»´æÔÚ£¬Ôò»áÓ¦´ðrpc-error±¨ÎÄ£¬error-tagֵΪdata-missing£»ÈôÊÇÅäÖÃÊý¾Ý´æÔÚ£¬ÔòÖ±½Óɾ³ýÏàÓ¦µÄÅäÖá£
remove£ºÔÚÖ¸¶¨ÅäÖÃÊý¾ÝÎļþÖлòÕßÊý¾Ý¿âÖÐÒÆ³ýedit-config±¨ÎÄÖÐÔ̺¬¸ÃÊôÐÔµÄÅäÖÃÊý¾Ý¡£ÈôÊÇÅäÖÃÊý¾Ý²»´æÔÚ£¬ÔòºöÂԸòÙ×÷·µ»Øok£»ÈôÊÇÅäÖÃÊý¾Ý´æÔÚ£¬ÔòÖ±½ÓÒÆ³ýÏàÓ¦µÄÅäÖá£
¿Í»§¶Ë·¢Ëͱ¨ÎÄÌåʽÈçÏ£º
<?xml version="1.0" encoding="utf-8"?>
<rpc message-id="xxx " xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
<edit-config>
<target> <running/> </target>
<config xmlns:xc="urn:ietf:params:xml:ns:netconf:base:1.0">
¡¡¡¡¡¡¡¡ÅäÖÃÊý¾Ý
</config>
</edit-config>
</rpc>
·þÎñ¶ËÓ¦´ð±¨ÎÄÌåʽÈçÏ£º
<?xml version="1.0" encoding="utf-8"?>
<rpc-reply message-id="ÐÂÎÅID " xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
<ok/>
</rpc-reply>
±¨ÎÄÖÐЯ´øerror-option½Úµã¡£error-option½ÚµãÊÇö¾ÙÀàÐ͵Ľڵ㣬É豸Äܹ»Ö§³ÖµÄÖµÓУº
continue-on-error£ºedit-config²Ù×÷ʱ£¬Óöµ½ÅäÖ÷¸´í»á¼Í¼µ±Ç°µÄÃýÎó½Úµã²¢³ÖÐø´¦ÖÃÔü×ÒµÄÅäÖ㬵«ÊÇ×îºó·µ»ØÃýÎóÐÅÏ¢£¨¼´³öÏÖÈκÎÅäÖÃÃýÎó£¬×îÖÕµÄÓ¦´ð±¨ÎľùΪrpc-error£©¡£
stop-on-error£º¸ÃֵΪerror-optionµÄȱʡֵ¡£edit-config²Ù×÷ʱ£¬Óöµ½µÚÒ»¸öÃýÎóʱ£¬ÔòÂíÉÏÖÕ³¡µ±Ç°µÄedit-config²Ù×÷£¬µ±Ç°ÅäÖñ¨ÎÄÇ°ÃæÅäÖõÄÊý¾Ý¶¼ÒѾÉúЧ£¨·¸´í֮ǰµÄÅäÖã©¡£
ͨ³£ÈçÏÂÌåʽ£º
<?xml version="1.0" encoding="utf-8"?>
<rpc message-id="xxx" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
<edit-config>
<target> <running/> </target>
<error-option>ÅäÖ÷¸´íʱµÄÐÐΪѡÏî</error-option>
<config xmlns:xc="urn:ietf:params:xml:ns:netconf:base:1.0">¡¡
¡¡¡¡¡¡ ÅäÖÃÊý¾Ý
</config>
</edit-config>
</rpc>
²úÆ·/°æ±¾Ö§³ÖÇé¿ö
ĿǰÉ豸¶Ôreplace²Ù×÷Ôݲ»Ö§³Ö£¬ÈôÊÇÓÐÏ·¢¸ÃÊôÐÔ²Ù×÷°´merge²Ù×÷´¦Öá£
×¢Ã÷
¡ñ edit-config±¨ÎÄÖÐûÓÐЯ´øerror-option½Úµãʱ£¬Ä¬ÈϸýڵãֵΪstop-on-error£¬¼´Ò»µ©Óöµ½Äĸö½ÚµãÅäÖ÷¸´í£¬ÔòÂíÉÏÖÕ³¡Í³Ò»¸ö±¨ÎÄÖÐÔü×ҵĺóÐøÅäÖò¢·µ»ØÃýÎó(rpc-error)¡£
¡ñ edit-config±¨ÎÄÖÐûÓÐЯ´øtest-option½Úµã£¬Ä¬ÈϸýڵãµÄֵΪtest-then-set¡£
¡ñ edit-config±¨ÎÄÖÐûÓÐЯ´ødefault-operation½Úµã£¬Ä¬ÈϸýڵãµÄֵΪmerge²Ù×÷¡£
l copy-config£ºÅäÖÃÎļþ¸´Ô죬È罫ºòÑ¡ÅäÖø´ÔìÖÁÅäÖÃÎļþ¡¢Æô»úÅäÖø´ÔìÖÁÔËÐÐÅäÖá¢ÔËÐÐÅäÖÃдÈëÆô»úÅäÖõȣ¬ÕâЩ±ØÒªÖ¸±êÎļþÖ§³Ö¿ÉдµÄÄÜÁ¦¡£
¿Í»§¶Ë·¢ËÍÌåʽÈçÏ£º
<?xml version="1.0" encoding="utf-8"?>
<rpc message-id="xxx"¡¡xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
¡¡<copy-config>
¡¡¡¡<target>
¡¡¡¡¡¡<startup/>
¡¡¡¡</target>
¡¡¡¡<source>
¡¡¡¡¡¡<running/>
¡¡¡¡</source>
¡¡</copy-config>
</rpc>
·þÎñ¶ËÓ¦´ð±¨ÎÄÌåʽÈçÏ£º
<?xml version="1.0" encoding="utf-8"?>
<rpc-reply message-id="xxx"¡¡xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
¡¡<ok/>
</rpc-reply>
l delete-config£ºÉ¾³ýÉ豸ÅäÖÃÎļþ£¬µ«²»ÔÊÐíɾ³ýÉ豸µÄÔËÐÐÎļþ¡£
¿Í»§¶Ë·¢ËÍÌåʽÈçÏ£º
<?xml version="1.0" encoding="utf-8"?>
<rpc message-id="xxx " xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
?<delete-config>
¡¡ <target>
¡¡¡¡ <startup/>
¡¡ </target>
?</delete-config>
</rpc>
·þÎñ¶ËÓ¦´ð±¨ÎÄÌåʽÈçÏ£º
<?xml version="1.0" encoding="utf-8"?>
<rpc-reply message-id="xxx " xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
¡¡<ok/>
</rpc-reply>
²úÆ·/°æ±¾Ö§³ÖÇé¿ö
ĿǰÉ豸½öÖ§³Ö½«Æô»úÅäÖÃͬ²½ÖÁÔËÐÐÅäÖá£
l lock£º¶ÔÅäÖÃÊý¾ÝÎļþ½øÐÐËø±£»¤£¬ÔÊÐíµ±Ç°¿Í»§¶Ë½øÐнӼû»òÕßÅú¸Ä¡£Í¬Ê±ÆäËû¿Í»§¶Ë»òÕß·ÇNETCONF¿Í»§¶Ë£¨ÈçSNMP»òÕßCLI£©ÎÞ·¨½Ó¼û»òÕßÅú¸Ä¡£¿Í»§¶Ë·¢ËÍÌåʽÈçÏ£º
<?xml version="1.0" encoding="utf-8"?>
<rpc message-id="xxx " xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
?<lock>
¡¡ <target>
¡¡¡¡ <running/>
¡¡ </target>
?</lock>
</rpc>
·þÎñ¶ËÓ¦´ð±¨ÎÄÌåʽÈçÏ£º
<?xml version="1.0" encoding="utf-8"?>
<rpc-reply message-id="xxx "¡¡xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
¡¡<ok/>
</rpc-reply>
×¢Ã÷
RFC6241×¢Ã÷lockÊÇÓÃÀ´Ëø¶¨ÅäÖÃÊý¾Ý¿â£¨ÅäÖÃÎļþ£©£¬Ô¤·À¶à¸öÔ´£¨ÈçCLI¡¢SNMPÒÔ¼°¶à¸öNETCONF»á»°µÈ£©Í¬Ê±¶ÔÉ豸µÄÅäÖÃÎļþ½øÐж©Õý£¬µ¼ÖÂÒýÈëÆäËûÎ޹صÄÅäÖö©Õý¡£É豸µ±Ç°Õë¶ÔÕâ¸ö²Ù×÷×öһЩ²Ã¼ô£¬Ö»ÄÜÔ¤·À¶à¸öNETCONF»á»°Í¬Ê±¶©ÕýÔËÐÐÅäÖ㬱£ÕÏÅäÖÃÊý¾Ý¶©Õý°²È«¡£
l unlock£º¶ÔÅäÖÃÊý¾Ý¿â£¨ÅäÖÃÎļþ£¬ÔÚÉ豸ÖÐÖ¸µÄÊÇÔËÐÐÅäÖ㩽øÐнâËø²Ù×÷£¬Óëlock²Ù×÷ÊdzɶԲÙ×÷¡£
¿Í»§¶Ë·¢ËÍÌåʽÈçÏ£º
<?xml version="1.0" encoding="utf-8"?>
<rpc message-id="xxx "¡¡xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
?<unlock>
¡¡ <target>
¡¡¡¡ <running/>
¡¡ </target>
?</unlock>
</rpc>
·þÎñ¶ËÓ¦´ð±¨ÎÄÌåʽÈçÏ£º
<?xml version="1.0" encoding="utf-8"?>
<rpc-reply message-id="xxx "¡¡xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
¡¡<ok/>
</rpc-reply>
l close-session£º¹Ø¹Øµ±Ç°»á»°£¬Ô̺¬×ÊÔ´¡¢ËøµÄ¿ªÊÍÒÔ¼°ÏνӶϿªµÈ¡£
¿Í»§¶Ë·¢ËÍÌåʽÈçÏ£º
<?xml version="1.0" encoding="utf-8"?>
<rpc message-id="xxx" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
¡¡ <close-session/>
</rpc>
·þÎñ¶ËÓ¦´ð±¨ÎÄÌåʽÈçÏ£º
<?xml version="1.0" encoding="utf-8"?>
<rpc-reply message-id="xxx"¡¡xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
¡¡<ok/>
</rpc-reply>
×¢Ã÷
ʹÓÃclose-session²Ù×÷¹Ø¹Øµ±Ç°»á»°Ê±£¬ÈôÊÇÓÐÒµÎñÔÚ´¦Ö㬱ØÐë±£Õϵ±Ç°ÒµÎñ´¦ÖýáÊø£¬²¢ÇÒ²»ÔÙ½ÓÊÜеĴ¦Öô¦ÖÃÒªÇó£¬ÔÙÖ´ÐйعػỰ²Ù×÷¡£
l kill-session£ºÇ¿Ôì¹Ø¹Ø»á»°£¬Ô̺¬×ÊÔ´¡¢ËøµÄ¿ªÊÍÒÔ¼°ÏνӶϿªµÈ¡£
°ÑÎÈ
¡ñ ʹÓÃkill-session²Ù×÷Ç¿ÐйعػỰʱ£¬ÈôÊÇÓе±Ç°ÒµÎñÔÚ´¦Ö㬱ØÐëÖÕ³¡´¦Ö㬲¢ÇÒ½«Î´ÊµÏÖµÄÒµÎñ»Ø¹öÖÁÒµÎñ´¦ÖÃÆðͷ֮ǰ£¬ÔÙÖ´ÐйعػỰҪÇó¡£
¡ñ kill-session²Ù×÷²»ÔÊÐí¹Ø¹Øµ±Ç°»á»°¡£
NETCONF¼øÈ¨»úÔìÓÃÓÚÖÎÀíÌØ¶¨Óû§Ö´ÐÐNETCONF²Ù×÷ºÍ½Ó¼ûNETCONF×ÊԴȨÏÞ£¬Ê¹ÕâЩÓû§Ö»ÄÜÖ´Ðлò½Ó¼ûNETCONFºÍ̸»®¶¨µÄ²Ù×÷ºÍÊý¾Ý½ÚµãÐÅÏ¢¡£
ȱʡÇéÇé¿öÏ£¬Ã»ÓÐÅäÖÃNETCONF¼øÈ¨Ö°ÄÜ£¬ÈÏÖ¤Óû§ÓµÓÐËùÓÐNETCONFȨÏÞ¡£Ö§³ÖµÄ½Ó¼ûȨÏÞÈçÏ£º
l Create£ºÔÊÐíºÍ²»ÈÝÔö³¤ÐµÄÊý¾Ý½Úµã¡£
l Read£ºÔÊÐíºÍ²»ÈݶÁÈ¡Êý¾Ý½ÚµãÐÅÏ¢¡£
l Update£ºÔÊÐíºÍ²»ÈݸüÐÂÊý¾Ý½Úµã¡£
l Delete£ºÔÊÐíºÍ²»ÈÝɾ³ýÊý¾Ý½Úµã¡£
l Exec£ºÔÊÐíºÍ²»ÈÝËùÓеĺÍ̸²Ù×÷¡£
NETCONF¼øÈ¨Ö°ÄÜÖ§³ÖµÄÄÚÈÝÔ̺¬RPC²½Öè¼øÈ¨ºÍÊý¾Ý½Úµã¼øÈ¨¡£
l RPC²½Öè¼øÈ¨
NETCONFµÄRPC²½Öè¼øÈ¨ÓÃÓÚ½ÚÔìNETCONFºÍ̸»®¶¨µÄ²Ù×÷²½ÖèȨÏÞ¡£¾ßÌåRPC²½ÖèÒÔ¼°Ä¬ÈÏȨÏÞÈç±í1-1Ëùʾ¡£
±í1-1 RPC²½ÖèÒÔ¼°Ä¬ÈÏȨÏÞ×¢Ã÷±í
|
RPC²½Öè |
Ö°ÄÜ×¢Ã÷ |
ĬÈÏȨÏÞ£¨¶Á£ºR£»Ð´£ºW£»Ö´ÐУºX£© |
|
get |
»ñÈ¡Êý¾Ý |
X¨¤R |
|
get-config |
»ñÈ¡ÅäÖà |
X¨¤R |
|
edit-config |
Åú¸ÄÅäÖà |
X¨¤W |
|
copy-config |
Ô´ÅäÖôúÌæÖ¸±êÅäÖà |
X |
|
delete-config |
ɾ³ýÅäÖà |
X |
|
validate |
Ó﷨УÑé |
X |
|
commit |
ºòÑ¡ÅäÖÃÉúЧÔËÐÐÅäÖà |
X |
|
cancel-commit |
È¡µÞconfirmed-commit²Ù×÷ |
X |
|
discard-changes |
ÉÕ»Ù»¹Î´ÉúЧµÄºòÑ¡ÅäÖà |
X |
|
lock/unlock |
ÅäÖÃÉÏËø/½âËø |
X |
|
close-session |
¹Ø¹Øµ±Ç°»á»° |
X |
|
kill-session |
¹Ø¹ØÆäËû»á»° |
X |
|
get-schema |
»ñÈ¡yangÎļþ |
X |
×¢Ã÷
¡ñ ËùÓеÄRPC²½ÖèĬÈ϶¼±ØÒªÖ´ÐÐȨÏÞÄÜÁ¦²Ù×÷¡£ÆäÖÐget¡¢get-configºÍedit-config±ØÒª²é³Êý¾Ý½ÚµãµÄ¶ÁºÍдȨÏÞ¡£
¡ñ close-sessionĬÈÏÔÊÐí£¬ÎÞ·¨ÅäÖò»ÈÝ¡£
¡ñ delete-configºÍkill-sessionĬÈÏÇé¿öÏÂÊDz»ÈÝ£¬Äܹ»ÅäÖÃÔÊÐí¡£ÆäËûRPC²½Ö裬ĬÈÏÇé¿öÏÂÊÇÔÊÐí¡£
¡ñ lock/unlockÊDZØÒªÅä¶Ô£¬Ö»ÓÐÅäÖÃlockȨÏÞ£¬unlockÒ²ÓµÓÐͬÑùȨÏÞ¡£
l Êý¾Ý½Úµã¼øÈ¨
NETCONFµÄÊý¾Ý½Úµã¼øÈ¨ÓÃÓÚ½ÚÔìNETCONFÊý¾Ý½ÚµãµÄȨÏÞ¡£Äܹ»×öµ½¶ÔËùÓÐÄ£¿é¡¢µ¥¸öÄ£¿éºÍÌØ¶¨µÄÊý¾Ý½ÚµãµÄȨÏÞ½øÐнÚÔì¡£¾ßÌåÇé¿öÈçÏ£º
ÈôÊÇÖ»ÅäÖá°/¡±£¬Ôò×¢Ã÷ÊǶÔËùÓÐÄ£¿éµÄÊý¾Ý½ÚµãȨÏÞ½ÚÔì¡£
ÈôÊÇÅäÖõ½Ä£¿éÃû£¬Ôò×¢Ã÷ÊǶԵ¥¸öÄ£¿éµÄÊý¾Ý½ÚµãȨÏÞ½ÚÔ죬ÀýÈ磺/rg-snmp:snmp¡£
ÆäËûÇé¿öÔòÊǶԾßÌåÄ£¿éϵÄÊý¾Ý½ÚµãȨÏÞ½ÚÔì¡£
l RFC4741£ºNETCONF Configuration Protocol
l RFC4742£ºUsing the NETCONF Configuration Protocol over Secure Shell (SSH)
l RFC4743£ºUsing NETCONF over the Simple Object Access Protocol (SOAP)
l RFC4744£ºUsing the NETCONF Protocol over the Blocks Extensible Exchange Protocol (BEEP)
l RFC5277£ºNETCONF Event Notifications
l RFC5381£ºExperience of Implementing NETCONF over SOAP
l RFC5539£ºNETCONF Over Transport Layer Security (TLS)
l RFC5717£ºPartial Lock RPC for NETCONF
l RFC6022£ºNETCONF Monitoring Schema
l RFC6241£ºNetwork Configuration Protocol
l RFC6242£ºUsing the Network Configuration Protocol over Secure Shell
l RFC6243£ºWith-defaults capability for NETCONF
l RFC6470£ºNETCONF Notification Events
l RFC6536£ºNETCONF Access Control Model (NACM)
×¢Ã÷
RFC4741ºÍRFC4742ÒѱðÀë±»RFC6241ºÍRFC6242È¡´ú¡£
NETCONFÅäÖù¤×÷ÈçÏ£º
(1) ÅäÖÃNETCONF·þÎñÆ÷Óë¿Í»§¶Ë½øÐÐͨѶ
(2)
£¨¿ÉÑ¡£©ÅäÖÃNETCONF¼øÈ¨
ÔÚNETCONF·þÎñÆ÷¶Ë¿ªÆôNETCONFÖ°ÄÜ£¬Óë¿Í»§¶Ë¿ÉÄÜÕý³£Í¨Ñ¶£¬ÊµÏÖÖÎÀíÍøÂçÉ豸µÄÖ÷ÕÅ¡£
l Ö´ÐÐnetconf yang multi-revisionºÅÁ±ØÐëÔÚNETCONF·þÎñ¶ËÄÜÁ¦±¨ÎÄ£¨Hello£©¹«¸æÖ®Ç°ÅäÖá£
l Ö´ÐÐno netconf yang multi-revisionºÅÁ±ØÐëÔÚNETCONF·þÎñ¶ËÄÜÁ¦±¨ÎÄ£¨Hello£©¹«¸æÖ®Ç°ÅäÖã¬ÇÒÄÜÁ¦¹«¸æ±¨ÎÄÖÐÒ»¸öYANGÄ£¿éÖ»¹«¸æËüµ±Ç°×îа汾¡£
l ÑϸñУÑéģʽ¿ÉÄܻᵼÖ²¿ÃÅÔÚÇáÁ¿¼¶Ð£ÑéģʽÏÂÄܹ»Ï·¢µÄXML±»À¹½Ø¡£
NETCONFºÍ̸³ÐÔØÔÚSSHºÍ̸ÉÏ£¬Òò¶øÔÚʹÓÃNETCONFÖ°ÄÜ֮ǰ£¬±ØÒªÔÚÉ豸ÉÏÏÈÅäÖÃSSH¡£ÅäÖÃÇë²Î¿¼¡°SSHÅäÖᱡ£
(1) ½øÈëÌØÈ¨Ä£Ê½¡£
enable
(2) ½øÈëÈ«¾ÖÅäÖÃģʽ¡£
configure terminal
(3)
ÅäÖÃNETCONF·þÎñÆ÷ÊôÐÔ²ÎÊý¡£ÒÔÏÂÅäÖþùΪ¿ÉÑ¡£¬ÇëÆ¾¾ÝÏÖʵÇé¿öÑ¡ÔñÅäÖá£
£¨¿ÉÑ¡£©ÅäÖÃNETCONF·þÎñ¿ªÆô¡£
netconf enable
ȱʡÇé¿öÏ£¬NETCONFÖ°ÄÜ´¦ÓÚ¿ªÆô״̬¡£
£¨¿ÉÑ¡£©ÅäÖÃNETCONFÖ§³ÖµÄ»á»°×î´óÏνӸöÊý¡£
netconf max-sessions max-sessions-numbers
ȱʡÇé¿öÏ£¬NETCONFÖ§³ÖµÄ»á»°×î´óÏνӸöÊýΪ5¸ö¡£
£¨¿ÉÑ¡£©ÅäÖÃNETCONF»á»°edit-config²Ù×÷µÄ³¬²»¶Ï¼ä¡£
netconf timeout timeout
ȱʡÇé¿öÏ£¬NETCONF»á»°edit-config²Ù×÷µÄ³¬²»¶Ï¼äΪ120Ãë¡£
£¨¿ÉÑ¡£©ÅäÖÃYANGÄ£¿é¶à°æ±¾¹«¸æ¡£
netconf yang multi-revision
ȱʡÇé¿öÏ£¬NETCONFµÄYANGÄ£¿é¶à°æ±¾¹«¸æÖ°ÄÜ´¦ÓÚ¿ªÆô״̬¡£
£¨¿ÉÑ¡£©ÅäÖÃNETCONFÄÜÁ¦¡£
netconf capability{ candidate | rollback | validate }
ȱʡÇé¿öÏ£¬Î´ÅäÖÃNETCONFÓйØÄÜÁ¦Ö°ÄÜ¡£
£¨¿ÉÑ¡£©ÅäÖÃNETCONFУÑéģʽ¡£
netconf calibration-mode { lightweight | strict }
ȱʡÇé¿öÏ£¬NETCONFУÑéģʽΪÇáÁ¿¼¶Ð£Ñéģʽ¡£
£¨¿ÉÑ¡£©ÅäÖÃNETCONFÈÕÖ¾¿ª¹Ø¡£
netconf log { capability | edit | get | session }
ȱʡÇé¿öÏ£¬NETCONFÈÕÖ¾¿ª¹Ø´¦ÓڹعØ×´Ì¬¡£
£¨¿ÉÑ¡£©ÅäÖÃNETCONF·þÎñ¶Ë±êÓï¡£
netconf port port-number
ȱʡÇé¿öÏ£¬NETCONF·þÎñ¶Ë±êÓïΪ830¡£
ÅäÖÃNETCONF¼øÈ¨»úÔìÓÃÓÚÖÎÀíÌØ¶¨Óû§Ö´ÐÐNETCONF²Ù×÷ºÍ½Ó¼ûNETCONF×ÊԴȨÏÞ£¬Ê¹ÕâЩÓû§Ö»ÄÜÖ´Ðлò½Ó¼ûNETCONFºÍ̸»®¶¨µÄ²Ù×÷ºÍÊý¾Ý½ÚµãÐÅÏ¢¡£
l ²»ÄÜ´´½¨Óû§×é¡°ÐǺţ¨*£©¡±£¬Óû§×é¡°ÐǺţ¨*£©¡±°µÊ¾ËùÓÐЧ»§×é¡£
l ¶ÔÓÚµ¥¸ö¹æ¶¨ÁбíÇé¿ö£¬Óû§¹æ¶¨Æ¥ÅäµÄ°¤´ÎÊÇÆ¾¾ÝÓû§ÅäÖõĹ涨°¤´Î½øÐС£ÈôÊDzÙ×÷Æ¥Åäµ½ÔÊÐí¹æ¶¨£¬Ôò×¢Ã÷²Ù×÷ÊDZ»ÔÊÐí¡£ÈôÊDzÙ×÷Æ¥Åäµ½²»Èݹ涨»òÕßûÓÐÆ¥Åäµ½¹æ¶¨£¬Ôò×¢Ã÷²Ù×÷ÔÚµ±Ç°¹æ¶¨ÁбíÊDZ»²»ÈÝ¡£
l ¶ÔÓÚ¶à¸ö¹æ¶¨ÁбíÇé¿ö£¬·ÖÆç¹æ¶¨ÁбíϵĹ涨ҲÊÇÒÀÕÕÓû§ÅäÖõݤ´Î½øÐÐÆ¥Åä¡£ÈôÊDzÙ×÷Æ¥Åäµ½Ò»¸ö¹æ¶¨ÁбíÖеÄÔÊÐí¹æ¶¨£¬Ôò×¢Ã÷²Ù×÷ÊDZ»ÔÊÐí¡£ÈôÊDzÙ×÷Æ¥Åäµ½²»Èݹ涨£¬Ôò×¢Ã÷²Ù×÷ÊDZ»²»ÈÝ¡£ÈôÊǵ±Ç°µÄ¹æ¶¨ÁбíûÓÐÆ¥Åäµ½Èκι涨£¬ÔòÆ¥ÅäÏÂÒ»¸ö¹æ¶¨ÁбíµÄ¹æ¶¨¡£
l RPC²Ù×÷²½ÖèÔ̺¬get¡¢get-config¡¢edit-config¡¢copy-config¡¢delete-config¡¢validate¡¢commit¡¢cancel-commit¡¢discard-changes¡¢lock¡¢kill-sessionºÍget-schemaµÈ¡£
l ûÓÐÅäÖù涨ÀàÐÍÇé¿öÏ£¬Ôò°µÊ¾Í¬Ê±¿ªÆô¶ÔRPC²Ù×÷²½ÖèºÍÊý¾Ý½Úµã¹æ¶¨È¨ÏÞ½ÚÔì¡£
l ¹æ¶¨ÏÂÓÐÅäÖÿªÆôRPC²Ù×÷·½ÂÉÀýÔò½ÚÔì¡£ÈôÊǹ涨ÏÂÅäÖõĽӼû²Ù×÷ȨÏÞÔ̺¬execȨÏÞ£¬Ôò½øÐÐRPC²Ù×÷²½Öè²é³Ê±»á½øÐиù涨µÄÆ¥Å䣻²»È»½øÐÐRPC²Ù×÷²½Öè²é³Ê±²»»á½øÐиù涨µÄÆ¥Åä¡£
l ¹æ¶¨ÏÂÓÐÅäÖÿªÆôÊý¾Ý½Úµã¹æ¶¨½ÚÔì¡£ÈôÊǹ涨ÏÂÅäÖõĽӼû²Ù×÷ȨÏÞÔ̺¬create¡¢read¡¢updateºÍdeleteÖÐÖÁÉÙÒ»ÖÖȨÏÞ£¬Ôò½øÐÐÊý¾Ý½Úµã²é³Ê±»á½øÐиù涨µÄÆ¥Å䣻²»È»½øÐÐÊý¾Ý½Úµã²é³Ê±²»»á½øÐиù涨µÄÆ¥Åä¡£
(1) ½øÈëÌØÈ¨Ä£Ê½¡£
enable
(2) ½øÈëÈ«¾ÖÅäÖÃģʽ¡£
configure terminal
(3) ½øÈë¼øÈ¨ÅäÖÃģʽ¡£
netconf acm
(4) ÅäÖÃÓû§×é²¢½øÈëÓû§×éģʽ¡£
user-group-name name
ȱʡÇé¿öÏ£¬Î´ÅäÖÃÓû§×é¡£
(5) ÅäÖÃÓû§×鹨ÁªÓû§¡£
user-name name
ȱʡÇé¿öÏ£¬Î´ÅäÖÃÓû§×鹨ÁªÓû§¡£
(6) Í˳öµ½¼øÈ¨ÅäÖÃģʽ¡£
exit
(7)
ÅäÖù涨ÁÐ±í²¢½øÈë¹æ¶¨Áбíģʽ¡£
rule-list name
ȱʡÇé¿öÏ£¬Î´ÅäÖù涨ÁÐ±í¡£
(8) ÅäÖù涨ÁÐ±í¹ØÁªÓû§×é¡£
user-group { * | name }
ȱʡÇé¿öÏ£¬Î´ÅäÖù涨ÁÐ±í¹ØÁªÓû§×é¡£
(9) ÅäÖù涨²¢½øÈë¹æ¶¨Ä£Ê½¡£
rule name action { permit | deny }
ȱʡÇé¿öÏ£¬Î´ÅäÖù涨¡£
(10) ÅäÖù涨ÀàÐÍ¡£
rule-type { rpc-name { name | * } | path path }
ȱʡÇé¿öÏ£¬Î´ÅäÖù涨ÀàÐÍ¡£
(11) ÅäÖù涨µÄ½Ó¼û²Ù×÷ȨÏÞ¡£
access-operation { * | { create | delete | exec | read | update } * }
ȱʡÇé¿öÏ£¬Î´ÅäÖù涨µÄ½Ó¼û²Ù×÷ȨÏÞ¡£
Äܹ»Í¨¹ýshowºÅÁîÐв鿴ְÄÜÅäÖúóµÄÔËÐÐÇé¿öÒÔÑéÖ¤ÅäÖóÉЧ¡£
±í1-2 NETCONF¼à¶½ÓëÊØ»¤
|
×÷ÓÃ |
ºÅÁî |
|
²é¿´Óû§¹ØÁªµÄ¹æ¶¨ÁбíÐÅÏ¢¡¢¹æ¶¨Áбí¾ßÌåÐÅÏ¢ºÍÓû§×éÐÅÏ¢ |
show netconf authorization user-name name { rule-list [ detail ] | user-group } |
|
²é¿´NETCONFµ±Ç°ËùÓеĻỰÐÅÏ¢ |
show netconf session |
|
²é¿´NETCONFµ±Ç°È«¾Öͳ¼ÆÐÅÏ¢ |
show netconf statistics |
|
²é¿´É豸µ±Ç°Ö§³ÖµÄËùÓÐyangÎļþ |
show netconf yang file |
|
²é¿´É豸µ±Ç°Ö§³ÖµÄËùÓнڵãõè¾¶ |
show netconf yang node-path |
|
²é¿´É豸µ±Ç°Ö§³ÖµÄËùÓÐyangÄ£ÐÍÊ÷ |
show netconf yang tree |
¶ÔÓÚ°²È«ÐÔ¡¢¿ÉÀ©´óÐÔÒªÇó¸ßµÄÍøÂçÉ豸ÖÎÀíÐèÒª£¬Äܹ»Ê¹ÓÃNETCONF×÷ÎªÍø¹Ü¹¤¾ß¡£NETCONFµÄ³ÐÔØºÍ̸ΪSSHºÍ̸£¬SSHºÍ̸×÷ΪÀûÓòãµÄ°²È«ºÍ̸£¬±£ÏÕÁËNETCONFµÄ°²È«ÐÔ¡£ÒÔͼ1-3ΪÀý£¬Óû§Í¨¹ýNETCONFÍøÂçÖÎÀíÈí¼þ£¬À´¶ÔÍøÂçÉ豸½øÐÐÖÎÀíºÍ¼à¿Ø¡£
ͼ1-3 NETCONF×éÍøÍ¼

l ÅäÖÃNETCONF·þÎñ¶ËµÄÍøÂçÖÎÀí¿ÚIPµØÖ·£¬±£ÕÏNETCONFµÄ¿Í»§¶ËÓë·þÎñ¶ËÖ®¼äÈý²ã·Óɿɴ
l ÔÚNETCONF·þÎñ¶ËÉϲ¿ÊðSSHÖ°ÄÜ¡£
l ÔÚNETCONF·þÎñ¶ËÉÏÅäÖÃNETCONFÖ°ÄÜÓйزÎÊý£¬ÒÔÂú×ãÏÖʵ³¡¾°ÐèÒª¡£
l NETCONF¿Í»§¶ËÈí¼þͨ¹ýSSHºÍ̸Ïνӵ½NETCONF·þÎñ¶Ë£¬ÊµÏÖ¶ÔÍøÂçÉ豸µÄÖÎÀíºÍ¼à¿Ø¡£
# ÅäÖÃNETCONF·þÎñ¶ËµÄÍøÂçÖÎÀí¿ÚIPµØÖ·¡£
Hostname> enable
Hostname# configure terminal
Hostname(config)# interface mgmt 0
Hostname(config-if-Mgmt 0)# ip address 172.29.71.62 255.255.255.0
Hostname(config-if-Mgmt 0)# gateway 172.29.71.1
# ¿ªÆôSSHÖ°ÄÜ£¬²¢ÌìÉú±¾µØÃÜÔ¿¡£ÃÜÔ¿ÀàÐ͵ÄÑ¡Ôñ×¼Ôò£¬Çë²Î¿¼¡°SSHºÅÁîÊֲᡱÖеÄcrypto key generateºÅÁîµÄʹÓÃÁìµ¼¡£
Hostname> enable
Hostname# configure terminal
Hostname(config)# enable service ssh-server
Hostname(config)# crypto key generate rsa
% You already have RSA keys.
% Do you really want to replace them? [yes/no]:y
Choose the size of the rsa key modulus in the range of 512 to 2048
and the size of the dsa key modulus in the range of 360 to 2048 for your
Signature Keys. Choosing a key modulus greater than 512 may take
a few minutes.
Choose the size of the ecc key modulus from (256, 384, 521)
How many bits in the modulus [1024]:2048
% Generating 2048 bit RSA1 keys ...[ok]
% Generating 2048 bit RSA keys ...[ok]
Hostname(config)#
# ´´½¨Óû§ÃûΪnetconfµÄSSHÓû§£¬²¢ÅäÖÃÃÜÂëΪnetconf_1234¡£
Hostname(config)# username netconf privilege 15 password netconf_1234
°ÑÎÈ
Ϊ±£Õϰ²È«ÐÔ£¬Ç붨ÆÚÅú¸ÄÓû§Ãû¼°ÃÜÂë¡£
# ÅäÖÃVTYÏß·±¾µØÓû§ÈÏÖ¤¡£
Hostname(config)# line vty 0 35
Hostname(config-line)# login local
# ÔÚNETCONF·þÎñ¶ËÉÏ¿ªÆôNETCONF·þÎñÖ°ÄÜ¡£
Hostname(config)# netconf enable
# ÔÚNETCONF·þÎñ¶ËÉÏÅäÖÃÖ§³ÖµÄ»á»°×î´óÏνӸöÊýΪ6¡£
Hostname(config)# netconf max-sessions 6
# ÔÚNETCONF·þÎñ¶ËÉÏÅäÖÃNETCONF»á»°edit-config²Ù×÷µÄ³¬²»¶Ï¼äΪ100Ãë¡£
Hostname(config)# netconf timeout 100
# ÔÚNETCONF·þÎñ¶ËÉÏÅäÖÃYANGÄ£¿é¶à°æ±¾¹«¸æ¡£
Hostname(config)# netconf yang multi-revision
# ÔÚNETCONF·þÎñ¶ËÉÏÅäÖÿªÆôNETCONF·þÎñ¶ËcandidateÄÜÁ¦¡£
Hostname(config)# netconf capability candidate
# ÔÚNETCONF·þÎñ¶ËÉÏÅäÖÃNETCONFУÑéģʽΪÇáÁ¿¼¶Ð£Ñéģʽ¡£
Hostname(config)# netconf calibration lightweight
# ÔÚNETCONF·þÎñ¶ËÉÏÅäÖÃNETCONF»á»°ÓйصÄSyslogÈÕÖ¾¿ª¹Ø¡£
Hostname(config)# netconf log session
# ÔÚNETCONF·þÎñ¶ËÉÏÅäÖÃNETCONF·þÎñ¶Ë±êÓïΪ5000¡£
Hostname(config)# netconf port 5000
# Èçͼ1-4Ëùʾ£¬Ê¹ÓÃNETCONF¿Í»§¶ËÈí¼þͨ¹ýSSHºÍ̸µÇ¼µ½NETCONF·þÎñ¶Ë£¬ÊµÏÖ¶ÔÍøÂçÉ豸µÄÖÎÀíºÍ¼à¿Ø¡£
ͼ1-4 NETCONF¿Í»§¶ËÈí¼þµÇ¼É豸ʾÀýͼ

# ͨ¹ýpingºÅÁî²é¿´NETCONFµÄ¿Í»§¶ËÓë·þÎñ¶ËÊÇ·ñÈý²ã¿É´ï¡£
Hostname# ping oob 172.29.71.100
Sending 5, 100-byte ICMP Echoes to 172.29.71.100, timeout is 2 seconds:
¡¡< press Ctrl+C to break >
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 1/1/3 ms.
Hostname#
# ͨ¹ýshow serviceºÅÁî²é¿´SSH·þÎñÊÇ·ñ¿ªÆô¡£
Hostname# show service
snmp-agent¡¡¡¡: enabled
ssh-server¡¡¡¡: enabled
telnet-server : enabled
# ÔÚÉ豸ÉÏͨ¹ýshow netconf sessionºÅÁî²é¿´NETCONF¿Í»§¶ËÈí¼þʹÓÃSSHºÍ̸ÏνÓNETCONF·þÎñ¶Ë³É¹¦¡£
Hostname# show netconf session
************************session information************************
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Session count: 1
*******************************************************************
Session ID¡¡¡¡¡¡¡¡¡¡¡¡¡¡: 20
Session version¡¡¡¡¡¡¡¡ : 1.1
Session transport¡¡¡¡¡¡ : netconf-ssh
Session login IP¡¡¡¡¡¡¡¡: 172.29.69.21¡¡¡¡
Session login time¡¡¡¡¡¡: 2020-12-18T08:26:30Z
Session in rpcs¡¡¡¡¡¡¡¡ : 0
Session in bad rpcs¡¡¡¡ : 0
Session out rpc errors¡¡: 0
Session out notification: 0
Session out rpcs¡¡¡¡¡¡¡¡: 0
Session out send fail¡¡ : 0
Session get¡¡¡¡¡¡¡¡¡¡¡¡ : 0
Session get config¡¡¡¡¡¡: 0
Session edit config¡¡¡¡ : 0
Session copy config¡¡¡¡ : 0
Session delete config¡¡ : 0
Session close session¡¡ : 0
Session unsupport¡¡¡¡¡¡ : 0
Session lock_or_unlock¡¡: 0
===================================================================
NETCONF_ServerµÄÅäÖÃÎļþ
hostname Hostname
!
username netconf privilege 15 password netconf_1234
!
netconf log session
netconf capability candidate
netconf port 5000
netconf max-sessions 6
netconf timeout 100
!
enable service ssh-server
!
interface Mgmt 0
?ip address 172.29.71.62 255.255.255.0
?gateway 172.29.71.1
!
line vty 0 35
?login local
!
Óû§user1Õ¼ÓÐËùÓÐÄ£¿éµÄget²Ù×÷ȨÏÞ£¬Óû§user2Õ¼ÓжÔSNMPÄ£¿éµÄ´´½¨È¨ÏÞ¡£
ͼ1-5 NETCONF¼øÈ¨×éÍøÍ¼

ÅäÖÃÓû§user1¶ÔËùÓÐÄ£¿éÓµÓÐget²Ù×÷ȨÏÞ¡£
ÅäÖÃÓû§user2½ö¶ÔSNMPÄ£¿éÕ¼Óд´½¨È¨ÏÞ¡£
(1) ÅäÖÃÓû§user1¶ÔËùÓÐÄ£¿éÓµÓÐget²Ù×÷ȨÏÞ¡£
# ÅäÖÃÓû§user1¡£
Device> enable
Device# configure terminal
Device(config)# username user1 password test12345
# ÅäÖýøÈë¼øÈ¨Ä£Ê½¡£
Device(config)# netconf acm
# ÅäÖÃÓû§×éguser1¡£
Device(config-nacm)# user-group-name guser1
# ÅäÖÃÓû§×éguser1¹ØÁªÓû§user1¡£
Device(config-nacm-user-group)# user-name user1
Device(config-nacm-user-group)# exit
# ÅäÖù涨Áбírule-list1¡£
Device(config-nacm)# rule-list rule-list1
# ÅäÖù涨Áбírule-list1¹ØÁªÓû§×éguser1¡£
Device(config-nacm-rule-list)# user-group guser1
# ÅäÖÃÔÊÐí¹æ¶¨rule1¡£
Device(config-nacm-rule-list)# rule rule1 action permit
# ÅäÖÃRPC·½ÂÉÀýÔòÀàÐÍget¡£
Device(config-nacm-rule-list-rule)# rule-type rpc-name get
Device(config-nacm-rule-list-rule)# end
(2) ÅäÖÃÓû§user2½ö¶ÔSNMPÄ£¿éÕ¼Óд´½¨È¨ÏÞ¡£
# ÅäÖÃÓû§user2¡£
Device# configure terminal
Device(config)# username user2 password test12345
# ÅäÖýøÈë¼øÈ¨Ä£Ê½¡£
Device(config)# netconf acm
# ÅäÖÃÓû§×éguser2¡£
Device(config-nacm)# user-group-name guser2
# ÅäÖÃÓû§×éguser2¹ØÁªÓû§user2¡£
Device(config-nacm-user-group)# user-name user2
# ÅäÖù涨Áбírule-list2¡£
Device(config-nacm-user-group)# exit
# ÅäÖù涨Áбírule-list2¹ØÁªÓû§×éguser2¡£
Device(config-nacm)# rule-list rule-list2
Device(config-nacm-rule-list)# user-group guser2
# ÅäÖÃÔÊÐí¹æ¶¨rule2¡£
Device(config-nacm-rule-list)# rule rule2 action permit
# ÅäÖÃÊý¾Ý½Úµã¹æ¶¨ÀàÐÍ£¬²¢ÅäÖÃÊý¾Ý½ÚµãΪSNMPÄ£¿éÃû¡£
Device(config-nacm-rule-list-rule)# rule-type path /rg-snmp:snmp
# ÅäÖýӼû²Ù×÷ȨÏÞΪcreate¡£
Device(config-nacm-rule-list-rule)# access-operation create
# ͨ¹ýshow netconf authorization user-name user2 user-groupºÅÁî²é¿´Óû§user1µÄÓû§×éÐÅÏ¢¡£
Device # show netconf authorization user-name user1 user-group
UserGroup: guser1
# ͨ¹ýshow netconf authorization user-name user2 user-groupºÅÁî²é¿´Óû§user1µÄÓû§×éÐÅÏ¢¡£
Device # show netconf authorization user-name user2 user-group
UserGroup: guser2
# ͨ¹ýshow netconf authorization user-name user1 rule-list detailºÅÁî²é¿´Óû§user1¹ØÁªµÄ¹æ¶¨Áбí¾ßÌåÐÅÏ¢¡£
Device# show netconf authorization user-name user1 rule-list detail
RuleList: rule-list1
¡¡-------------------------------------------------------------------
¡¡Rule¡¡¡¡¡¡¡¡¡¡¡¡ Action¡¡ AccessOperation¡¡ Type¡¡¡¡¡¡Entity¡¡¡¡¡¡
¡¡-------------------------------------------------------------------
¡¡rule1¡¡¡¡¡¡¡¡¡¡¡¡permit¡¡ RCUDX¡¡¡¡¡¡¡¡¡¡¡¡ RPC¡¡¡¡¡¡ get
¡¡[R:Read C:Create U:Update D:Delete X:Exec]
# ͨ¹ýshow netconf authorization user-name user2 rule-list detailºÅÁî²é¿´Óû§user2¹ØÁªµÄ¹æ¶¨Áбí¾ßÌåÐÅÏ¢¡£
Device# show netconf authorization user-name user2 rule-list detail
RuleList: rule-list2
¡¡-------------------------------------------------------------------
¡¡Rule¡¡¡¡¡¡¡¡¡¡¡¡ Action¡¡ AccessOperation¡¡ Type¡¡¡¡¡¡Entity¡¡¡¡¡¡
¡¡-------------------------------------------------------------------
¡¡rule2¡¡¡¡¡¡¡¡¡¡¡¡permit¡¡ -C---¡¡¡¡¡¡¡¡¡¡¡¡ PATH¡¡¡¡¡¡/rg-snmp:snmp
¡¡[R:Read C:Create U:Update D:Delete X:Exec]
DeviceµÄÅäÖÃÎļþ
hostname Device
!
username user1 password test12345
username user2 password test12345
!
netconf acm
?user-group-name guser1
¡¡user-name user1
?user-group-name guser2
¡¡user-name user2
?rule-list rule-list1
¡¡user-group guser1
¡¡rule rule1 action permit
¡¡ rule-type rpc-name get
?rule-list rule-list2
¡¡user-group guser2
¡¡rule rule2 action permit
¡¡ access-operation create
¡¡ rule-type path /rg-snmp:snmp
!
end