站點到站點 OpenVPN 和 pfSense 無法通過流量的問題
我正在嘗試在嵌入式路由器上執行 pfSense 1.2.3-RELEASE 上的 OpenVPN 隧道。
我有一個本地 LAN 10.34.43.0/254。遠端 LAN 為 10.200.1.0/24。本地 pfSense 配置為客戶端,遠端配置為伺服器。
我的 OpenVPN 隧道在內部使用 IP 範圍 10.99.89.0/24。遠端側還有一些額外的 LAN 通過隧道路由,但問題不在於那些,因為我的連接在鏈中的那個點之前失敗。
隧道很好,原木看起來很健康。我發現是這樣的:-
- 我可以從本地 pfSense 盒子的外殼 ping 和 telnet 到遠端 LAN 和其他遠端 LAN。
- 我無法從本地網路 ping 或 telnet 到任何遠端 LAN。
- 我無法從遠端 LAN 或遠端 pfSense 盒子的外殼 ping 或 telnet 到本地網路。
- 如果我 tcpdump 雙方的 tun 介面並從本地 LAN ping,我會看到數據包在本地到達隧道,但它們不會出現在遠端端(如果我 tcpdump,它們也不會出現在遠端 LAN 介面上)。
- 如果我 tcpdump 雙方的 tun 介面並從本地 pfSense shell ping,我會看到數據包在本地到達隧道,然後退出遠端端。我還可以 tcpdump 遠端 LAN 介面並看到它們也經過那裡。
- 如果我對兩邊的 tun 介面進行 tcpdump 並從遠端 pfSense shell ping,我會看到數據包到達遠端 tun 但它們不會從本地出現。
這是遠端端正在使用的配置文件:-
#user nobody #group nobody daemon keepalive 10 60 ping-timer-rem persist-tun persist-key dev tun proto udp cipher BF-CBC up /etc/rc.filter_configure down /etc/rc.filter_configure server 10.99.89.0 255.255.255.0 client-config-dir /var/etc/openvpn_csc push "route 10.200.1.0 255.255.255.0" lport <port> route 10.34.43.0 255.255.255.0 ca /var/etc/openvpn_server0.ca cert /var/etc/openvpn_server0.cert key /var/etc/openvpn_server0.key dh /var/etc/openvpn_server0.dh comp-lzo push "route 205.217.5.128 255.255.255.224" push "route 205.217.5.64 255.255.255.224" push "route 165.193.147.128 255.255.255.224" push "route 165.193.147.32 255.255.255.240" push "route 192.168.1.16 255.255.255.240" push "route 192.168.2.16 255.255.255.240"
這是本地配置:-
writepid /var/run/openvpn_client0.pid #user nobody #group nobody daemon keepalive 10 60 ping-timer-rem persist-tun persist-key dev tun proto udp cipher BF-CBC up /etc/rc.filter_configure down /etc/rc.filter_configure remote <host> <port> client lport 1194 ifconfig 10.99.89.2 10.99.89.1 ca /var/etc/openvpn_client0.ca cert /var/etc/openvpn_client0.cert key /var/etc/openvpn_client0.key comp-lzo
您可以在此處查看從 pfSense 中提取的路由表的相關部分http://pastie.org/5365800
本地防火牆允許來自 LAN 的所有 ICMP,而我的 PC 允許任何地方的所有內容。遠端防火牆將其 LAN 視為受信任的,並允許該介面上的所有流量。
誰能建議為什麼這不起作用,以及我接下來可以嘗試什麼?
使用 SSL/TLS 站點到站點 VPN,您需要伺服器上的路由,以及客戶端特定覆蓋中的 iroute。這裡的描述聽起來像你錯過了那個 iroute。與共享密鑰不同,伺服器上的路由就足夠了。對於這樣的 VPN,伺服器上的路由將流量發送到特定的 OpenVPN 實例,並且其內部路由通過 iroutes 必須知道哪個客戶端路由該特定網路。
在 VPN>OpenVPN,客戶端特定覆蓋選項卡下,添加一個新條目。對於“通用名稱”,從客戶端的證書中輸入 CN。在高級框中,填寫“iroute 10.34.43.0 255.255.255.0”(無引號)。其餘的保持預設,點擊保存。從客戶端系統上的狀態>服務重新啟動 OpenVPN 客戶端,一旦它重新連接,如果它確實是失去的 iroute,它應該可以工作。