<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>站点到站点VPN on KnightLi的博客</title>
        <link>https://www.knightli.com/tags/%E7%AB%99%E7%82%B9%E5%88%B0%E7%AB%99%E7%82%B9vpn/</link>
        <description>Recent content in 站点到站点VPN on KnightLi的博客</description>
        <generator>Hugo -- gohugo.io</generator>
        <language>zh-cn</language>
        <lastBuildDate>Thu, 14 Apr 2022 00:00:00 +0000</lastBuildDate><atom:link href="https://www.knightli.com/tags/%E7%AB%99%E7%82%B9%E5%88%B0%E7%AB%99%E7%82%B9vpn/index.xml" rel="self" type="application/rss+xml" /><item>
        <title>使用openwrt,Wireguard将异地的2个网段通过Internet连接到一起</title>
        <link>https://www.knightli.com/2022/04/14/openwrt-wireguard-connect-two-network/</link>
        <pubDate>Thu, 14 Apr 2022 00:00:00 +0000</pubDate>
        
        <guid>https://www.knightli.com/2022/04/14/openwrt-wireguard-connect-two-network/</guid>
        <description>&lt;h2 id=&#34;目的&#34;&gt;目的
&lt;/h2&gt;&lt;p&gt;异地有2个局域网，都可以访问Internet, 互相之间不连通。 希望通过internet把2个局域网连接到一起，2个局域网内的主机可以互相访问服务，就像在一个局域网内。但是上网的流量还走原来的，不改变。&lt;/p&gt;
&lt;h2 id=&#34;网络要求&#34;&gt;网络要求
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;最少在一端有一个外网IP地址(可以不是固定IP)&lt;/li&gt;
&lt;li&gt;2个局域网内都有openwrt系统,并且安装了Wireguard.(其他可安装Wireguard的系统都可以,Openwrt相对更便宜)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;安装和配置&#34;&gt;安装和配置
&lt;/h2&gt;&lt;h3 id=&#34;生成-privatekey-和-publickey&#34;&gt;生成 privatekey 和 publickey
&lt;/h3&gt;&lt;p&gt;每个接口都需要一个privatekey和publickey, 有几个接口就要生成及对, 这里需要生成2对，供两个接口使用&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;wg genkey | tee privatekey1 | wg pubkey &amp;gt; publickey1
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;wg genkey | tee privatekey2 | wg pubkey &amp;gt; publickey2
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;openwrt界面设置&#34;&gt;openwrt界面设置
&lt;/h3&gt;&lt;h4 id=&#34;节点1配置&#34;&gt;节点1配置
&lt;/h4&gt;&lt;p&gt;&lt;img src=&#34;https://www.knightli.com/2022/04/14/openwrt-wireguard-connect-two-network/1-1.png&#34;
	width=&#34;920&#34;
	height=&#34;659&#34;
	srcset=&#34;https://www.knightli.com/2022/04/14/openwrt-wireguard-connect-two-network/1-1_hu_c2a7f51c43297147.png 480w, https://www.knightli.com/2022/04/14/openwrt-wireguard-connect-two-network/1-1_hu_7631f6a1da1faa3d.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;节点1配置&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;139&#34;
		data-flex-basis=&#34;335px&#34;
	
&gt;&lt;br&gt;
&lt;img src=&#34;https://www.knightli.com/2022/04/14/openwrt-wireguard-connect-two-network/1-2.png&#34;
	width=&#34;1018&#34;
	height=&#34;704&#34;
	srcset=&#34;https://www.knightli.com/2022/04/14/openwrt-wireguard-connect-two-network/1-2_hu_9b55620b22a03798.png 480w, https://www.knightli.com/2022/04/14/openwrt-wireguard-connect-two-network/1-2_hu_49e5cdfa69c64bc2.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;节点1配置&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;144&#34;
		data-flex-basis=&#34;347px&#34;
	
&gt;&lt;br&gt;
&lt;img src=&#34;https://www.knightli.com/2022/04/14/openwrt-wireguard-connect-two-network/1-3.png&#34;
	width=&#34;966&#34;
	height=&#34;627&#34;
	srcset=&#34;https://www.knightli.com/2022/04/14/openwrt-wireguard-connect-two-network/1-3_hu_d65737e210497692.png 480w, https://www.knightli.com/2022/04/14/openwrt-wireguard-connect-two-network/1-3_hu_f6de794aa9e2c90d.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;节点1配置&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;154&#34;
		data-flex-basis=&#34;369px&#34;
	
