hwdsl2 / docker-ipsec-vpn-server

Docker image to run an IPsec VPN server, with IPsec/L2TP, Cisco IPsec and IKEv2
https://hub.docker.com/r/hwdsl2/ipsec-vpn-server
Other
6.37k stars 1.38k forks source link

安卓13自带客户端连接成功,连网失败 #370

Closed z499738316 closed 1 year ago

z499738316 commented 1 year ago

您好,我在openwrt的docker里安装了您的vpn,在使用安卓13自带的vpn客户端时,显示已经连接,并且在docker中也显示了连接,地址为192.168.43.10,但是就是不能访问互联网,我进入docker 并且ping了几个网站都是正常的,dns也改用了本地的dns并用nslookup测试都没有问题, 但就是能连接无法连网,用的ikev2 rsa模式

z499738316 commented 1 year ago

Screenshot_2023-04-23-15-03-49-829_com android se image image image

z499738316 commented 1 year ago

image

hwdsl2 commented 1 year ago

@a499738316 你好!请启用 Libreswan 日志,重新连接 VPN 客户端,然后检查日志是否有错误。

你可以尝试在连接 VPN 后访问 https://1.1.1.1,如果可以访问,可能是 DNS 的问题。测试 DNS 的话,应该在你的安卓设备上进行(在连接 VPN 后)。要为 VPN 指定其他的 DNS 服务器,请参见如何使用本镜像。你需要重新创建 Docker 容器以使对 env 文件的更改生效。

如果你有更多信息可以继续在这里回复。

z499738316 commented 1 year ago

你好!请启用 Libreswan 日志,重新连接 VPN 客户端,然后检查日志是否有错误。

你可以尝试在连接 VPN 后访问 https://1.1.1.1,如果可以访问,可能是 DNS 的问题。测试 DNS 的话,应该在你的安卓设备上进行(在连接 VPN 后)。要为 VPN 指定其他的 DNS 服务器,请参见如何使用本镜像。你需要重新创建 Docker 容器以使对 env 文件的更改生效。

如果你有更多信息可以继续在这里回复。

根本就不是dns的问题

hwdsl2 commented 1 year ago

@a499738316 不一定是 DNS 的问题 - 如果你有更多信息,比如 Libreswan 日志中的相关错误,请在这里回复。

另外一个可能是 Docker 容器中的 IPTables 规则不正确。要检查 IPTables 规则,请在容器中运行:

iptables -nvL; iptables -nvL -t nat
z499738316 commented 1 year ago

@a499738316 不一定是 DNS 的问题 - 如果你有更多信息,比如 Libreswan 日志中的相关错误,请在这里回复。

另外一个可能是 Docker 容器中的 IPTables 规则不正确。要检查 IPTables 规则,请在容器中运行:

iptables -nvL; iptables -nvL -t nat

auth.log 这个是我的日志

hwdsl2 commented 1 year ago

@a499738316 你提供的日志中没有完整的客户端连接记录,请重新尝试连接 VPN 客户端,尝试重现此问题,然后附上新的日志(可以去掉如 IP 地址和客户端名称等信息)。

另外你可以参考一下这些 Openwrt 相关的 Issue: https://github.com/hwdsl2/docker-ipsec-vpn-server/issues?q=is%3Aissue+openwrt

z499738316 commented 1 year ago

@a499738316 你提供的日志中没有完整的客户端连接记录,请重新尝试连接 VPN 客户端,尝试重现此问题,然后附上新的日志(可以去掉如 IP 地址和客户端名称等信息)。

另外你可以参考一下这些 Openwrt 相关的 Issue: https://github.com/hwdsl2/docker-ipsec-vpn-server/issues?q=is%3Aissue+openwrt

auth.log 这是新的日志

hwdsl2 commented 1 year ago

@a499738316 你的新日志显示 IKEv2 连接成功建立。但是连接好像遇到了网络问题。有可能是 Docker 容器中的 IPTables 规则不正确。要检查 IPTables 规则,请在容器内运行: iptables -nvL; iptables -nvL -t nat

另外看一下容器内的网络路由信息: ip route show

z499738316 commented 1 year ago

@a499738316 你的新日志显示 IKEv2 连接成功建立。但是连接好像遇到了网络问题。有可能是 Docker 容器中的 IPTables 规则不正确。要检查 IPTables 规则,请在容器内运行: iptables -nvL; iptables -nvL -t nat

另外看一下容器内的网络路由信息: ip route show

image image 谢谢 请帮忙看一下网络

hwdsl2 commented 1 year ago

@a499738316 IPTables 规则中的 Chain POSTROUTING 应该还有一行,不知道是不是你的截图遗漏了一行。另外Chain INPUT应该有几条规则。你之前编辑过run.sh中的 IPTables 规则吗?

你可以尝试在容器内运行: iptables -t nat -I POSTROUTING -s 192.168.43.0/24 -o eth0 -m policy --dir out --pol none -j MASQUERADE

然后重新连接客户端。如果问题解决,你可以重新创建 Docker 容器以还原对 run.sh 中的规则的更改。

z499738316 commented 1 year ago

@a499738316 IPTables 规则中的 Chain POSTROUTING 应该还有一行,不知道是不是你的截图遗漏了一行。另外Chain INPUT应该有几条规则。你之前编辑过run.sh中的 IPTables 规则吗?

你可以尝试在容器内运行: iptables -t nat -I POSTROUTING -s 192.168.43.0/24 -o eth0 -m policy --dir out --pol none -j MASQUERADE

然后重新连接客户端。如果问题解决,你可以重新创建 Docker 容器以还原对 run.sh 中的规则的更改。 没有编辑过run.sh 上面的截图就是全部
运行您给的命令报错了 image

hwdsl2 commented 1 year ago

@a499738316 看来Openwrt的Linux内核默认未加载 IPTables policy extension。请尝试运行:

iptables -t nat -I POSTROUTING -s 192.168.43.0/24 ! -d 192.168.43.0/24 -o eth0 -j MASQUERADE

z499738316 commented 1 year ago

iptables -t nat -I POSTROUTING -s 192.168.43.0/24 ! -d 192.168.43.0/24 -o eth0 -j MASQUERADE

运行这行命令就没有问题了 请问我接下来该怎么做 谢谢!!!!!!!!!!

hwdsl2 commented 1 year ago

@a499738316 你只需编辑容器内的 /opt/src/run.sh, 找到以下部分

-m policy --dir out --pol none -j MASQUERADE

将它替换为

! -d 192.168.43.0/24 -j MASQUERADE

就可以了。

如果重新创建容器,需要再次编辑此文件。

z499738316 commented 1 year ago

@a499738316 你只需编辑容器内的 /opt/src/run.sh, 找到以下部分

-m policy --dir out --pol none -j MASQUERADE

将它替换为

! -d 192.168.43.0/24 -j MASQUERADE

就可以了。

如果重新创建容器,需要再次编辑此文件。

非常的感谢您的帮助 问题已经解决了