Routing

OpenVPN:將客戶端的 LAN 轉發到 VPN

  • October 30, 2017

我目前的設置涉及一個具有單個網路介面的 openVPN 伺服器和另一個網路上的客戶端,該客戶端充當特定 LAN 的路由器。我的目標是啟用通過 VPN 轉發 LAN 流量。

LAN的路由器是通過其公共介面連接到openVPN伺服器的路由器。

  • openVPN 網路:10.8.1.0/24
  • 內部網路:192.168.10.0/24

防火牆

*nat
:PREROUTING ACCEPT [2:98]
:POSTROUTING ACCEPT [0:0]
:OUTPUT ACCEPT [5:327]
-A POSTROUTING -s 10.8.1.0/24 -o em1 -j MASQUERADE
COMMIT
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [186:19694]
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -p udp -m state --state NEW,ESTABLISHED -m udp --dport 1195 -j ACCEPT
-A INPUT -i tun+ -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -i tun+ -j ACCEPT
-A FORWARD -s 10.8.1.0/24 -o em1 -j ACCEPT
-A FORWARD -i tun+ -o em1 -m state --state RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -i em1 -o tun+ -m state --state RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT

OpenVPN 伺服器

port 1195 # 1194 is used by another OpenVPN 
proto udp
dev tun
ca /etc/openvpn/ca.crt
cert /etc/openvpn/suzume.crt
key /etc/openvpn/suzume.key
server 10.8.1.0 255.255.255.0
ifconfig-pool-persist ipp.txt
keepalive 10 120
comp-lzo
client-config-dir ccd
route 192.168.10.0 255.255.255.0
tls-auth /etc/openvpn/ta.key 0

OpenVPN 客戶端

client dev tun remote MY_SERVER_IP proto udp nobind resolv-retry infinite persist-key persist-tun ca ca.crt cert myhostname.crt key myhostname.key ns-cert-type server tls-auth ta.key 1 comp-lzo verb 3 mtu-測試

現在我還沒有推送預設網關:我正在測試將單個 IP 添加到路由表。在客戶端:

route add 69.192.17.215 gw 10.8.1.5 tun1

(同樣,客戶端實際上是 LAN 的路由器)

如果我在客戶端本身,我可以看到traceroute這些數據包通過 VPN。但是,如果我嘗試從客戶端訪問相同的 IP,則不會發生任何事情。伺服器上 VPN 介面上的 tcpdump 顯示:

# tcpdump -n -i tun0
 tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
 listening on tun0, link-type RAW (Raw IP), capture size 65535 bytes
 00:25:13.267823 IP MY_INTERNAL_IP > 69.192.17.215: ICMP echo request, id 3607, seq 11, length 64

什麼都沒有通過。

當我直接在客戶端上做事時比較一下:

00:28:10.277901 IP OPENVPN_CLIENT_IP > 69.192.17.215: ICMP echo request, id 5243, seq 1, length 64
00:28:10.365054 IP 69.192.17.215 > OPENVPN_CLIENT_IP: ICMP echo reply, id 5243, seq 1, length 64

我還為客戶設置iroute 192.168.10.0 255.255.255.0ccd目錄。但是我無法通過 VPN 路由來自 LAN 的流量,大概是因為伺服器不知道如何將數據發送回它們。

我缺少什麼來執行此操作?我對伺服器和客戶端/路由器具有完全訪問權限。伺服器執行 CentOS 6.5 和客戶端/路由器 Debian Squeeze。

解決方案是在客戶端/路由器上做

iptables -t nat -A POSTROUTING -s 192.168.10.0/24 -o tun1 -j MASQUERADE

tun1VPN介面在哪裡。通過偽裝內部 IP,一切正常。

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