nextcloud+onlyoffice同局域網(wǎng)部署網(wǎng)絡(luò)不通分析與解決(原創(chuàng))

記錄時(shí)間 2020-05-17

版本nextcloud 18.0 onlyoffice 5.5

同一個(gè)機(jī)器上安裝nextcloud和onlyoffice鏡像,映射到外網(wǎng)訪問(wèn),無(wú)法通過(guò)域名配置,提示網(wǎng)絡(luò)連接不通或文件下載失敗,這個(gè)問(wèn)題網(wǎng)絡(luò)上有很多的提問(wèn),但是一直沒(méi)找到答案,經(jīng)過(guò)2天的分析,終于明白了失敗的具體原因,和我當(dāng)前的組網(wǎng)有關(guān)系,下面先畫一個(gè)目前組網(wǎng)的示意圖。另外需要知道這兩設(shè)備有兩個(gè)過(guò)程要做:1.nextcloud連接onlyoffice 2.onlyoffice到nextcloud拉取文件

第一種情況:配置onlyoffice地址為192.168.x.x

image.png

服務(wù)地址配置192.168.x.x,能正常連接也能正常訪問(wèn),數(shù)據(jù)不通過(guò)外部網(wǎng)絡(luò),不過(guò)這時(shí)候只能局域網(wǎng)自己玩玩,如果從外網(wǎng)的某一主機(jī)連入,會(huì)出現(xiàn)加載服務(wù)器錯(cuò)誤,因?yàn)檫@時(shí)候配置的是192.168.x.x,此時(shí)外部發(fā)起的請(qǐng)求,onlyoffice還是會(huì)去連接192.168.x.x地址。


image.png

第二種情況:配置onlyoffice地址外部映射地址115.xxx.xx.xx

在這個(gè)情形會(huì)出現(xiàn)另一種情況,在局域網(wǎng)內(nèi)我們通過(guò)192.168.xx.xx的地址去訪問(wèn)nextcloud和onlyoffice的服務(wù)都是可以正常的,但是在內(nèi)網(wǎng)通過(guò)115.xxx.xx.xx地址訪問(wèn),直接會(huì)找不到服務(wù)器。這里涉及到另一個(gè)問(wèn)題,就是在局域網(wǎng)內(nèi)通過(guò)自身公網(wǎng)訪問(wèn)自己,路由器在收到這類地址的時(shí)候好像是為了安全,丟棄這類數(shù)據(jù)的,這就導(dǎo)致了如果給nextcloud配置onlyoffice外網(wǎng)地址路由器這關(guān)都過(guò)不去。配置的時(shí)候會(huì)提示連接失敗,網(wǎng)上很少改host的方法,對(duì)路由要求太高,容易弄亂網(wǎng)絡(luò)。


image.png

配置外網(wǎng)地址,在外網(wǎng)訪問(wèn)會(huì)出現(xiàn)文件拉取錯(cuò)誤。


image.png

這問(wèn)題在當(dāng)前網(wǎng)絡(luò)環(huán)境下難以解決,只想到了兩個(gè)辦法

1.在另一臺(tái)云主機(jī)安裝配置onlyoffice

方案一很簡(jiǎn)單,網(wǎng)絡(luò)示意如下圖


image.png

這個(gè)情形下很好理解,不過(guò)在配置的時(shí)候有一個(gè)地方需要注意,在外網(wǎng)時(shí)沒(méi)問(wèn)題,但如果通過(guò)內(nèi)外訪問(wèn),會(huì)出現(xiàn)無(wú)法拉取文件的問(wèn)題,查看onlyoffice的文件錯(cuò)誤提示(文件在docker 鏡像內(nèi)部/root/onlyoffice/logs/documentserver/converter/out.log里)

[2020-05-15T19:56:40.301] [ERROR] nodeJS - error downloadFile:url=http://192.168.1.110:18082/apps/onlyoffice/empty?doc=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJhY3Rpb24iOiJlbXB0eSJ9.IFkknNDAekyomrhunK1KvdH29qv89XNNYE1vfIxvkQk;attempt=1;code:ETIMEDOUT;connect:true;(id=conv_check_1570064549_docx)

也就是說(shuō)在onlyoffice是根據(jù)訪問(wèn)過(guò)來(lái)的地址去生成文件的下載url,如果在外部訪問(wèn)生成的就是外部訪問(wèn)的url,針對(duì)這個(gè)問(wèn)題nextcloud的有一個(gè)高級(jí)配置,可以解決。


image.png

Server address for internal requests from the Document Editing Service這個(gè)值相當(dāng)于是告訴onlyoffice實(shí)際的訪問(wèn)地址是哪個(gè),這樣能保證內(nèi)網(wǎng)外網(wǎng)都可以訪問(wèn)使用。

2.通過(guò)sockt 端口轉(zhuǎn)發(fā)來(lái)實(shí)現(xiàn)

這個(gè)方式實(shí)際是繞過(guò)了內(nèi)網(wǎng)不能訪問(wèn)自身公網(wǎng)地址web的問(wèn)題,在嘗試連接onlyoffice時(shí)走到外網(wǎng),然后轉(zhuǎn)到內(nèi)網(wǎng)的onlyoffice,onlyoffice通過(guò)內(nèi)部網(wǎng)絡(luò)拉取文件。(這里使用了rinetd,安裝簡(jiǎn)單)


image.png

這個(gè)配置上有一點(diǎn)區(qū)別,現(xiàn)在的nextcloud和onlyoffice在同個(gè)內(nèi)網(wǎng),因此在配置Server address for internal requests from the Document Editing Service時(shí)填的是內(nèi)網(wǎng)地址192.168.x.x,文件通過(guò)內(nèi)網(wǎng)拉取,連接走外網(wǎng)。


image.png

總結(jié):兩個(gè)方法都可以,問(wèn)題解決了,成本增加了,本人目前使用方法2。

補(bǔ)充:經(jīng)過(guò)研究,有了第三種解決方案

通過(guò)在NAS內(nèi)建立dns服務(wù)器,來(lái)做域名欺騙,是內(nèi)網(wǎng)機(jī)器在使用外網(wǎng)域名訪問(wèn)時(shí)候直接翻譯成內(nèi)網(wǎng)地址,網(wǎng)絡(luò)邏輯如下


image.png

具體的做法:
1.現(xiàn)在nas里安裝dns server,如果是其他系統(tǒng)可以使用類似的軟件,我用的是群暉所以直接安裝了。


image.png

2.配置dns server,增加一條master區(qū)域的域名,因?yàn)橛玫氖莇dns.net的域名,加這么一條。
image.png

3.配置一個(gè)A類解析,將我真正使用的域名解析為nas的地址,這樣如果在內(nèi)網(wǎng)使用域名訪問(wèn)就會(huì)解析為12.168.1.110


image.png

4.啟動(dòng)解析服務(wù),不需要解析的還是都送網(wǎng)關(guān)解析
image.png

5.為nextcloud和onlyoffice配置dns域名,指向192.168.1.110.
第一次修改的時(shí)候通過(guò)登錄到docker里面修改/ect/ resolv.conf 里的地址來(lái)做,每次一重啟就丟失,然后網(wǎng)上說(shuō)的其他固定resolv的方法在docker鏡像里指令都沒(méi)有。后來(lái)經(jīng)過(guò)研究發(fā)現(xiàn)docker里的這個(gè)值是直接映射宿主機(jī)的,所以直接在宿主機(jī)上加了一條dns規(guī)則。
image.png

重啟后docke就能按110的地址先進(jìn)行域名解析。
6.重新配置參數(shù),按如下配置就可以。
image.png
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容