CentOS 7

CentOS7下的各种应用


Firewall-cmd 防火墙

<p>一、firewall-cmd控制端口与端口转发</p> <h1>1.需求</h1> <p>外网映射端口 124.90.34.218:52471 --&gt; 172.16.7.138:8080 124.90.34.218:52472 --&gt; 172.16.7.138:8081 124.90.34.218:52473 --&gt; 172.16.7.138:1222 实现访问外网IP+port,打开内网服务器上应用程序。</p> <h1>2.伪装IP</h1> <p>防火墙可以实现伪装IP的功能,下面的端口转发就会用到这个功能。</p> <pre><code class="language-bash">firewall-cmd --query-masquerade # 检查是否允许伪装IP firewall-cmd --add-masquerade # 允许防火墙伪装IP firewall-cmd --remove-masquerade # 禁止防火墙伪装IP</code></pre> <h1>3.端口转发</h1> <p>端口转发可以将指定地址访问指定的端口时,将流量转发至指定地址的指定端口。转发的目的如果不指定ip的话就默认为本机,如果指定了ip却没指定端口,则默认使用来源端口。</p> <p>如果配置好端口转发之后不能用,可以检查下面两个问题: (1)比如我将80端口转发至8080端口,首先检查本地的80端口和目标的8080端口是否开放监听了 (2)其次检查是否允许伪装IP,没允许的话要开启伪装IP</p> <h2>3.1 开启伪装IP</h2> <pre><code class="language-bash">firewall-cmd --add-masquerade</code></pre> <p>检查是否允许伪装IP</p> <pre><code class="language-bash">firewall-cmd --query-masquerade</code></pre> <p>有些版本在firewall-cmd --reload,再查看显示为no,实际有效。</p> <h2>3.2 开启目标端口</h2> <pre><code class="language-bash">firewall-cmd --zone=public --add-port=8080/tcp --permanent</code></pre> <h2>3.3 将54271端口的流量转发至192.168.30.156的8080端口</h2> <pre><code class="language-bash">firewall-cmd --zone=public --add-forward-port=port=54271:proto=tcp:toaddr=192.168.30.156:toport=8080 --permanent</code></pre> <h2>3.4 加载</h2> <pre><code class="language-bash">firewall-cmd --reload</code></pre> <h1>4 验证</h1> <h2>4.1 在内网访问应用程序来验证</h2> <p><a href="http://192.168.30.156:54271/easytong_web">http://192.168.30.156:54271/easytong_web</a></p> <h2>4.2 在外网访问应用程序来验证</h2> <p>在内网访问成功后,转到外网访问 <a href="http://124.90.34.218:52471/easytong_web">http://124.90.34.218:52471/easytong_web</a></p> <h1>5 删除伪装IP</h1> <pre><code class="language-bash">firewall-cmd --zone=public --add-forward-port=port=54271:proto=tcp:toaddr=192.168.30.156:toport=8080 --permanent firewall-cmd --add-masquerade firewall-cmd --reload</code></pre> <p>删除后并没有马上生效,需要等待一点点时间(0.5-1分钟左右) 再次访问应用程序,访问失败。</p> <h1>6 其它</h1> <p>仍无法转发,可能是由于内核参数文件sysctl.conf未配置ip转发功能,具体配置如下: vi /etc/sysctl.conf 在文本内容中添加:net.ipv4.ip_forward = 1 保存文件后,输入命令sysctl -p生效</p> <p>参考资源 firewall-cmd控制端口与端口转发 <a href="https://my.oschina.net/u/3367404/blog/1574892">https://my.oschina.net/u/3367404/blog/1574892</a></p>

页面列表

ITEM_HTML