openvpn.html 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>Example Configuration for direct peer to peer | dn42 wiki</title>
  6. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  7. <meta name="robots" content="index, follow">
  8. <meta name="keywords" content="dn42,wiki,routing,bgp">
  9. <link rel="canonical" href="https://dn42.obl.ong/howto/openvpn.html">
  10. <link rel="icon" type="image/x-icon" href="/favicon.ico">
  11. <link rel="shortcut icon" type="image/x-icon" href="/favicon.ico">
  12. <link rel="author" type="text/html" href="/docs/people">
  13. <link rel="stylesheet" href="/css/normalize.css">
  14. <link rel="stylesheet" href="/css/simple.min.css">
  15. <link rel="stylesheet" href="/css/style.css">
  16. <link rel="stylesheet" href="/css/menu.css">
  17. </head>
  18. <body>
  19. <header>
  20. <b>dn42 wiki / Example Configuration for direct peer to peer</b>
  21. <div id="dn42_header">
  22. <p><a href="/"><img src="/dn42.png" alt="dn42" /></a></p>
  23. </div>
  24. </header>
  25. <main>
  26. <h1 id="example-configuration-for-direct-peer-to-peer">Example Configuration for direct peer to peer</h1>
  27. <ul>
  28. <li>Replace <code class="language-plaintext highlighter-rouge">&lt;PEER_NAME&gt;</code> with a self chosen name to identify this peer</li>
  29. <li>Replace <code class="language-plaintext highlighter-rouge">&lt;PROTO&gt;</code> with either <code class="language-plaintext highlighter-rouge">udp</code> or <code class="language-plaintext highlighter-rouge">udp6</code>, depending if you reach your remote peer with ipv4 o ipv6</li>
  30. <li>Replace <code class="language-plaintext highlighter-rouge">&lt;REMOTE_HOST&gt;</code> with the public ip address of your peer</li>
  31. <li>Replace <code class="language-plaintext highlighter-rouge">&lt;REMOTE_PORT&gt;</code> with the port number, where your peer’s openvpn daemon listen for traffic</li>
  32. <li>Replace <code class="language-plaintext highlighter-rouge">&lt;LOCAL_HOST&gt;</code> with your public ip</li>
  33. <li>Replace <code class="language-plaintext highlighter-rouge">&lt;INTERFACE_NAME&gt;</code> with a self chosen name, this will be the name of your network interface (tun device) for this peering</li>
  34. <li>Replace <code class="language-plaintext highlighter-rouge">&lt;LOCAL_GATEWAY_IP&gt;</code> with your own dn42 ip address</li>
  35. <li>Replace <code class="language-plaintext highlighter-rouge">&lt;REMOTE_GATEWAY_IP&gt;</code> with dn42 ip address of your peer</li>
  36. <li><code class="language-plaintext highlighter-rouge">&lt;LOCAL_GATEWAY_IPV6&gt; &lt;REMOTE_GATEWAY_IPV6&gt;</code> same as ipv4, but both ip addresses needs to be in the same subnet. For simplicity you can always use an address from link-local ipv6 range (fe80::/64)</li>
  37. </ul>
  38. <div class="language-conf highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c">#/etc/openvpn/&lt;PEER_NAME&gt;
  39. </span><span class="n">proto</span> &lt;<span class="n">PROTO</span>&gt;
  40. <span class="n">mode</span> <span class="n">p2p</span>
  41. <span class="n">remote</span> &lt;<span class="n">REMOTE_HOST</span>&gt;
  42. <span class="n">rport</span> &lt;<span class="n">REMOTE_PORT</span>&gt;
  43. <span class="n">local</span> &lt;<span class="n">LOCAL_HOST</span>&gt;
  44. <span class="n">lport</span> &lt;<span class="n">LOCAL_PORT</span>&gt;
  45. <span class="n">dev</span>-<span class="n">type</span> <span class="n">tun</span>
  46. <span class="n">tun</span>-<span class="n">ipv6</span>
  47. <span class="n">resolv</span>-<span class="n">retry</span> <span class="n">infinite</span>
  48. <span class="n">dev</span> &lt;<span class="n">INTERFACE_NAME</span>&gt;
  49. <span class="n">comp</span>-<span class="n">lzo</span>
  50. <span class="n">persist</span>-<span class="n">key</span>
  51. <span class="n">persist</span>-<span class="n">tun</span>
  52. <span class="n">cipher</span> <span class="n">aes</span>-<span class="m">256</span>-<span class="n">cbc</span>
  53. <span class="n">ifconfig</span>-<span class="n">ipv6</span> &lt;<span class="n">LOCAL_GATEWAY_IPV6</span>&gt; &lt;<span class="n">REMOTE_GATEWAY_IPV6</span>&gt;
  54. <span class="n">ifconfig</span> &lt;<span class="n">LOCAL_GATEWAY_IP</span>&gt; &lt;<span class="n">REMOTE_GATEWAY_IP</span>&gt;
  55. <span class="n">secret</span> /<span class="n">etc</span>/<span class="n">openvpn</span>/&lt;<span class="n">PEER_NAME</span>&gt;.<span class="n">key</span>
  56. <span class="c"># The secret can also be included inline with the config by
  57. # wrapping it in &lt;secret&gt;&lt;/secret&gt; tags.
  58. # &lt;secret&gt;
  59. # ... Key File contents go here ...
  60. # &lt;/secret&gt;
  61. </span></code></pre></div></div>
  62. <p>then create a new key and share it with your peer</p>
  63. <div class="language-sh highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nv">$ </span>openvpn <span class="nt">--genkey</span> <span class="nt">--secret</span> /etc/openvpn/&lt;PEER_NAME&gt;.key
  64. </code></pre></div></div>
  65. <h1 id="example-configuration-if-one-peer-has-a-floating-ip">Example Configuration if one peer has a floating ip</h1>
  66. <h2 id="peer-with-fixed-ip">peer with fixed ip</h2>
  67. <div class="language-conf highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">proto</span> &lt;<span class="n">PROTO</span>&gt;
  68. <span class="n">mode</span> <span class="n">p2p</span>
  69. <span class="n">dev</span>-<span class="n">type</span> <span class="n">tun</span>
  70. <span class="n">comp</span>-<span class="n">lzo</span>
  71. <span class="n">dev</span> &lt;<span class="n">INTERFACE_NAME</span>&gt;
  72. <span class="n">persist</span>-<span class="n">key</span>
  73. <span class="n">persist</span>-<span class="n">tun</span>
  74. <span class="n">tun</span>-<span class="n">ipv6</span>
  75. <span class="n">cipher</span> <span class="n">aes</span>-<span class="m">256</span>-<span class="n">cbc</span>
  76. <span class="n">resolv</span>-<span class="n">retry</span> <span class="n">infinite</span>
  77. <span class="n">float</span>
  78. <span class="n">port</span> &lt;<span class="n">LOCAL_PORT</span>&gt;
  79. <span class="n">ifconfig</span>-<span class="n">ipv6</span> &lt;<span class="n">LOCAL_GATEWAY_IPV6</span>&gt; &lt;<span class="n">REMOTE_GATEWAY_IPV6</span>&gt;
  80. <span class="n">ifconfig</span> &lt;<span class="n">LOCAL_GATEWAY_IP</span>&gt; &lt;<span class="n">REMOTE_GATEWAY_IP</span>&gt;
  81. <span class="n">secret</span> /<span class="n">etc</span>/<span class="n">openvpn</span>/&lt;<span class="n">PEER_NAME</span>&gt;.<span class="n">key</span>
  82. </code></pre></div></div>
  83. <h2 id="peer-with-floating-ip">peer with floating ip</h2>
  84. <ul>
  85. <li>Notice the local gateway ip of your peer is your remote gateway ip and
  86. his remote gateway is your local gateway</li>
  87. <li><code class="language-plaintext highlighter-rouge">&lt;REMOTE_HOST&gt;</code> is the ip address of your peer</li>
  88. <li><code class="language-plaintext highlighter-rouge">&lt;REMOTE_PORT&gt;</code> is openvpn port, where your peer listen for traffic</li>
  89. </ul>
  90. <div class="language-conf highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">proto</span> &lt;<span class="n">PROTO</span>&gt;
  91. <span class="n">mode</span> <span class="n">p2p</span>
  92. <span class="n">remote</span> &lt;<span class="n">REMOTE_HOST</span>&gt;
  93. <span class="n">rport</span> &lt;<span class="n">REMOTE_PORT</span>&gt;
  94. <span class="n">lport</span> <span class="n">float</span>
  95. <span class="n">dev</span>-<span class="n">type</span> <span class="n">tun</span>
  96. <span class="n">tun</span>-<span class="n">ipv6</span>
  97. <span class="n">dev</span> &lt;<span class="n">INTERFACE_NAME</span>&gt;
  98. <span class="n">comp</span>-<span class="n">lzo</span>
  99. <span class="n">persist</span>-<span class="n">key</span>
  100. <span class="n">persist</span>-<span class="n">tun</span>
  101. <span class="n">cipher</span> <span class="n">aes</span>-<span class="m">256</span>-<span class="n">cbc</span>
  102. <span class="n">resolv</span>-<span class="n">retry</span> <span class="n">infinite</span>
  103. <span class="n">ifconfig</span> &lt;<span class="n">LOCAL_GATEWAY_IP</span>&gt; &lt;<span class="n">REMOTE_GATEWAY_IP</span>&gt;
  104. <span class="n">ifconfig</span>-<span class="n">ipv6</span> &lt;<span class="n">LOCAL_GATEWAY_IPV6</span>&gt; &lt;<span class="n">LOCAL_GATEWAY_IPV6</span>&gt;
  105. <span class="n">secret</span> /<span class="n">etc</span>/<span class="n">openvpn</span>/&lt;<span class="n">PEER_NAME</span>&gt;.<span class="n">key</span>
  106. </code></pre></div></div>
  107. <h1 id="example-configuration-for-connecting-roaming-clients-to-dn42">Example configuration for connecting roaming clients to dn42</h1>
  108. <p>Clients connect using certificates, and simply get attributed dn42 IPs in the order they connect. This is useful for roaming clients, where you don’t really care which IP you have. Note that once a client has connected for the first time, it will keep the same IP on subsequent connections (option <code class="language-plaintext highlighter-rouge">ifconfig-pool-persist</code>).</p>
  109. <h2 id="server-configuration">Server configuration</h2>
  110. <p>Replace <code class="language-plaintext highlighter-rouge">&lt;PORT&gt;</code> with the UDP port you want OpenVPN to listen to, and change the IP ranges (<code class="language-plaintext highlighter-rouge">ifconfig</code> and <code class="language-plaintext highlighter-rouge">route-gateway</code> options).</p>
  111. <div class="language-conf highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">mode</span> <span class="n">server</span>
  112. <span class="n">tls</span>-<span class="n">server</span>
  113. <span class="n">dh</span> <span class="n">dh2048</span>.<span class="n">pem</span>
  114. <span class="n">cipher</span> <span class="n">aes</span>-<span class="m">256</span>-<span class="n">cbc</span>
  115. <span class="n">ca</span> <span class="n">keys</span>/<span class="n">ca</span>.<span class="n">crt</span>
  116. <span class="n">cert</span> <span class="n">keys</span>/<span class="n">roaming</span>-<span class="n">dn42</span>.<span class="n">crt</span>
  117. <span class="n">key</span> <span class="n">keys</span>/<span class="n">roaming</span>-<span class="n">dn42</span>.<span class="n">key</span>
  118. <span class="n">client</span>-<span class="n">config</span>-<span class="n">dir</span> /<span class="n">etc</span>/<span class="n">openvpn</span>/<span class="n">roaming</span>
  119. <span class="n">dev</span> <span class="n">tun</span>-<span class="n">roaming</span>
  120. <span class="n">persist</span>-<span class="n">tun</span>
  121. <span class="n">tun</span>-<span class="n">ipv6</span>
  122. <span class="n">tun</span>-<span class="n">mtu</span> <span class="m">1500</span>
  123. <span class="n">fragment</span> <span class="m">1300</span>
  124. <span class="n">mssfix</span>
  125. <span class="n">log</span> /<span class="n">var</span>/<span class="n">log</span>/<span class="n">openvpn</span>-<span class="n">dn42</span>-<span class="n">roaming</span>.<span class="n">log</span>
  126. <span class="n">status</span> /<span class="n">var</span>/<span class="n">log</span>/<span class="n">openvpn</span>-<span class="n">dn42</span>-<span class="n">roaming</span>-<span class="n">status</span>.<span class="n">log</span> <span class="m">60</span>
  127. <span class="c"># Should work for both IPv4 and IPv6
  128. </span><span class="n">proto</span> <span class="n">udp6</span>
  129. <span class="n">port</span> &lt;<span class="n">PORT</span>&gt;
  130. <span class="c"># IPv6
  131. ###tun-ipv6
  132. ###push tun-ipv6
  133. ###ifconfig-ipv6 2001:db8:42:42::1 2001:db8:42:42::2
  134. ###ifconfig-ipv6-pool 2001:db8:42:42::3/64
  135. </span>
  136. <span class="n">topology</span> <span class="n">subnet</span>
  137. <span class="n">push</span> <span class="s2">"topology subnet"</span>
  138. <span class="n">keepalive</span> <span class="m">10</span> <span class="m">60</span>
  139. <span class="c"># That's 172.22.X.144/28 (172.22.X.144 to 172.22.X.159)
  140. </span><span class="n">ifconfig</span> <span class="m">172</span>.<span class="m">22</span>.<span class="n">X</span>.<span class="m">145</span> <span class="m">255</span>.<span class="m">255</span>.<span class="m">255</span>.<span class="m">240</span>
  141. <span class="n">ifconfig</span>-<span class="n">pool</span> <span class="m">172</span>.<span class="m">22</span>.<span class="n">X</span>.<span class="m">146</span> <span class="m">172</span>.<span class="m">22</span>.<span class="n">X</span>.<span class="m">158</span> <span class="m">255</span>.<span class="m">255</span>.<span class="m">255</span>.<span class="m">240</span>
  142. <span class="n">ifconfig</span>-<span class="n">pool</span>-<span class="n">persist</span> <span class="n">pool</span>-<span class="n">persist</span>.<span class="n">txt</span>
  143. <span class="n">push</span> <span class="s2">"route-gateway 172.22.X.145"</span>
  144. <span class="n">push</span> <span class="s2">"route 172.22.0.0 255.254.0.0"</span>
  145. <span class="c">###push "route 172.31.0.0 255.255.0.0"
  146. ###push "route 10.0.0.0 255.0.0.0"
  147. </span></code></pre></div></div>
  148. <h2 id="client-configuration">Client configuration</h2>
  149. <p>Change <code class="language-plaintext highlighter-rouge">&lt;SERVER&gt;</code> and <code class="language-plaintext highlighter-rouge">&lt;PORT&gt;</code>.</p>
  150. <div class="language-conf highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">client</span>
  151. <span class="n">ca</span> <span class="n">ca</span>.<span class="n">crt</span>
  152. <span class="n">cert</span> <span class="n">myclient</span>.<span class="n">crt</span>
  153. <span class="n">key</span> <span class="n">myclient</span>.<span class="n">key</span>
  154. <span class="n">dev</span> <span class="n">tun</span>
  155. <span class="n">proto</span> <span class="n">udp6</span>
  156. <span class="n">cipher</span> <span class="n">aes</span>-<span class="m">256</span>-<span class="n">cbc</span>
  157. <span class="n">remote</span> &lt;<span class="n">SERVER</span>&gt; &lt;<span class="n">PORT</span>&gt;
  158. <span class="n">tun</span>-<span class="n">mtu</span> <span class="m">1500</span>
  159. <span class="n">fragment</span> <span class="m">1300</span>
  160. <span class="n">mssfix</span>
  161. <span class="n">route</span>-<span class="n">delay</span> <span class="m">2</span>
  162. <span class="n">nobind</span>
  163. <span class="n">persist</span>-<span class="n">key</span>
  164. <span class="n">persist</span>-<span class="n">tun</span>
  165. <span class="n">resolv</span>-<span class="n">retry</span> <span class="n">infinite</span>
  166. <span class="n">verb</span> <span class="m">3</span>
  167. </code></pre></div></div>
  168. <h2 id="certificate-management">Certificate management</h2>
  169. <p>Use easy-rsa, it’s easy to use. Below is a very short description, find a real tutorial if you don’t know how it works.</p>
  170. <p>Build the CA: <code class="language-plaintext highlighter-rouge">. vars</code>, <code class="language-plaintext highlighter-rouge">./build-ca</code>, then generate the server key: <code class="language-plaintext highlighter-rouge">./build-key-server roaming-dn42</code>.</p>
  171. <p>Then, for each client, generate a private key and a certificate: <code class="language-plaintext highlighter-rouge">./build-key myclient</code>. The Common Name is the only important information (it will be used to identify the client, for instance in the logs).</p>
  172. <h1 id="see-also">See also</h1>
  173. <ul>
  174. <li><a href="/howto/networksettings">Network settings</a></li>
  175. </ul>
  176. <h1 id="external-links">External Links</h1>
  177. <ul>
  178. <li>multicast:</li>
  179. <li><strong>OpenVPN</strong></li>
  180. <li><a href="https://community.openvpn.net/openvpn/ticket/79">Optimizations for multicast over TAP w/ OpenVPN</a></li>
  181. <li>
  182. <p><a href="http://forums.openvpn.net/topic8036.html">Sending multicast over a openvpn tunnel</a></p>
  183. </li>
  184. <li><strong>RFC</strong></li>
  185. <li><a href="https://tools.ietf.org/html/rfc3306">IPv6 - RFC3306</a></li>
  186. <li><a href="https://en.wikipedia.org/wiki/Multicast_address#GLOP_addressing">IPv4 - multicast</a></li>
  187. <li><a href="http://labs.spritelink.net/glop">IPv4 - GLOB calculator</a></li>
  188. <li><a href="http://tools.ietf.org/html/rfc3180">RFC3108 GLOP Addressing in 233/8</a></li>
  189. <li><a href="https://tools.ietf.org/html/rfc3138">RFC3138 Extended Assignments in 233/8</a></li>
  190. </ul>
  191. <div id="menu-container" class="menu-container">
  192. <hr>
  193. <div id="menu" class="menu">
  194. <ul>
  195. <li><a href="/Home">Home</a>
  196. <ul>
  197. <li><a href="/howto/Getting-Started">Getting Started</a></li>
  198. <li><a href="/howto/Registry-Authentication">Registry Authentication</a></li>
  199. <li><a href="/howto/Address-Space">Address Space</a></li>
  200. <li><a href="/howto/BGP-communities">BGP communities</a></li>
  201. <li><a href="/FAQ">FAQ</a></li>
  202. </ul>
  203. </li>
  204. <li>How-To
  205. <ul>
  206. <li><a href="/howto/wireguard">Wireguard</a></li>
  207. <li><a href="/howto/openvpn">Openvpn</a></li>
  208. <li><a href="/howto/IPsec-with-PublicKeys">IPsec With Public Keys</a></li>
  209. <li><a href="/howto/tinc">Tinc</a></li>
  210. <li><a href="/howto/GRE-on-FreeBSD">GRE on FreeBSD</a></li>
  211. <li><a href="/howto/GRE-on-OpenBSD">GRE on OpenBSD</a></li>
  212. <li><a href="/howto/IPv6-Multicast">IPv6 Multicast (PIM-SM)</a></li>
  213. <li><a href="/howto/multicast">SSM Multicast</a></li>
  214. <li><a href="/howto/mpls">MPLS</a></li>
  215. <li><a href="/howto/Bird2">Bird2</a></li>
  216. <li><a href="/howto/frr">FRRouting</a></li>
  217. <li><a href="/howto/OpenBGPD">OpenBGPD</a></li>
  218. <li><a href="/howto/mikrotik">Mikrotik RouterOS</a></li>
  219. <li><a href="/howto/EdgeOS-Config">EdgeRouter</a></li>
  220. <li><a href="/howto/Static-routes-on-Windows">Static routes on Windows</a></li>
  221. <li><a href="/howto/networksettings">Universal Network Requirements</a></li>
  222. <li><a href="/howto/vyos1.4.x">VyOS</a></li>
  223. <li><a href="/howto/nixos">NixOS</a></li>
  224. </ul>
  225. </li>
  226. <li>Services
  227. <ul>
  228. <li><a href="/services/IRC">IRC</a></li>
  229. <li><a href="/services/Whois">Whois registry</a></li>
  230. <li><a href="/services/DNS">DNS</a></li>
  231. <li><a href="/services/IX-Collection">IX Collection</a></li>
  232. <li><a href="/services/Clearnet-Domains">Public DNS</a></li>
  233. <li><a href="/services/Looking-Glasses">Looking Glasses</a></li>
  234. <li><a href="/services/Automatic-Peering">Automatic Peering</a></li>
  235. <li><a href="/services/Repository-Mirrors">Repository Mirrors</a></li>
  236. <li><a href="/services/Distributed-Wiki">Distributed Wiki</a></li>
  237. <li><a href="/services/Certificate-Authority">Certificate Authority</a></li>
  238. <li><a href="/services/Route-Collector">Route Collector</a></li>
  239. </ul>
  240. </li>
  241. <li>Internal
  242. <ul>
  243. <li><a href="/internal/Internal-Services">Internal services</a></li>
  244. <li><a href="/internal/Interconnections">Interconnections</a></li>
  245. <li><a href="/internal/APIs">APIs</a></li>
  246. <li><a href="/internal/ShowAndTell">Show and Tell</a></li>
  247. <li><a href="/internal/Historical-Services">Historical services</a></li>
  248. </ul>
  249. </li>
  250. <li>Historical
  251. <ul>
  252. <li><a href="/historical/Bird">Bird 1</a></li>
  253. <li><a href="/historical/Quagga">Quagga</a></li>
  254. </ul>
  255. </li>
  256. <li>External Tools
  257. <ul>
  258. <li><a href="https://paste.dn42.us">Paste Board</a></li>
  259. <li><a href="https://git.dn42.dev">Git Repositories</a></li>
  260. </ul>
  261. </li>
  262. </ul>
  263. <hr />
  264. </div>
  265. </div>
  266. </main>
  267. <footer><div class="center">
  268. <div id="dn42_footer">
  269. <table>
  270. <tbody>
  271. <tr>
  272. <td>Hosted by: <a href="mailto:dn42@burble.com">BURBLE-MNT</a>, <a href="mailto:nurtic-vibe@grmml.net">GRMML-MNT</a>, <a href="mailto:xuu@dn42.us">XUU-MNT</a>, <a href="mailto:janeric@ortgies.it">JAN-MNT</a>, <a href="mailto:lare@lare.cc">LARE-MNT</a>, <a href="mailto:danny@saru.moe">SARU-MNT</a>, <a href="mailto:androw95220@gmail.com">ANDROW-MNT</a>, <a href="mailto:dn42@mk16.de">MARK22K-MNT</a></td>
  273. <td>Accessible via: <a href="https://wiki.dn42">dn42</a>, <a href="https://dn42.dev/">dn42.dev</a>, <a href="https://dn42.eu/">dn42.eu</a>, <a href="https://wiki.dn42.us/">wiki.dn42.us</a>, <a href="https://dn42.de/">dn42.de</a> (IPv6-only), <a href="https://dn42.cc/">dn42.cc</a> (wiki-ng), <a href="https://dn42.wiki/">dn42.wiki</a>, <a href="https://dn42.pp.ua/">dn42.pp.ua</a>, <a href="https://dn42.obl.ong/">dn42.obl.ong</a></td>
  274. </tr>
  275. </tbody>
  276. </table>
  277. </div>
  278. </div>
  279. </footer>
  280. </body>
  281. </html>