如果已经问过这个问题,我很抱歉,但我什至不知道如何搜索它,所以如果您已经有了解决方案,请用链接回复。我的一个朋友有一个 4g 连接作为他们的互联网连接,但没有公共 IP 地址,他们想远程访问 samba 共享。我有一个与公共 IP 地址的 vdsl 连接,并且我在树莓派上运行 OpenVPN 服务器,所以他们问我是否可以使用我的 VPN 来使用我的私有 IP 地址连接到他们的 samba 共享。我不知道该怎么做,但我真的很想帮助我的朋友。预先感谢任何可以提供帮助的人。
答案1
您可以按照您的要求进行操作,这里有一些实现它的说明。
这是端口转发的问题,因此您首先必须控制为 4G 客户端提供的内部 IP 地址,您可以使用 openssl 密钥来做到这一点,并使用附加到该特殊密钥的专用地址设置一个特殊的配置文件ccd 目录并在该目录中创建一个以密钥命名的文件。
也就是说,在你的 openvpn server.conf 中只需添加
client-config-dir ccd
如果您的客户端密钥名称是 samba4Gshare 然后创建一个文件/etc/openvpn/ccd/samba4Gshare
并在其中输入一些专用IP地址(例如,如果您的openvpn内部局域网是192.168.2.0/24)
ifconfig-push 192.168.2.6 192.168.2.5
因此,192.168.2.6 将是您 samba4Gshare 的专用 IP,而 192.168.2.5 将由 openvpn 在内部用于与此客户端的连接。(请注意,openvpn 默认情况下使用一些 /30 内部子网,因此您必须将内部 LAN 分段为一些/30)
然后,您使用此 openssl 密钥在 samba 共享上设置 openvpn 客户端,以便您的客户端连接到 openvpn 服务器并获取专用 IP 地址。
一旦客户端使用其专用密钥连接并且它具有这个特殊的固定 IP 地址,如果您使用 iptables/netfilter,您可以将连接从 raspberryPI IP 与表 nat/PREROUTING 中的 DNAT 转发到 samba 共享 openvpn 专用 IP 地址。
此时,您可能可以使用本地私有 LAN 中的客户端从您的 RaspberryPI IP 地址看到共享。
之后,最后一部分是将端口从 VDSL 转发到树莓派,以便您可以使用此端口从 VDSL 的公共 IP 访问您的 samba 共享。事实上,您需要调整 samba 共享上的路由,以便来自 openvpn 链接的连接能够以相同的方式返回到请求者。如果您的 samba 共享有不同的路由来到达互联网或您的 openvpn 网段,则可能需要一些伪装或基于端口的动态路由。
例如,如果您在 openvpn 服务器上进行 MASQUERADE,它可能可以直接正常工作,但您的 samba 共享可能看不到请求共享的真实 IP,因为对于此共享,每个请求似乎都来自您的 openvpn 服务器。不控制允许的区域可能不太安全。
VDSL(Pub IP)-->RASPBERRY(Private IP)-->SAMBA(openvpn IP)
其中 --> 表示端口转发。
如果您提供有关您的内部 IP 和路由器的详细信息,我可以为您提供示例命令。
问候并祝你好运。