&gt;&lt;br&gt;
&lt;img src=&#34;https://www.knightli.com/2022/04/14/openwrt-wireguard-connect-two-network/1-4.png&#34;
	width=&#34;1045&#34;
	height=&#34;543&#34;
	srcset=&#34;https://www.knightli.com/2022/04/14/openwrt-wireguard-connect-two-network/1-4_hu_d2ed538c4a426754.png 480w, https://www.knightli.com/2022/04/14/openwrt-wireguard-connect-two-network/1-4_hu_3a9d4c57baa53bd5.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;节点1配置&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;192&#34;
		data-flex-basis=&#34;461px&#34;
	
&gt;&lt;br&gt;
&lt;img src=&#34;https://www.knightli.com/2022/04/14/openwrt-wireguard-connect-two-network/1-5.png&#34;
	width=&#34;983&#34;
	height=&#34;911&#34;
	srcset=&#34;https://www.knightli.com/2022/04/14/openwrt-wireguard-connect-two-network/1-5_hu_73206a862a240e0e.png 480w, https://www.knightli.com/2022/04/14/openwrt-wireguard-connect-two-network/1-5_hu_578785124365f0de.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;节点1配置&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;107&#34;
		data-flex-basis=&#34;258px&#34;
	
&gt;&lt;/p&gt;
&lt;h4 id=&#34;节点2配置&#34;&gt;节点2配置
&lt;/h4&gt;&lt;p&gt;&lt;img src=&#34;https://www.knightli.com/2022/04/14/openwrt-wireguard-connect-two-network/2-1.png&#34;
	width=&#34;962&#34;
	height=&#34;672&#34;
	srcset=&#34;https://www.knightli.com/2022/04/14/openwrt-wireguard-connect-two-network/2-1_hu_20402c84c961257d.png 480w, https://www.knightli.com/2022/04/14/openwrt-wireguard-connect-two-network/2-1_hu_38e91d47c7dd5c96.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;节点2配置&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;143&#34;
		data-flex-basis=&#34;343px&#34;
	
&gt;&lt;br&gt;
&lt;img src=&#34;https://www.knightli.com/2022/04/14/openwrt-wireguard-connect-two-network/2-2.png&#34;
	width=&#34;999&#34;
	height=&#34;560&#34;
	srcset=&#34;https://www.knightli.com/2022/04/14/openwrt-wireguard-connect-two-network/2-2_hu_8b5b658b48bff2f5.png 480w, https://www.knightli.com/2022/04/14/openwrt-wireguard-connect-two-network/2-2_hu_3c0b35eba56c4ef4.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;节点2配置&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;178&#34;
		data-flex-basis=&#34;428px&#34;
	
&gt;&lt;br&gt;
&lt;img src=&#34;https://www.knightli.com/2022/04/14/openwrt-wireguard-connect-two-network/2-3.png&#34;
	width=&#34;906&#34;
	height=&#34;611&#34;
	srcset=&#34;https://www.knightli.com/2022/04/14/openwrt-wireguard-connect-two-network/2-3_hu_75d6e2dd9ab9e02f.png 480w, https://www.knightli.com/2022/04/14/openwrt-wireguard-connect-two-network/2-3_hu_152d1a20243b50a9.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;节点2配置&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;148&#34;
		data-flex-basis=&#34;355px&#34;
	
&gt;&lt;br&gt;
&lt;img src=&#34;https://www.knightli.com/2022/04/14/openwrt-wireguard-connect-two-network/2-4.png&#34;
	width=&#34;999&#34;
	height=&#34;544&#34;
	srcset=&#34;https://www.knightli.com/2022/04/14/openwrt-wireguard-connect-two-network/2-4_hu_edd24e738c4ca659.png 480w, https://www.knightli.com/2022/04/14/openwrt-wireguard-connect-two-network/2-4_hu_dc55f1221f1fba51.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;节点2配置&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;183&#34;
		data-flex-basis=&#34;440px&#34;
	
