Menu Close

frp绑定80端口权限问题

    内网穿透,也即 NAT 穿透,进行 NAT 穿透是为了使具有某一个特定源 IP 地址和源端口号的数据包不被 NAT 设备屏蔽而正确路由到内网主机。下面就相互通信的主机在网络中与 NAT 设备的相对位置介绍内网穿透方法。
    UDP 内网穿透的实质是利用路由器上的NAT 系统。NAT 是一种将私有(保留)地址转化为合法IP地址的转换技术,它被广泛应用于各种类型 Internet 接入方式和各种类型的网络中。NAT可以完成重用地址,并且对于内部的网络结构可以实现对外隐蔽。
    在linux内核2.2之后,Linux把超级用户的特权分割成不同功能单元,可以单独的开启和禁止,称为能力(capability)。超级用户可以将能力赋给普通的进程即每个特定的用户或者用户群组,而不用改变程序的权限属性,或者给用户sudo的权限,从而致使root权限外露,而系统安全得到提升。只有进程和可执行文件才具有能力。关于linux网络的能力有:
CAP_NET_BIND_SERVICE:允许绑定到小于1024的端口
CAP_NET_BROADCAST:允许网络广播和多播访问
CAP_NET_ADMIN:允许执行网络管理任务
CAP_NET_RAW:允许使用原始套接字
    在Ubuntu20.04下使用frp进行内网穿透时,服务器端由于种种原因无法取得端口权限。使用root用户启动也报权限不足的错误。此时需要用以下指令给frp server提供权限,即给frp服务端的程序赋予cap_net_bind_service能力 :
sudo setcap cap_net_bind_service=+ep /etc/frps/frps