![如何将路由器后面的计算机上的文件夹共享给路由器外面的节点?](https://linux22.com/image/1564867/%E5%A6%82%E4%BD%95%E5%B0%86%E8%B7%AF%E7%94%B1%E5%99%A8%E5%90%8E%E9%9D%A2%E7%9A%84%E8%AE%A1%E7%AE%97%E6%9C%BA%E4%B8%8A%E7%9A%84%E6%96%87%E4%BB%B6%E5%A4%B9%E5%85%B1%E4%BA%AB%E7%BB%99%E8%B7%AF%E7%94%B1%E5%99%A8%E5%A4%96%E9%9D%A2%E7%9A%84%E8%8A%82%E7%82%B9%EF%BC%9F.png)
我想在计算机上共享文件夹X到其他几个节点,比如A,乙,C,它们位于同一个局域网上。X位于路由器后面,并且路由器的 IP 地址可能会随着时间而改变(它是由 DHCP 分配的),我无法控制这一点。A,乙,C每个都有一个静态 IP 地址,我可以 pingA,乙,C从X。所有节点都运行 Linux。如果我想在X到A,乙,C?
我知道有一种方法在某种程度上是可行的,那就是在路由器上设置 NAT 到X,然后使用SSHFS在A,乙,C挂载文件夹X. 但缺点是路由器的IP地址可能会改变。
我也尝试过使用反向 ssh + sshfs。但是,这似乎只能将文件夹共享到一个节点,例如X-->A,而不是整个网络(A,乙,C)。
答案1
最简单的方法是根本不使用 IP 地址,而是使用 DDNS(动态 DNS)条目作为服务器。有许多免费的 DDNS 服务可用:有些是免费的(例如DNS动态);如果您想要更多功能,可以付费购买其他功能(例如无IP)。为了保持 DDNS 条目有效,您可以运行类似ddclient
它会不时检查路由器的 IP 地址,并在需要时向提供商发送更新请求;大多数提供商都允许使用该dyndns2
协议进行更新。大多数 Linux 发行版都带有ddclient
其存储库。
以下是更新配置文件的示例ddclient
(来自 DNSdynamic,但对于其他提供商来说非常相似):
daemon=60 # check every 60 seconds
syslog=yes # log update msgs to syslog
mail=root # mail all msgs to root
mail-failure=root # mail failed update msgs to root
pid=/var/run/ddclient.pid # record PID in file.
ssl=yes # use ssl-support. Works with
# ssl-library
use=web, web=myip.dnsdynamic.com # get ip from server.
server=www.dnsdynamic.org # default server
[email protected] # default login
password=password # default password
server=www.dnsdynamic.org, \
protocol=dyndns2 \
awesome.dnsdynamic.com