# docker-fwknop **Repository Path**: wx-rdc/docker-fwknop ## Basic Information - **Project Name**: docker-fwknop - **Description**: Fwknop server in a Docker container complete with an SPA. - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2022-10-08 - **Last Updated**: 2022-10-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # docker of fwknop ## 安装 由于单包敲门是用于保护特定服务的访问端口的,因此需要和被保护的服务共用一个Docker容器网络。 缺省安装脚本中,指定了一个名为 `smocker` 的容器,该容器暴露 `8080` 端口,使用单包敲门对其进行保护。 - deploy.sh ``` docker run -v $FWK_CONF:/etc/fwknop -d \ -p 62201:62201/udp \ --network container:smocker \ --privileged \ --name fwknopd \ wx-rdc/fwknop:v1 ``` - bin/fwk_setrules ``` iptables -A $ruleset -p tcp --dport 8080 -j DROP ``` 运行安装脚本(需要联网安装必要的工具包) ``` ./deploy.sh ``` 执行后将会生成相关的敲门密钥,保存在 `/etc/fwknop/access.conf` 文件中,目前还需要手工拷贝出来。 ``` docker cp [containerID]:/etc/fwknop/access.conf . ``` ## 客户端敲门 `smocker` 服务用于示例敲门效果,在没有安装 `fwknop` 之前,可以通过 `curl` 正常访问。 ``` curl http://smocker:8080 ``` 安装 `fwknop` 之后,由于设置了拒绝规则,使用 `curl` 已经无法访问相关端口。 使用 `fwknop` 客户端进行敲门之前,首先需要设置配置文件 `.fwknoprc` ``` [smocker] ACCESS tcp/8080 SPA_SERVER smocker KEY_BASE64 Pdr7w8SLCLXqM/5PpryvuztLLIj00wduRY5jiQDuJcw= HMAC_KEY_BASE64 7ynIfUulYUq36gzHWDZFmJMy9HtQL+HiU2hUub8K7XRMu9f1g/DiVtFw7GcjM79EJw13f4dkIX+GXCmpa+omGw== USE_HMAC Y ``` 其中两个KEY字符串就是上面从 `access.conf` 文件中拷贝出来的内容。 然后使用客户端进行敲门 ``` fwknop -n smocker -a xxx ``` 参数 `-a` 用于指定客户端对外访问的IP地址,如果是在NAT内部,需要先确认该地址。 敲门后,可以查看服务端的日志来确认敲门是否正常。如果正常,会有30秒的时间对指定IP地址开启服务端口,此时可以通过 `curl` 正常访问服务。