AurelieL
    • Create new note
    • Create a note from template
      • Sharing URL Link copied
      • /edit
      • View mode
        • Edit mode
        • View mode
        • Book mode
        • Slide mode
        Edit mode View mode Book mode Slide mode
      • Customize slides
      • Note Permission
      • Read
        • Only me
        • Signed-in users
        • Everyone
        Only me Signed-in users Everyone
      • Write
        • Only me
        • Signed-in users
        • Everyone
        Only me Signed-in users Everyone
      • Engagement control Commenting, Suggest edit, Emoji Reply
    • Invite by email
      Invitee

      This note has no invitees

    • Publish Note

      Share your work with the world Congratulations! 🎉 Your note is out in the world Publish Note

      Your note will be visible on your profile and discoverable by anyone.
      Your note is now live.
      This note is visible on your profile and discoverable online.
      Everyone on the web can find and read all notes of this public team.
      See published notes
      Unpublish note
      Please check the box to agree to the Community Guidelines.
      View profile
    • Commenting
      Permission
      Disabled Forbidden Owners Signed-in users Everyone
    • Enable
    • Permission
      • Forbidden
      • Owners
      • Signed-in users
      • Everyone
    • Suggest edit
      Permission
      Disabled Forbidden Owners Signed-in users Everyone
    • Enable
    • Permission
      • Forbidden
      • Owners
      • Signed-in users
    • Emoji Reply
    • Enable
    • Versions and GitHub Sync
    • Note settings
    • Note Insights
    • Engagement control
    • Transfer ownership
    • Delete this note
    • Save as template
    • Insert from template
    • Import from
      • Dropbox
      • Google Drive
      • Gist
      • Clipboard
    • Export to
      • Dropbox
      • Google Drive
      • Gist
    • Download
      • Markdown
      • HTML
      • Raw HTML
Menu Note settings Versions and GitHub Sync Note Insights Sharing URL Create Help
Create Create new note Create a note from template
Menu
Options
Engagement control Transfer ownership Delete this note
Import from
Dropbox Google Drive Gist Clipboard
Export to
Dropbox Google Drive Gist
Download
Markdown HTML Raw HTML
Back
Sharing URL Link copied
/edit
View mode
  • Edit mode
  • View mode
  • Book mode
  • Slide mode
Edit mode View mode Book mode Slide mode
Customize slides
Note Permission
Read
Only me
  • Only me
  • Signed-in users
  • Everyone
Only me Signed-in users Everyone
Write
Only me
  • Only me
  • Signed-in users
  • Everyone
