帶有 OpenVPN 的 pfSense Site-toSite VPN 連接但不會路由流量
使用兩個 pfSense 路由器,我在 2 個站點之間創建了一個共享密鑰 VPN。兩個路由器都是 pfSense 1.2.2。客戶端站點的 pfSense 框是該站點的網關路由器,但在伺服器站點,pfSense 不是該 LAN 的網關。客戶端站點連接到伺服器站點正常,我收到“初始化序列完成”日誌消息,表明連接成功。
然後,從客戶端站點,我可以使用客戶端 LAN 上的任何機器在其 LAN 地址上 ping 伺服器站點上的 pfSense 框(甚至通過 Web 界面對其進行配置,因此 VPN 至少適用於該地址)。我還可以 ping “介面 IP”(客戶端配置)/“地址池”(伺服器配置)IP 範圍內的兩個地址,它們是相同的私有子網,並且不在客戶端或伺服器 LAN 範圍內。
問題是我無法訪問伺服器站點 LAN 上的任何其他 IP。我不需要能夠從伺服器站點訪問客戶端站點 LAN 上的機器,但我確實需要能夠從客戶端站點訪問的不僅僅是伺服器。目前,客戶端 LAN 上的任何人都可以 ping 到伺服器的 LAN 介面,客戶端 LAN 上的任何人都可以從 pfSense 伺服器本身 ping,但不能從伺服器 LAN ping。我在伺服器上的 LAN 介面防火牆規則上添加了 any <> any 規則。
如果我在伺服器的 LAN 介面上擷取流量,我會看到從客戶端 LAN 站點傳遞的數據包,但如果我嗅探,我看不到這些數據包進入伺服器的 LAN。正如我所說,我在 LAN 介面上添加了一條規則以允許任何到任何如下,那麼我還需要做什麼來允許從隧道到 LAN 的流量,反之亦然?
更新: 我在客戶端 pfSense 上添加了伺服器 LAN 的推送路由,反之亦然。我還嘗試升級到 pfSense 1.2.3 的 RC 並將 Opt1 介面設置為 tun0,然後在 opt1 和 LAN 之間添加允許規則。仍然沒有運氣。
**更新 2:**需要按照接受的答案中的描述在伺服器 LAN 上設置正確的路由,但我忽略了伺服器 pfSense/OpenVPN 單元在 KVM 下作為來賓作業系統執行,而另一半問題是 IP 轉發需要在主機作業系統的 /etc/ufw/before.rules 中啟用。這就是我沒有更徹底地解釋設置的原因。
這可能是一個問題。假設您有以下網路:
address pool: 10.1.1.0/255.255.255.0 router: 10.1.1.1 internal interface on internal vpn server: 10.1.1.2 some external machine that VPNs to network: 10.2.2.2 some internal client machine: 10.1.1.90
當您嘗試從外部 VPN 盒訪問 SIC 時,流量路由如下所示:
- 10.2.2.2
- vpn(網際網路)
- 10.1.1.2
- 10.1.1.90
- 好的
看起來很好,但是,為了讓流量流動,10.1.1.90 機器應該能夠響應,這意味著來自它的數據包也必須可以路由到 10.2.2.2。內部客戶端顯然有ip:10.1.1.90,遮罩:255.255.255.0和路由器:10.1.1.90。因此,數據包將按如下方式路由:
- 10.1.1.90
- 10.1.1.1(因為它是路由器,而 10.2.2.2 不可直接定址)
- 網際網路
- 未找到
基本上,回複數據包甚至不會到達 VPN。你能做什麼?顯然,將路由添加到內部客戶端以將所有數據包路由到 10.2.2.2 而不是 VPN 框而不是路由器,例如(Windows 框):
route add 10.2.2.0 mask 255.255.255.0 10.1.1.2
這將解決單機級別的問題。回複數據包會去:
- 10.1.1.90
- 10.1.1.2(顯式路由)
- vpn(網際網路)
- 10.2.2.2
要解決網路級別的問題,您必須在同一問題上修改路由器,將所有流向 10.2.2.0 的流量重定向到 10.1.1.2。這種方式回複數據包將去:
- 10.1.1.90
- 10.1.1.1
- 10.1.1.2
- vpn(網際網路)
- 10.2.2.2
另一種解決方案是:讓您的 VPN 盒在 10.1.1.2 介面上進行 NAT。這樣,對於內部機器,它看起來好像所有流量都來自 10.1.1.2,並且回復將轉到 10.1.1.2。不過,我建議通過路由,因為 NAT 將需要 VPN 盒上的額外資源用於連接跟踪器