Skip to content

Commit

Permalink
Site updated: 2024-03-06 13:14:04
Browse files Browse the repository at this point in the history
  • Loading branch information
ryanInf committed Mar 6, 2024
1 parent b42c13e commit 93e4162
Show file tree
Hide file tree
Showing 3 changed files with 5 additions and 3 deletions.
5 changes: 3 additions & 2 deletions 2024/03/06/记一次有趣的iptables分析经历/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@
<meta property="og:image" content="https://r0yanx.com/2024/03/06/%E8%AE%B0%E4%B8%80%E6%AC%A1%E6%9C%89%E8%B6%A3%E7%9A%84iptables%E5%88%86%E6%9E%90%E7%BB%8F%E5%8E%86/2024-03-06-13-07-06.png">
<meta property="og:image" content="https://r0yanx.com/2024/03/06/%E8%AE%B0%E4%B8%80%E6%AC%A1%E6%9C%89%E8%B6%A3%E7%9A%84iptables%E5%88%86%E6%9E%90%E7%BB%8F%E5%8E%86/2024-03-06-13-02-39.png">
<meta property="article:published_time" content="2024-03-06T02:02:12.000Z">
<meta property="article:modified_time" content="2024-03-06T05:12:16.601Z">
<meta property="article:modified_time" content="2024-03-06T05:13:51.069Z">
<meta property="article:author" content="r0yanx">
<meta property="article:tag" content="Linux">
<meta name="twitter:card" content="summary">
Expand Down Expand Up @@ -237,7 +237,7 @@ <h1 class="post-title" itemprop="name headline">
<span class="post-meta-item-text">发表于</span>


<time title="创建时间:2024-03-06 10:02:12 / 修改时间:13:12:16" itemprop="dateCreated datePublished" datetime="2024-03-06T10:02:12+08:00">2024-03-06</time>
<time title="创建时间:2024-03-06 10:02:12 / 修改时间:13:13:51" itemprop="dateCreated datePublished" datetime="2024-03-06T10:02:12+08:00">2024-03-06</time>
</span>
<span class="post-meta-item">
<span class="post-meta-item-icon">
Expand Down Expand Up @@ -275,6 +275,7 @@ <h3 id="起源"><a href="#起源" class="headerlink" title="起源"></a>起源</
<p>要实现双向访问也并不难,这点以前就实现过类似需求,只需要把VPN服务器的MASQUERADE NAT规则去除,然后在家里的网关路由增加一条下面的规则即可:</p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># VPN SERVER 删除NAT规则</span></span><br><span class="line">iptables -D POSTROUTING 1</span><br><span class="line"></span><br><span class="line"><span class="comment"># 路由器设置规则</span></span><br><span class="line">route add -net 10.0.0.0/24 gw 192.168.100.10</span><br></pre></td></tr></table></figure>
<p>数据包流转如下:<br> ID | 步骤 | IP SRC | IP DST | MAC SRC | MAC DST<br>—|—|—|—|—|—<br> 1 | 内网客户端向VPN客户端发起请求,请求发向内网网关 | 192.168.100.20 | 10.0.0.10 | WORK | ROUTE GW<br> 2 | 内网网关收到内网客户端请求,根据路由表把数据包转发到VPN服务器 | 192.168.100.20 | 10.0.0.10 | ROUTE GW | VPN SERVER<br> 3 | VPN服务器收到数据包,把数据包通过VPN隧道转发到客户端 | 192.168.100.20 | 10.0.0.10 | VPN SERVER | LAPTOP<br> 4 | VPN客户端收到请求数据包,发起响应,数据包原路返回 | 10.0.0.10 | 192.168.100.20 | LAPTOP | VPN SERVER </p>
<p>参数|描述<br>—|—|—<br>width| 设置layout viewport 的宽度,为一个正整数,或字符串”width-device”<br>initial-scale| 设置页面的初始缩放值,为一个数字,可以带小数<br>minimum-scale| 允许用户的最小缩放值,为一个数字,可以带小数<br>maximum-scale| 允许用户的最大缩放值,为一个数字,可以带小数<br>height| 设置layout viewport 的高度,这个属性对我们并不重要,很少使用<br>user-scalable| 是否允许用户进行缩放,值为”no”或”yes”, no 代表不允许,yes代表允许</p>
<p>经过上面的规则设置,内网设备与VPN客户端已经可以实现双方ip的直接互访。但是问题也随之出现,考虑到安全问题,我需要设置ACL规则限制VPN客户端的访问范围,原本的方式只需要对VPN服务器的ip地址做ACL限制就行了,现在还需要在VPN服务器规则的基础上加入VPN客户端网段的限制,需要考虑和改动的规则更多了,一一改动显然是不够优雅的,而且也可能导致安全隐患(绕过ACL访问到内网设备)。</p>
<p>所以就准备恢复原本的访问模式,在VPN服务器重新启动NAT。</p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">iptables -t nat -A POSTROUTING -s 10.0.0.0/24 -o eth0 -j MASQUERADE</span><br></pre></td></tr></table></figure>
Expand Down
2 changes: 1 addition & 1 deletion index.html
Original file line number Diff line number Diff line change
Expand Up @@ -225,7 +225,7 @@ <h2 class="post-title" itemprop="name headline">
<span class="post-meta-item-text">发表于</span>


