Firewall

使用兩個 openvpn 客戶端暴露伺服器的服務

  • April 18, 2015

我目前正在嘗試使用兩個 openvpn 客戶端來公開伺服器的服務,如標題中所述。我可能正在玩的力量遠遠超出我目前的理解,但請多多包涵:-)

大綱

這是我目前的設置:

          INTERNET eth0 |          | VPN tun0

                 /----- perimeter-a -----\ 
internet clients-:                         :------ server
                 \----- perimeter-b -----/

server在這種情況下也是 VPN-Server。perimeter-a並且perimeter-b是 VPN 客戶端。

server有eth0(公共介面)、eth1(另一個公共介面)和tun0(vpn介面)。每個perimeter都有 eth0(公共介面)和 tun0(vpn 介面)。

目標

目標是讓任何internet client人都能夠與其中任何一個交談,或者perimeter-aperimeter-b他們看起來像是被其中任何一個服務,而實際上,您正在被服務server。連接到遊戲伺服器(例如)perimeter-a並連接到遊戲伺服器perimeter-b將使您server每次都結束。

此規則的唯一例外應該是何時轉發perimeter-aperimeter-b不轉發相應埠。埠應該在這兩台機器中的任何一台上顯式轉發。UDP 和 TCP 都應該被處理。

以前的嘗試

我之前的嘗試依賴於通過 iptables 進行的 NAT,但存在失去實際internet clienton的地址的問題serverinternet client應該保留的地址- 這就是為什麼我決定使用 VPN 並主要server通過它來驅動流量。

想法和目前嘗試

我目前的嘗試是使用perimeter-aperimeter-b作為server. 問題是,我不確定當兩者perimeters都是 VPN 客戶端而不是伺服器時是否可以設置它。

我可以在不重寫數據包源的情況下將數據包從任何一個傳遞到任何一個perimeters,然後通過確定它是通過 tun0進入server的,然後將其發送回任何一個嗎?但是我需要有兩個 tun-interfaces 來區分兩者,對吧?然後,當這些數據包到達時,我需要讓該機器將源重寫為自身並將其發送到,假設數據包來自 tun0 - 對嗎?perimeters``server``perimeters``perimeter-XY``internet client

在這一點上我完全迷失了,我找不到任何描述我的實際情況的東西。我離解決方案還有多遠?我是不是走錯了路?這一切有可能嗎?

本質上,我正在嘗試建構兩個偽網關和一台機器來根據連接的來源使用它們。

編輯1:有問題的三台伺服器不在同一個區域網路上-它們各自位於完全不同的位置。

如果我正確理解了您的問題,Linux 虛擬伺服器項目 - http://linuxvirtualserver.org/解決了您想要實現的目標。至少它會給你指向問題的指針。

引用自:https://serverfault.com/questions/683681