libra146 / docker-topsap

使天融信开发的TopSAP运行在 docker 或 podman 中,并提供 socks5 代理服务
GNU Affero General Public License v3.0
23 stars 5 forks source link

只有本机用127.0.0.1地址才能连上 #11

Open geniusyjiang opened 1 year ago

geniusyjiang commented 1 year ago

已经将启动代码中的127.0.0.1去掉,也试过改为本机内网地址(192.168.1.77),10888端口映射的内网1080端口,通过“curl --socks5 127.0.0.1:10888 网址”可以访问,但通过“curl --socks5 192.168.1.77:10888 网址”就打不开,试过换端口,可以确定肯定不是端口被占用。什么方法都试过了,实在没办法。可以确定docker的端口映射是没问题的,因为docker版nginx映射的9443端口都可能在内网用192.168.1.77:9443打开。

日志有一条警告,但感觉应该不成问题,因为下一条显示启动成功,也能通过127.0.0.1:10888访问(见上面示例)。关键的几条日志如下:

Login Success!
Sep 18 10:59:58 (1695034798.282122) danted[79]: warning: could not open pidfile /var/run/danted.pid for writing: Permission denied
Sep 18 10:59:59 (1695034799.617496) danted[79]: info: Dante/server[1/1] v1.4.2 running
geniusyjiang commented 1 year ago

通过netstat确认端口映射是成功的,portainer中也可以看到。

libra146 commented 1 year ago

如果需要所有网段访问,可以尝试将本地地址改成 0.0.0.0 尝试

geniusyjiang commented 1 year ago

如果需要所有网段访问,可以尝试将本地地址改成 0.0.0.0 尝试

不加IP默认就是绑定的0.0.0.0,netstat能看到,但不管是本机curl还是局域网其他电脑设置代理都打不开任何网页。

libra146 commented 1 year ago

贴一下你使用的命令吧,我本地使用 zerotier 的地址是可以正常访问的,是本地虚拟网卡的一个 ip,可以正常绑定和访问 同时,你是使用自己编译的镜像还是我编译的镜像?

geniusyjiang commented 1 year ago

贴一下你使用的命令吧,我本地使用 zerotier 的地址是可以正常访问的,是本地虚拟网卡的一个 ip,可以正常绑定和访问 同时,你是使用自己编译的镜像还是我编译的镜像?

就用的docker hub上你编译的镜像,命令里面就加了个restart,这个肯定不影响的,详细命令如下:

docker run -d -it --device=/dev/net/tun --cap-add=NET_ADMIN -p 10888:1080 --name=topsap --restart=unless-stopped -e USER_NAME=#user -e PASSWORD=#pass -e SERVER_ADDRESS=#url libra146/docker-topsap

netstat也能明确看到端口映射是没问题的。

root@debian:/mnt/data/apps/topsap# netstat -pln | grep 10888
tcp        0      0 0.0.0.0:10888           0.0.0.0:*               LISTEN      1551/docker-proxy
tcp6       0      0 :::10888                :::*                    LISTEN      1565/docker-proxy
geniusyjiang commented 1 year ago

另外,也可以排除防火墙的问题,因为本机curl socks5 局域网ip:10888都不通,防火墙我也是开放了192.168.0.0网段访问所有端口的。

libra146 commented 1 year ago

另外,也可以排除防火墙的问题,因为本机curl socks5 局域网ip:10888都不通,防火墙我也是开放了192.168.0.0网段访问所有端口的。

  1. 可以尝试关闭防火墙尝试一下吗?
  2. 可以尝试输出一下sysctl net.ipv4.ip_forward的值看看ip 转发是否打开,如果没有打开,请打开后再尝试一下
geniusyjiang commented 1 year ago

另外,也可以排除防火墙的问题,因为本机curl socks5 局域网ip:10888都不通,防火墙我也是开放了192.168.0.0网段访问所有端口的。

  1. 可以尝试关闭防火墙尝试一下吗?
  2. 可以尝试输出一下sysctl net.ipv4.ip_forward的值看看ip 转发是否打开,如果没有打开,请打开后再尝试一下

1、现在在外面,晚上回去尝试一下关闭防火墙。 2、可以确定是1,这个昨天就怀疑并确认过。

geniusyjiang commented 1 year ago

已测试关闭防火墙,问题依旧。

libra146 commented 1 year ago
  1. 确认你本地的内网地址是192.168.1.77
  2. 你的电脑还有没有其他网卡,用其他网卡的内网地址试试呢
geniusyjiang commented 1 year ago
  1. 确认你本地的内网地址是192.168.1.77
  2. 你的电脑还有没有其他网卡,用其他网卡的内网地址试试呢

1、肯定可以确认了,而且docker版nginx通过这个ip也是可以正常访问的,所以可以确定docker也没问题。nginx和这个topsap的端口绑定情况如下:

root@debian:~# netstat -pln | grep 9443
tcp        0      0 0.0.0.0:9443            0.0.0.0:*               LISTEN      1589/nginx: master
tcp6       0      0 :::9443                 :::*                    LISTEN      1589/nginx: master

root@debian:~# netstat -pln | grep 10888
tcp        0      0 0.0.0.0:10888           0.0.0.0:*               LISTEN      92667/docker-proxy
tcp6       0      0 :::10888                :::*                    LISTEN      92675/docker-proxy

可见端口绑定是完全一模一样的。而nginx是可以正常通过192.168.1.77这个ip访问的(忽略证书错误):

root@debian:~# curl https://192.168.1.77:9443
curl: (60) SSL: no alternative certificate subject name matches target host name '192.168.1.77'
More details here: https://curl.se/docs/sslcerts.html

curl failed to verify the legitimacy of the server and therefore could not
establish a secure connection to it. To learn more about this situation and
how to fix it, please visit the web page mentioned above.

2、只有这一个esxi的虚拟网卡,剩下的都是docker的虚拟网卡。

libra146 commented 1 year ago

😂我觉得目前来说如果着急使用的话可以先通过本地 localhost 转发一下端口来使用,根据目前的信息来看,我也没有太多的头绪,能想到的可能就是 docker 容器中使用到了 iptables,用来处理路由表相关的信息,nginx 肯定是没有用到的,docker 中的 iptables 可能还跟宿主机的内核版本有关系,但是我没有具体研究。。

geniusyjiang commented 1 year ago

个人感觉问题也是出在docker里面的iptables,因为其他docker都是可以通过192.168.1.77:绑定端口 来访问的,唯一有问题的就是这个topsap。我先暂时想办法用着,希望后面能解决。

geniusyjiang commented 1 year ago

而且运行“curl --socks5 192.168.1.77:10888 网址”命令是卡死,一直不出结果,并不是提示”Connection refused“或其他的。