linux NAT端口转发实现nodejs网站https访问

什么是端口转发

端口转发(Port forwarding),有时被叫做隧道,是安全壳(SSH) 为网络安全通信使用的一种方法。端口转发是转发一个网络端口从一个网络节点到另一个网络节点的行为,其使一个外部用户从外部经过一个被激活的NAT路由器到达一个在私有内部IP地址(局域网内部)上的一个端口。


为什么要做端口转发

很多时候我们登录服务器一般会使用普通用户,并且为了安全而使用普通用户来运行我们的网站应用,但在linux上是只有root用户才能监听1024以下的端口的;或者经常出现一些端口被占用的情况;所以这个时候nat端口转发就显得尤为重要。


认识iptables NAT

iptables在linux内的作用就相当于windows中的防火墙,所以我们可以对iptables设置一定的规则来拦截某些请求以达到加强服务器安全的目的。


NAT 

nat表需要的三个链:

  1.   1.PREROUTING:可以在这里定义进行目的NAT的规则,因为路由器进行路由时只检查数据包的目的ip地址,所以为了使数据包得以正确路由,我们必须在路由之前就进行目的NAT;
      2.POSTROUTING:可以在这里定义进行源NAT的规则,系统在决定了数据包的路由以后在执行该链中的规则。
      3.OUTPUT:定义对本地产生的数据包的目的NAT规则。

需要用到的几个动作选项:(真实环境中用大写)

 redirect     将数据包重定向到另一台主机的某个端口,通常用实现透明代理和对外开放内网某些服务。    

 snat    源地址转换,改变数据包的源地址    

 dnat    目的地址转换,改变数据包的目的地址    

 masquerade    IP伪装,只适用于ADSL等动态拨号上网的IP伪装,如果主机IP是静态分配的,就用snat    


PRERROUTING:DNAT 、REDIRECT   (路由之前)只支持-i,不支持-o。在作出路由之前,对目的地址进行修改

POSTROUTING:SNAT、MASQUERADE (路由之后)只支持-o,不支持-i。在作出路由之后,对源地址进行修改

OUTPUT:DNAT 、REDIRECT   (本机)DNAT和REDIRECT规则用来处理来自NAT主机本身生成的出站数据包.


开始配置NAT端口本地转发

  1. 开启内核的路由功能

  2. echo “1” > /proc/sys/net/ipv4/ip_forward

    定义本地端口转发    

sudo iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-ports 8080 //这里定义的是将80端口的请求转发到8080端口

            


This is Miller

其它相关热文