我的項目中由于還沒有加入轉發服務器,因此暫時有3臺對外服務器,服務器與服務器之間暫時用內網連接,今天將服務器放到雙網卡的服務器,發現竟然將服務器內網地址告訴給客戶端來連接,很明顯這是錯的!
馬上著手解決這個問題:是否可以根據配置,對某幾條連接自動從gethostname中獲取到內網或者外網地址?事實證明是錯誤的!這里有一個例子:
某公司的電話只能對內打,對外打只能靠私人手機。如果 A正在用私人手機跟公司外的B打電話,此時,B想打C的手機,但是B不知道C的號碼。但同時,A只知道C的內線號,但不知道其手機。這種情況下,B只有找公司的前臺D要到 C的手機號,因為A,C在進入公司時就已經注冊過他們的手機號。這樣,B就成功的打通了C的手機號。
這是一種解決方法,也就是說,在現有的服務器管理的上層,再做一層平臺服務器,其他服務器到這臺服務器獲得自己在外網的地址,然后對需要進行外網聯系的服務器組和客戶端之間傳輸使用外網地址。
還有一種方法:
C首先將自己的手機號告訴A,之后B與A聯系后,得到C的手機號,而不是其內網號,即可聯通
這種方法的原理就是:將要讓客戶端轉接的某臺服務器的地址的公網ip保存在配置文件里,在讀取后將這個地址告訴給列表服務器,這樣客戶端連過來就會獲得一個正確的外網地址