<time title="创建时间:2024-03-06 10:02:12 / 修改时间:13:12:16" itemprop="dateCreated datePublished" datetime="2024-03-06T10:02:12+08:00">2024-03-06</time>
<time title="创建时间:2024-03-06 10:02:12 / 修改时间:13:13:51" itemprop="dateCreated datePublished" datetime="2024-03-06T10:02:12+08:00">2024-03-06</time>
</span>
<span class="post-meta-item">
<span class="post-meta-item-icon">
Expand Down
1 change: 1 addition & 0 deletions search.xml
Original file line number Diff line number Diff line change
Expand Up @@ -3148,6 +3148,7 @@ st->op1->op2->op3->op4->e</textarea><textarea id="flowchart-0-options" style="di
<p>要实现双向访问也并不难,这点以前就实现过类似需求,只需要把VPN服务器的MASQUERADE NAT规则去除,然后在家里的网关路由增加一条下面的规则即可:</p>
<figure class="highlight bash"><table><tr><td class="code"><pre><span class="line"><span class="comment"># VPN SERVER 删除NAT规则</span></span><br><span class="line">iptables -D POSTROUTING 1</span><br><span class="line"></span><br><span class="line"><span class="comment"># 路由器设置规则</span></span><br><span class="line">route add -net 10.0.0.0/24 gw 192.168.100.10</span><br></pre></td></tr></table></figure>
<p>数据包流转如下:<br> ID | 步骤 | IP SRC | IP DST | MAC SRC | MAC DST<br>—|—|—|—|—|—<br> 1 | 内网客户端向VPN客户端发起请求,请求发向内网网关 | 192.168.100.20 | 10.0.0.10 | WORK | ROUTE GW<br> 2 | 内网网关收到内网客户端请求,根据路由表把数据包转发到VPN服务器 | 192.168.100.20 | 10.0.0.10 | ROUTE GW | VPN SERVER<br> 3 | VPN服务器收到数据包,把数据包通过VPN隧道转发到客户端 | 192.168.100.20 | 10.0.0.10 | VPN SERVER | LAPTOP<br> 4 | VPN客户端收到请求数据包,发起响应,数据包原路返回 | 10.0.0.10 | 192.168.100.20 | LAPTOP | VPN SERVER </p>
<p>参数|描述<br>—|—|—<br>width| 设置layout viewport 的宽度,为一个正整数,或字符串”width-device”<br>initial-scale| 设置页面的初始缩放值,为一个数字,可以带小数<br>minimum-scale| 允许用户的最小缩放值,为一个数字,可以带小数<br>maximum-scale| 允许用户的最大缩放值,为一个数字,可以带小数<br>height| 设置layout viewport 的高度,这个属性对我们并不重要,很少使用<br>user-scalable| 是否允许用户进行缩放,值为”no”或”yes”, no 代表不允许,yes代表允许</p>
<p>经过上面的规则设置,内网设备与VPN客户端已经可以实现双方ip的直接互访。但是问题也随之出现,考虑到安全问题,我需要设置ACL规则限制VPN客户端的访问范围,原本的方式只需要对VPN服务器的ip地址做ACL限制就行了,现在还需要在VPN服务器规则的基础上加入VPN客户端网段的限制,需要考虑和改动的规则更多了,一一改动显然是不够优雅的,而且也可能导致安全隐患(绕过ACL访问到内网设备)。</p>
<p>所以就准备恢复原本的访问模式,在VPN服务器重新启动NAT。</p>
<figure class="highlight bash"><table><tr><td class="code"><pre><span class="line">iptables -t nat -A POSTROUTING -s 10.0.0.0/24 -o eth0 -j MASQUERADE</span><br></pre></td></tr></table></figure>
Expand Down

0 comments on commit 93e4162

Please sign in to comment.