Only me Signed-in users Everyone
Engagement control Commenting, Suggest edit, Emoji Reply
  • Invite by email
    Invitee

    This note has no invitees

  • Publish Note

    Share your work with the world Congratulations! 🎉 Your note is out in the world Publish Note

    Your note will be visible on your profile and discoverable by anyone.
    Your note is now live.
    This note is visible on your profile and discoverable online.
    Everyone on the web can find and read all notes of this public team.
    See published notes
    Unpublish note
    Please check the box to agree to the Community Guidelines.
    View profile
    Engagement control
    Commenting
    Permission
    Disabled Forbidden Owners Signed-in users Everyone
    Enable
    Permission
    • Forbidden
    • Owners
    • Signed-in users
    • Everyone
    Suggest edit
    Permission
    Disabled Forbidden Owners Signed-in users Everyone
    Enable
    Permission
    • Forbidden
    • Owners
    • Signed-in users
    Emoji Reply
    Enable
    Import from Dropbox Google Drive Gist Clipboard
       owned this note    owned this note      
    Published Linked with GitHub
    1
    Subscribed
    • Any changes
      Be notified of any changes
    • Mention me
      Be notified of mention me
    • Unsubscribe
    Subscribe
    # TP - IPV6 by Aurélie Lecerf E5 CCSN # Partie 1: Identification des adresses ![](https://i.imgur.com/YKUvwr1.png) ![](https://i.imgur.com/KI0it2q.png) ![](https://i.imgur.com/iMd7NTf.png) _______ # Partie 2: Configuration des interfaces ![](https://i.imgur.com/W9yzZm7.png) ![](https://i.imgur.com/R06bRZ4.png) R1 (côté R2) conf t int g0/0 ipv6 enable ipv6 add 2001:DB8:1::1/64 no sh exit exit Sh ipv6 interface brief => pour voir si les interfaces sont up ![](https://i.imgur.com/k1ORKEj.png) R1 (côté R3) conf t int s6/0 ipv6 enable ipv6 add 2001:DB8:3::1/64 no sh Do wr exit Exit sh ipv6 interface bref ![](https://i.imgur.com/epwRAzx.png) R2(côté R1) conf t int g0/0 ipv6 enable ipv6 add 2001:DB8:1::2/64 no sh do wr exit exit ![](https://i.imgur.com/XqoTne2.png) R2(côté R3) conf t int g1/0 ipv6 enable ipv6 add 2001:DB8:2::2/64 no sh do wr exit Exit ![](https://i.imgur.com/wZUioWa.png) R3 (côté R1) conf t int s6/0 ipv6 enable ipv6 add 2001:DB8:3::2/64 no sh do wr exit Exit ![](https://i.imgur.com/iTCvRMv.png) R3 (côté R2) conf t int g0/0 ipv6 enable ipv6 add 2001:DB8:2::1/64 no sh do wr exit Exit ![](https://i.imgur.com/2zqyQiu.png) ____ # Partie 3 Routage statique ![](https://i.imgur.com/4tn3gYh.png) ![](https://i.imgur.com/o3Hf06N.png) R1 ( veut se connecter au sous réseau voisin entre R2 et R3 soit 2001:DB8:2::/64) côté R3 Conf t Ipv6 unicast-routing Int g0/0 Ipv6 address 2001:DB8:1::1/64 Exit ipv6 route 2001:DB8:2::/64 2001:DB8:3::2 Exit Utiliser traceroute pour connaître les chemins par lesquels on passe ![](https://i.imgur.com/dmLdsK2.png) R1 ( veut se connecter au sous réseau voisin entre R2 et R3 soit 2001:DB8:2::/64) côté R2 Conf t Ipv6 unicast-routing Int g0/0 Ipv6 address 2001:DB8:1::1/64 Exit ipv6 route 2001:DB8:2::/64 2001:DB8:1::2 Exit Sh ipv6 route ![](https://i.imgur.com/LFV6pTR.png) Ping des interfaces des routeurs R2 et R3 du sous réseau visé suite à la création des routes statiques ![](https://i.imgur.com/tVNpzZ1.png) ![](https://i.imgur.com/OUZ9OHf.png) ![](https://i.imgur.com/vounk7r.png) R2 ( veut se connecter au sous réseau voisin entre R1 et R3 soit 2001:DB8:3::/64) côté R3 Conf t Ipv6 unicast-routing Int g0/0 Ipv6 address 2001:DB8:1::2/64 Exit ipv6 route 2001:DB8:3::/64 2001:DB8:2::1 Exit Sh ipv6 route ![](https://i.imgur.com/p53UNpi.png) R2 ( veut se connecter au sous réseau voisin entre R1 et R3 soit 2001:DB8:3::/64) côté R1 Conf t Ipv6 unicast-routing Int g0/0 Ipv6 address 2001:DB8:1::2/64 Exit ipv6 route 2001:DB8:3::/64 2001:DB8:1::1 Exit Sh ipv6 route ![](https://i.imgur.com/ie0GFYr.png) Ping des interfaces des routeurs R1 et R3 du sous réseau visé suite à la création des routes statiques ![](https://i.imgur.com/P6lsgZJ.png) ![](https://i.imgur.com/HUucUZh.png) R3 ( veut se connecter au sous réseau voisin entre R1 et R2 soit 2001:DB8:1::/64) côté R1 Conf t Ipv6 unicast-routing Int s6/0 Ipv6 address 2001:DB8:3::2/64 Exit ipv6 route 2001:DB8:1::/64 2001:DB8:3::1 Exit Sh ipv6 route R3 ( veut se connecter au sous réseau voisin entre R1 et R2 soit 2001:DB8:1::/64) côté R2 Conf t Ipv6 unicast-routing Int s6/0 Ipv6 address 2001:DB8:3::2/64 Exit ipv6 route 2001:DB8:1::/64 2001:DB8:2::2 Exit Sh ipv6 route ![](https://i.imgur.com/cPLMOzc.png) Ping des interfaces des routeurs R1 et R2 du sous réseau visé suite à la création des routes statiques ![](https://i.imgur.com/lKHv7Bv.png) ![](https://i.imgur.com/nHEyhCe.png) ____________ # Partie 4: Routage dynamique avec RIPng ![](https://i.imgur.com/bGBDb7r.png) R1 1) Interface - mise en place des adresses R1 enable conf t interface g0/0 ipv6 enable ipv6 address 2001:db8:1::1/64 no shutdown interface s6/0 ipv6 enable ipv6 address 2001:db8:6::2/64 no shutdown interface g1/0 ipv6 enable ipv6 address 2001:db8:5::2/64 no shutdown exit exit wr ![](https://i.imgur.com/1lsLWVo.png) Vérification des interfaces up show ipv6 interface brief ![](https://i.imgur.com/ygUwr3C.png) ![](https://i.imgur.com/2HNSnff.png) 2) Mise en place du protocole RIPng RIPng: conf t ipv6 unicast-routing interface g0/0 ipv6 rip LT enable exit interface s6/0 ipv6 rip LT enable exit interface g1/0 ipv6 rip LT enable exit exit wr R1 a deux interfaces avec une adresse unicast globale. Par défaut, il ne prend pas en compte le protocole IPv6. C’est pourquoi il faut l’activer avec la commande | « ipv6 unicast-routing » ipv6 rip LT enable => déclare le rip sur toutes les interfaces du routeur ![](https://i.imgur.com/AVmI1NF.png) show ipv6 route pour voir les routeurs connectés voisins et ceux appris par le routage RIPng ![](https://i.imgur.com/EMkA1q6.png) traceroute ipv6 "adresse visée" ![](https://i.imgur.com/66DJYw9.png) ping ![](https://i.imgur.com/qaRfKnv.png) protocole show ipv6 protocol => ici RIP ![](https://i.imgur.com/uGPcqIr.png) Les protocoles de routage à vecteur de distances permettent de construire des tables de routages sans aucune vision globale du réseau. Le terme « vecteur » vient du faite, que le protocole manipule des tableaux vers les autres nœuds du réseau. Et le mot « distance » est le nombre de sauts qui lui permet d’atteindre les autres routeurs ! RIP est un protocole de routage à vecteur de distance. distance administrative => ici RIP = 120 et le 2 est la métrique de l’itinéraire. C’est-à-dire que le routeur 1 doit traverser 2 autres routeurs ![](https://i.imgur.com/FzazXOp.png) FF02::9 permet de communiquer avec routeurs voisins Défaillance entre R1 et R5 ![](https://i.imgur.com/nT2B9Ao.png) Les routeurs qui fonctionnent avec le protocole RIP envoient périodiquement des messages d’update. Ces messages sont envoyés toutes les 30 secondes ! Et si un des routeurs ne reçoit pas de mise à jour, alors cela aura pour effet de déclencher différents types de timers : Si au bout de 30 secondes, il ne reçoit pas sa mise à jour, alors le timer Invalid se déclenche. Après 180 secondes, l’itinéraire est considéré comme invalide et placé dans le mode Hold Down. Dans ce mode, les mises à jour de cette route seront ignorées pendant 180 secondes, à moins qu’elle obtienne une métrique plus faible. Et par contre, si au bout de 240 secondes, la route est toujours indisponible, alors elle sera supprimée de la table de routage Ces informations sur les différentes routes sont partagées dynamiquement entre routeurs. C’est-à-dire que, lorsqu'un routeur reçoit des infos sur une nouvelle route, ou bien, simplement un changement d’itinéraire, alors, il mettra à jour sa propre table de routage, et il partagera ces infos aux autres routeurs. R2 1) Interface - mise en place des adresses ![](https://i.imgur.com/v9D5bHH.png) Vérification des interfaces up show ipv6 interface brief ![](https://i.imgur.com/bbef06h.png) 2) Mise en place du protocole RIPng ![](https://i.imgur.com/E8uWD6P.png) show ipv6 route pour voir le RIP R sur les 2 interfaces de R2 ![](https://i.imgur.com/lpRhmLO.png) traceroute ipv6 "vers R4" ![](https://i.imgur.com/YQoRU1X.png) ping ![](https://i.imgur.com/3OZH78g.png) protocole ![](https://i.imgur.com/nmv0XOv.png) R3 1) Interface - mise en place des adresses ![](https://i.imgur.com/Cue2Hug.png) Vérification des interfaces up show ipv6 interface brief ![](https://i.imgur.com/r63Q7PX.png) 2) Mise en place du protocole RIPng ![](https://i.imgur.com/HrfbsaV.png) show ipv6 route ![](https://i.imgur.com/F9k6mXh.png) traceroute ipv6 "adresse visée" ![](https://i.imgur.com/xhkcaXs.png) ping d'un voisin éloigné ![](https://i.imgur.com/aiSIzu7.png) show ipv6 protocol ![](https://i.imgur.com/OXt3gnQ.png) R5 1) Interface - mise en place des adresses ![](https://i.imgur.com/KEATrRi.png) Vérification des interfaces up show ipv6 interface brief ![](https://i.imgur.com/h0yarSA.png) 2) Mise en place du protocole RIPng ![](https://i.imgur.com/N4DPGLC.png) show ipv6 route ![](https://i.imgur.com/3elZzl9.png) traceroute ipv6 "vers R2" ![](https://i.imgur.com/zCP3EDU.png) ping ![](https://i.imgur.com/GmwfMeb.png) show ipv6 protocol ![](https://i.imgur.com/Dd6qEdh.png) R4 1) Interface - mise en place des adresses ![](https://i.imgur.com/DZyk9OZ.png) Vérification des interfaces up show ipv6 interface brief ![](https://i.imgur.com/sAKsMIn.png) 2) Mise en place du protocole RIPng ![](https://i.imgur.com/P74Pj9d.png) show ipv6 route ![](https://i.imgur.com/FckZf4G.png) traceroute ipv6 "vers R3" ![](https://i.imgur.com/ZVvnKP7.png) ping d'un voisin éloigné ![](https://i.imgur.com/Dz6RaR1.png) show ipv6 protocole ![](https://i.imgur.com/xi3zm8z.png) RIPng est ***un protocole à vecteur de distance*** => coût défini en nombre de sauts ou de routeurs traversés pour aller d'un réseau à un autre. Le protocole RIP (Routing Information Protocol) est utilisé pour gérer les informations du routeur dans un réseau autonome, par exemple un réseau local d'entreprise (LAN) ou un réseau étendu privé (WAN). Avec le protocole RIP, un hôte passerelle envoie sa table de routage au routeur le plus proche toutes les 30 secondes. Ce routeur, à son tour, envoie le contenu de ses tables de routage aux routeurs voisins. Le protocole RIP convient parfaitement aux petits réseaux. Cela est dû au fait que la transmission de la table de routage complète toutes les 30 secondes peut générer une charge de trafic importante sur le réseau. De plus, les tables RIP sont limitées à 15 sauts. Le protocole OSPF est mieux adapté aux réseaux plus importants. ________________________ # Partie 5 - Routage dynamique avec OSPFv3 Open Shortest Path First (OSPF) ![](https://i.imgur.com/0QfOQvS.png) R1 OSPF: conf t ipv6 unicast-routing ipv6 router ospf 1 router-id 1.1.1.1 exit interface g0/0 ipv6 ospf 1 area 0 interface s6/0 ipv6 ospf 1 area 0 interface g1/0 ipv6 ospf 1 area 0 wr ![](https://i.imgur.com/mkidjDg.png) ![](https://i.imgur.com/RuQUUfu.png) ![](https://i.imgur.com/p1TiJ5I.png) ![](https://i.imgur.com/sk4pT4X.png) ![](https://i.imgur.com/n60ePUy.png) Pour voir ses voisins ospf surtout en cas de défaillance show ipv6 ospf neighbor ![](https://i.imgur.com/L1vnc7t.png) show ipv6 ospf interface La commande « show ip ospf interface » permet d’afficher le cout de chaque interface du routeur. ![](https://i.imgur.com/l7G9SlD.png) ![](https://i.imgur.com/sVg9dWb.png) ![](https://i.imgur.com/o2OEfqF.png) R2 ![](https://i.imgur.com/zHByTBV.png) ![](https://i.imgur.com/BxFyNOH.png) ![](https://i.imgur.com/z5jr2O3.png) ![](https://i.imgur.com/tHu3939.png) ![](https://i.imgur.com/AQgYxmb.png) ![](https://i.imgur.com/OVEOE9A.png) ![](https://i.imgur.com/yGYYMqc.png) Et on à ceux à état de lien: qui utilise un algorithme beaucoup plus efficace. Ici, les routeurs construisent leurs tables de routage, en fonction du coût des différentes liaisons OSPF est ***un protocole de routage à état de lien***. Il a l’avantage d’avoir une ***convergence très rapide et une excellente évolutivité***. Comme tous les protocoles à état de liens, OSPF est très efficace dans son utilisation de ***la bande passante*** du réseau. RIP n'a aucun concept de retards sur le réseau et de coûts des liaisons. Les décisions de routage sont basées sur les nombres de sauts. Le chemin d'accès avec le plus faible nombre de sauts jusqu'à la destination est toujours préféré, même si le chemin d'accès plus long a une meilleure bande passante de liaison agrégée et moins de retards. La commande « ipv6 router ospf » permet d’activer OSPFv3 en globalité. Ici on choisit comme ID de processus le Numéro 1. Si plusieurs protocoles de routage sont configurés sur les routeurs, alors c’est la distance administrative qui décidera de quel protocole, le routeur utilisera. Distance administrative de 110 Parce que les deux interfaces ont le même cout OSPF, l'équilibrage de charge sera donc utilisé sur les deux liens. ________ # Partie 6 - Routage dynamique avec EIGRPv6 ![](https://i.imgur.com/jWsCCzC.png) R1 EIGRP conf t ipv6 unicast-routing ipv6 router eigrp 1 router-id 1.1.1.1 no shutdown exit interface g0/0 ipv6 eigrp 1 interface g1/0 ipv6 eigrp 1 interface s6/0 ipv6 eigrp 1 exit exit wr ![](https://i.imgur.com/wktNJz6.png) ![](https://i.imgur.com/Jo7Xf1l.png) ![](https://i.imgur.com/NXRgAwu.png) ![](https://i.imgur.com/AVBQcVw.png) ![](https://i.imgur.com/8Nl37QO.png) ![](https://i.imgur.com/EMZlgRp.png) R2 EIGRP conf t ipv6 unicast-routing ipv6 router eigrp 1 router-id 2.2.2.2 no shutdown exit interface g0/0 ipv6 eigrp 1 interface g1/0 ipv6 eigrp 1 exit exit wr ![](https://i.imgur.com/NvBWe9u.png) ![](https://i.imgur.com/4FP4EWz.png) ![](https://i.imgur.com/RCJe6ju.png) ![](https://i.imgur.com/wEHstT1.png) EIGRP est un protocole de routage à vecteur de distance ip avec optimisation permettant de minimiser l'instabilité de routage due aussi bien au changement de topologie qu'à l'utilisation de la bande passante Le protocole EIGRP dispose de caractéristiques fonctionnelles modernes : * Établit des relations de voisinage. * Mises à jour opportunes, incrémentielles, partielles avec des demandes, des réponses et des accusés de réception (économie de bande passante). * Il est multi-protocoles : il supporte aussi bien qu’IPv4/IPv6. * Il utillise l’Unicast et le Multicast 224.0.0.10 et FF02::A, Il est directement embarqué dans IP (protocole IP 88). * Convergence très rapide par nature. * Calcul anticipé de routes alternatives sans boucle (algorithme DUAL). * Métrique fine “composite” (c’est-à-dire composées de plusieurs éléments dans une formule de calcul). * Répartition de charge égale des routes, mais aussi répartition de charge inégale de routes. * Redistribution de routes. * EIGRP découvre les routeurs voisins et prend en charge la maintenance des relations de voisinage avec des paquets Hello envoyés périodiquement. -------- # Partie 7 - Attribution d'adresses ipv6 stateless ![](https://i.imgur.com/K4cy1YH.png) Commande ipv6 nd prefix permetde spécifier quelle adresse réseau doit être incluse dans les annonces ICMPv6 Utillisation de la commande no ipv6 nd prefix permet de supprimer l'adresse réseau des annonces ICMPv6 ! Définit le préfixe à annoncer et sa taille (optionnel ou non selon les versions d'IOS et de plateforme) Commande no ipv6 nd suppress-ra permet de forcer l'annonce indiquant que le routeur est passerelle pourle segment ! Ne pas supprimer les RAs (optionnel selon les plateformes et versions d'IOS) Depuis un pc entrer la commande ipconfig pour avoir l'adresse ipv6 du client et lancer ping -6 ipv6 avec l'adresse du second conf t interface g0/0 ipv6 nd prefix 2001:db8::/64 no ipv6 nd suppress-ra end debug ipv6 nd ![](https://i.imgur.com/naNHHmj.png) ![](https://i.imgur.com/Vr8PR7U.png) * Côté PC Dans /etc/network/interfaces auto eth1 iface eth1 inet6 auto Redémarrage du service réseau via « /etc/init.d/networking restart » et « ifconfig » On constate que le PC s’est auto-configuré deux adresses, rien d’étonnant, en IPv6 une interface n’est pas limitée à une seule adresse … et en plus, on a ici une adresse générée sur base du EUI-64(reconnaissable par la séquence FF:FE) et l’autre par la méthode aléatoire. Ping6 routeur depuis le PC Commande pour la table de routage IPv6 du PC pour voir la passerelle par défaut ip -6 route il manque encore quelques détails, aucune option n’est fournie, donc pas de serveur DNS etc … et malheureusement, si on applique strictement cette méthode, il n’y a pas la possibilité d’annoncer un serveur DNS ou autre. Il faut alors les configurer manuellement côté PC. La solution est donc d’utiliser un serveur DHCP en mode Stateless, pour justement fournir les détails manquant --------------------- # Partie 8 - Configuration d'un DHCP ipv6 Serveur DHCP en mode Stateless enable configure terminal ipv6 dhcp pool *poolname* ! Configure un pool d'informations de configuration DHCPv6 (Dynamic Host Configuration Protocol for IPv6) et passe en mode de configuration de pool DHCPv6. dns-server *ipv6-address* ! Spécifie les serveurs IPv6 DNS (Domain Name System) disponibles pour un client DHCPv6. domain-name *domain* ! Configure un nom de domaine pour un client DHCPv6. exit interface *type number* ! Spécifie un type et un numéro d'interface et place le périphérique en mode de configuration d'interface. ipv6 dhcp server *poolname* [rapid-commit] [preference *value*] [allow-hint] ! Active DHCPv6 sur une interface. optionnal : ipv6 nd other-config flag ! Définit l'indicateur "autre configuration avec état" dans les annonces de routeur IPv6 (RA). end Exemple: ![](https://i.imgur.com/zJOSXZP.png) ____________________________________ # Partie 9 - Tunnel 6to4 Un tunnel 6to4 automatique permet de connecter des domaines IPv6 isolés via un réseau IPv4 à des réseaux IPv6 distants. La principale différence entre les tunnels 6to4 automatiques et les tunnels configurés manuellement est que le tunnel n'est pas point à point ; c'est point à multipoint. Dans les tunnels 6to4 automatiques, les routeurs ne sont pas configurés par paires car ils traitent l'infrastructure IPv4 comme une liaison NBMA (virtual nonbroadcast multiaccess). L'adresse IPv4 intégrée à l'adresse IPv6 est utilisée pour trouver l'autre extrémité du tunnel automatique. enable configure terminal interface tunnel tunnel-number ipv6 address {ipv6-address / prefix-length | prefix-name sub-bits/prefix-length tunnel source {ip-address| interface-t ype interface-number tunnel mode ipv6ip {6rd | 6to4 | auto-tunnel | isatap exit ipv6 route [vrf vrf-name] ipv6-prefix / prefix-length{ipv6-address | interface-type interface-number [ipv6-address] [nexthop-vrf [vrf-name1 | default]] [administrative-distance] [administrative-multicast-distance | unicast | multicast] [next-hop-address] [tag tag] enable conf t interface tunnel 0 no ip address no ip redirects ipv6 address 2002:C0A8:0001::/48 ! Adresse ipv4 du tunnel = adresse interface reliée à l'autre routeur (ici 192.168.0.1) Cette adresse est codée dans l'adresse 6to4 du tunnel Conversion de 192.168.0.1 en hexadecimal donne C0.A8.00.01 Cela donne 2002:C0A8:0001::/48 dans l'adresse 6to4 2002:C0A8:0001::/48 tunnel source *adresse* tunnel mode ipv6ip 6to4 exit Puis ajouter les routes ipv6 route 2002:C0A8:0002::/48 Tunnel 0 ipv6 route 2001:db8:2::2/64 2002:C0A8:00:02::

    Import from clipboard

    Paste your markdown or webpage here...

    Advanced permission required

    Your current role can only read. Ask the system administrator to acquire write and comment permission.

    This team is disabled

    Sorry, this team is disabled. You can't edit this note.

    This note is locked

    Sorry, only owner can edit this note.

    Reach the limit

    Sorry, you've reached the max length this note can be.
    Please reduce the content or divide it to more notes, thank you!

    Import from Gist

    Import from Snippet

    or

    Export to Snippet

    Are you sure?

    Do you really want to delete this note?
    All users will lose their connection.

    Create a note from template

    Create a note from template

    Oops...
    This template has been removed or transferred.
    Upgrade
    All
    • All
    • Team
    No template.

    Create a template

    Upgrade

    Delete template

    Do you really want to delete this template?
    Turn this template into a regular note and keep its content, versions, and comments.

    This page need refresh

    You have an incompatible client version.
    Refresh to update.
    New version available!
    See releases notes here
    Refresh to enjoy new features.
    Your user state has changed.
    Refresh to load new user state.

    Sign in

    Forgot password

    or

    By clicking below, you agree to our terms of service.

    Sign in via Facebook Sign in via Twitter Sign in via GitHub Sign in via Dropbox Sign in with Wallet
    Wallet ( )
    Connect another wallet

    New to HackMD? Sign up

    Help

    • English
    • 中文
    • Français
    • Deutsch
    • 日本語
    • Español
    • Català
    • Ελληνικά
    • Português
    • italiano
    • Türkçe
    • Русский
    • Nederlands
    • hrvatski jezik
    • język polski
    • Українська
    • हिन्दी
    • svenska
    • Esperanto
    • dansk

    Documents

    Help & Tutorial

    How to use Book mode

    Slide Example

    API Docs

    Edit in VSCode

    Install browser extension

    Contacts

    Feedback

    Discord

    Send us email

    Resources

    Releases

    Pricing

    Blog

    Policy

    Terms

    Privacy

    Cheatsheet

    Syntax Example Reference
    # Header Header 基本排版
    - Unordered List
    • Unordered List
    1. Ordered List
    1. Ordered List
    - [ ] Todo List
    • Todo List
    > Blockquote
    Blockquote
    **Bold font** Bold font
    *Italics font* Italics font
    ~~Strikethrough~~ Strikethrough
    19^th^ 19th
    H~2~O H2O
    ++Inserted text++ Inserted text
    ==Marked text== Marked text
    [link text](https:// "title") Link
    ![image alt](https:// "title") Image
    `Code` Code 在筆記中貼入程式碼
    ```javascript
    var i = 0;
    ```
    var i = 0;
    :smile: :smile: Emoji list
    {%youtube youtube_id %} Externals
    $L^aT_eX$ LaTeX
    :::info
    This is a alert area.
    :::

    This is a alert area.

    Versions and GitHub Sync
    Get Full History Access

    • Edit version name
    • Delete

    revision author avatar     named on  

    More Less

    Note content is identical to the latest version.
    Compare
      Choose a version
      No search result
      Version not found
    Sign in to link this note to GitHub
    Learn more
    This note is not linked with GitHub
     

    Feedback

    Submission failed, please try again

    Thanks for your support.

    On a scale of 0-10, how likely is it that you would recommend HackMD to your friends, family or business associates?

    Please give us some advice and help us improve HackMD.

     

    Thanks for your feedback

    Remove version name

    Do you want to remove this version name and description?

    Transfer ownership

    Transfer to
      Warning: is a public team. If you transfer note to this team, everyone on the web can find and read this note.

        Link with GitHub

        Please authorize HackMD on GitHub
        • Please sign in to GitHub and install the HackMD app on your GitHub repo.
        • HackMD links with GitHub through a GitHub App. You can choose which repo to install our App.
        Learn more  Sign in to GitHub

        Push the note to GitHub Push to GitHub Pull a file from GitHub

          Authorize again
         

        Choose which file to push to

        Select repo
        Refresh Authorize more repos
        Select branch
        Select file
        Select branch
        Choose version(s) to push
        • Save a new version and push
        • Choose from existing versions
        Include title and tags
        Available push count

        Pull from GitHub

         
        File from GitHub
        File from HackMD

        GitHub Link Settings

        File linked

        Linked by
        File path
        Last synced branch
        Available push count

        Danger Zone

        Unlink
        You will no longer receive notification when GitHub file changes after unlink.

        Syncing

        Push failed

        Push successfully