我正在尝试让 stunnel 从一个端口(最终通过 443 上的 https)转发到端口 8080。
远程浏览器已经可以正确查看 8080 上提供的 http 服务。
我尝试了 4.42 - 4.55 之间的 4 个版本的 stunnel。在 Ubuntu 16 和 18 上。
stunnel 程序输出:
...
[!] bind: Address already in use (98)
[!] Error binding service [myhttp] to 0.0.0.0:9985
...
stunnel.conf(我是否遗漏了什么?网络上有各种说法称应该添加这个或那个):
cert = /etc/letsencrypt/live/<<my-domain>>/cert.pem
key = /etc/letsencrypt/live/<<my-domain>>/privkey.pem
[myhttp]
accept = 9985
connect = 8080
我尝试在端口前加上127.0.0.1:
或::1:
。 (这会影响上面的 0.0.0.0 的更改,但结果相同。)
我的防火墙:
root@localhost:/home/my# iptables -L -v
Chain INPUT (policy ACCEPT 211 packets, 160K bytes)
pkts bytes target prot opt in out source destination
145 849K ACCEPT all -- lo any anywhere anywhere
8874 1008K ACCEPT tcp -- any any anywhere anywhere tcp dpt:ssh
248 24754 ACCEPT tcp -- any any anywhere anywhere tcp dpt:http
310 22151 ACCEPT tcp -- any any anywhere anywhere tcp dpt:https
0 0 ACCEPT tcp -- any any anywhere anywhere tcp dpt:9985
0 0 ACCEPT tcp -- any any anywhere anywhere tcp dpt:9986
如果我添加到 /etc/services:
myhttp 9985/tcp
那么的输出iptables -L -v
包含... tcp dpt:myhttp...
,但是仍然有0接受。
如果我将 stunnel.conf 中的条目更改为, accept = 80
那么远程浏览器就可以通过该端口获得 https 连接,并在端口 8080 上获取页面,并且它具有 ssl-lock-symbol。但是,使用端口 80 进行 https 并不是解决方案,我需要该端口来提供纯 http 或将浏览器定向到 https 端口。
答案1
我终于让它工作了。我的托管服务提供商在此服务器外添加了另一个防火墙,因此除了配置 iptables 之外,我还必须访问提供商的网站并在那里配置防火墙设置(然后它们需要几分钟才能生效,所以请耐心等待)。