&gt;&lt;br&gt;
&lt;img src=&#34;https://www.knightli.com/2022/04/14/openwrt-wireguard-connect-two-network/2-5.png&#34;
	width=&#34;982&#34;
	height=&#34;918&#34;
	srcset=&#34;https://www.knightli.com/2022/04/14/openwrt-wireguard-connect-two-network/2-5_hu_57fecf08be2a9a38.png 480w, https://www.knightli.com/2022/04/14/openwrt-wireguard-connect-two-network/2-5_hu_5ded78f8a88d4148.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;节点2配置&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;106&#34;
		data-flex-basis=&#34;256px&#34;
	
&gt;&lt;/p&gt;
&lt;h3 id=&#34;只有动态ip时的脚本&#34;&gt;只有动态Ip时的脚本
&lt;/h3&gt;&lt;p&gt;如果只有一个动态IP, 当重新拨号，IP改变，会造成连接断开。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;无公网IP端需要检测到断线，&lt;/li&gt;
&lt;li&gt;然后重新启动dnsmasq(/etc/init.d/dnsmasq restart) 重新启动后才能更新到新的动态Ip(需要有公网IP端主动更新动态域名)&lt;/li&gt;
&lt;li&gt;无公网IP端主动重新建立连接&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;完整的脚本如下，需要加入到crontab中&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;16
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;17
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;18
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;cp&#34;&gt;#!/bin/sh
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;DATE&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;$(&lt;/span&gt;date +%Y-%m-%d&lt;span class=&#34;s2&#34;&gt;&amp;#34; &amp;#34;&lt;/span&gt;%H:%M:%S&lt;span class=&#34;k&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;CHECKHOSTNAME&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;192.168.8.1&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;VPNINTERFACE&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;WG0&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ping -c3 &lt;span class=&#34;nv&#34;&gt;$CHECKHOSTNAME&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;[&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;$?&lt;/span&gt; -eq &lt;span class=&#34;m&#34;&gt;0&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;]&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;then&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;ok&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    logger &lt;span class=&#34;k&#34;&gt;$(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;DATE&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt; - &lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$0&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;: OK - &lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$VPNINTERFACE&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt; UP AND RUNNING&amp;#34;&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;else&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;RESTART &lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$VPNINTERFACE&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt; Interface&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    logger &lt;span class=&#34;k&#34;&gt;$(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;echo&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;DATE&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt; - &lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$0&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;: NO VPN CONNECTION RESTART &lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$VPNINTERFACE&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt; INTERFACE...&amp;#34;&lt;/span&gt;&lt;span class=&#34;k&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    /etc/init.d/dnsmasq restart
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    ifdown &lt;span class=&#34;nv&#34;&gt;$VPNINTERFACE&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    ifup &lt;span class=&#34;nv&#34;&gt;$VPNINTERFACE&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;fi&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;CHECKHOSTNAME 是连接节点路由器的地址&lt;/p&gt;
&lt;h3 id=&#34;配置静态路由&#34;&gt;配置静态路由
&lt;/h3&gt;&lt;p&gt;&lt;img src=&#34;https://www.knightli.com/2022/04/14/openwrt-wireguard-connect-two-network/1-6.png&#34;
	width=&#34;1116&#34;
	height=&#34;281&#34;
	srcset=&#34;https://www.knightli.com/2022/04/14/openwrt-wireguard-connect-two-network/1-6_hu_2e68b6207f2615e0.png 480w, https://www.knightli.com/2022/04/14/openwrt-wireguard-connect-two-network/1-6_hu_2fed47c6a3742bed.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;节点1配置&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;397&#34;
		data-flex-basis=&#34;953px&#34;
	
&gt;&lt;br&gt;
&lt;img src=&#34;https://www.knightli.com/2022/04/14/openwrt-wireguard-connect-two-network/2-6.png&#34;
	width=&#34;1102&#34;
	height=&#34;270&#34;
	srcset=&#34;https://www.knightli.com/2022/04/14/openwrt-wireguard-connect-two-network/2-6_hu_c5c430f03b5392a2.png 480w, https://www.knightli.com/2022/04/14/openwrt-wireguard-connect-two-network/2-6_hu_72da9ed59c0504c5.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;节点2配置&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;408&#34;
		data-flex-basis=&#34;979px&#34;
	
&gt;&lt;/p&gt;
</description>
        </item>
        
    </channel>
</rss>
