Vpn
OpenVPN客戶端背後的網路
美好的一天,我遇到了 OpenVPN 網路問題。主要思想如圖所示,遠端 OpenVPN 伺服器,2 個客戶端,MyPC 和 OpenWRT 客戶端,具有自己的網路,客戶端_1 和客戶端_2。我需要能夠從 MyPC 訪問 Client_1,反之亦然。它看起來像一個路由或轉發問題。
|-----------------------| |-----------------------------------| |Ubuntu 14.04 | |OpenWRT router | |OpenVPN Server | <-----> |Acts as OpenVPN client | |WAN 192.168.1.197 | |LAN: 192.168.0.1, WAN:192.168.1.1 | |OpenVPN IP: 172.20.2.1 | |OpenVPN IP:172.20.1.100 | |-----------------------| |-----------------------------------| ^ ^ ^ | | | | | | v v v |-----------------------| |-------------------| |------------------| |MyPC, OpenVPN client | (1) |Network client_1 | |Network client_2 | |LAN: 192.168.1.205 | <-------> |LAN: 192.168.0.213 | |LAN: 192.168.1.101| |OpenVPN IP:172.20.2.101| |-------------------| |------------------| |-----------------------|
ping 結果
Ping MyPC -> OpenVPN 伺服器確定 Ping MyPC -> OpenWRT OK Ping MyPC -> client_1 來自 192.168.1.205 的回复:無法訪問目標主機。 Ping OpenVPN 伺服器 -> MyPC 確定 Ping OpenVPN 伺服器 -> OpenWRT OK Ping OpenVPN 伺服器 -> client_1 來自 192.168.1.197 icmp_seq=1 目標主機無法訪問 Ping OpenWRT -> OpenVPN 伺服器正常 Ping OpenWRT -> MyPC OK Ping OpenWRT -> client_1 OK Ping client_1 -> OpenVPN server From 192.168.0.1 icmp_seq=1 Destination Port Unreachable Ping client_1 -> MyPC From 192.168.0.1 icmp_seq=1 Destination Port Unreachable Ping client_1 -> OpenWRT OK
OpenVPN 配置、伺服器和客戶端
======OpenVPN configuration =================================================================== port 1198 proto udp dev tap2 ca keys/remote_management/ca.crt cert keys/remote_management/remote_man.crt key keys/remote_management/remote_man.key dh keys/remote_management/dh4096.pem server-bridge 172.20.2.1 255.255.255.0 172.20.2.100 172.20.2.253 #@@ br1 eth2 crl-verify keys/remote_management/crl.pem ifconfig-pool-persist servers/remote_man/logs/ipp.txt tls-auth servers/remote_man/ta.key 0 cipher AES-128-CBC user nobody group nogroup status servers/remote_man/logs/openvpn-status.log log-append servers/remote_man/logs/openvpn.log verb 2 mute 20 max-clients 10 management 127.0.0.1 7507 keepalive 10 120 client-config-dir /etc/openvpn/servers/remote_man/ccd tls-server client-to-client comp-lzo persist-key persist-tun ccd-exclusive push "route 172.20.2.0 255.255.255.0" route 192.168.0.0 255.255.255.0 ======OpenVPN client MyPC configuration ====================================================== client proto udp dev tap ca ca.crt dh dh4096.pem cert ***.crt key ***.key remote *** 1198 tls-auth ta.key 1 cipher AES-128-CBC verb 2 mute 20 keepalive 10 120 comp-lzo persist-key persist-tun float resolv-retry infinite nobind ======OpenVPN client OpenWRT configuration =================================================== client proto udp dev tap ca /etc/openvpn/sol102/ca.crt dh /etc/openvpn/sol102/dh4096.pem cert /etc/openvpn/sol102/sol102.crt key /etc/openvpn/sol102/sol102.key remote *** 1198 tls-auth /etc/openvpn/sol102/ta.key 1 cipher AES-128-CBC verb 2 mute 20 keepalive 10 120 comp-lzo persist-key persist-tun float resolv-retry infinite nobind
OpenWRT 配置
======OpenWRT網路配置========================================== =================== 配置介面“環回” 選項 ifname 'lo' 選項原型“靜態” 選項 ipaddr '127.0.0.1' 選項網路遮罩“255.0.0.0” 配置全域變數“全域變數” 選項 ula_prefix 'fdf2:d4ae:ecd5::/48' 配置界面“區域網路” 選項 ifname 'eth0.1' 選項 force_link '1' 選項類型“橋” 選項原型“靜態” 選項網路遮罩“255.255.255.0” 選項 ip6assign '60' 選項 ipaddr '192.168.0.1' 配置界面'wan' 選項 ifname 'eth0.2' 選項原型“dhcp” 配置界面'wan6' 選項 ifname '@wan' 選項原型“dhcpv6” 配置開關 選項名稱'switch0' 選項重置'1' 選項 enable_vlan '1' 配置 switch_vlan 選項設備'switch0' 選項 vlan '1' 選項埠“1 2 3 4 5t” 配置 switch_vlan 選項設備'switch0' 選項 vlan '2' 選項埠“0 5t” 配置界面'OVPN' 選項原型“無” 選項委託“0” 選項 ifname 'tap0' ======OpenWRT防火牆配置========================================== =================== 配置預設值 選項 syn_flood '1' 選項輸入“接受” 選項輸出“接受” 選項轉發“拒絕” 配置區 選項名稱“區域網路” 選項輸入“接受” 選項輸出“接受” 選項轉發“拒絕” 選項網路“區域網路” 配置區 選項名稱'wan' 選項輸入“拒絕” 選項輸出“接受” 選項轉發“拒絕” 選項遮罩'1' 選項網路 'wan wan6' 配置規則 選項名稱“允許 DHCP 續訂” 選項 src 'wan' 選項 proto 'udp' 選項 dest_port '68' 選項目標“接受” 選項系列“ipv4” 配置規則 選項名稱“允許 Ping” 選項 src 'wan' 選項原型“icmp” 選項 icmp_type '迴聲請求' 選項系列“ipv4” 選項目標“接受” 配置規則 選項名稱“允許 DHCPv6” 選項 src 'wan' 選項 proto 'udp' 選項 src_ip 'fe80::/10' 選項 src_port '547' 選項 dest_ip 'fe80::/10' 選項 dest_port '546' 選項系列“ipv6” 選項目標“接受” 配置規則 選項名稱“允許 ICMPv6 輸入” 選項 src 'wan' 選項原型“icmp” 列出 icmp_type '迴聲請求' 列出 icmp_type 'echo-reply' 列出 icmp_type '目的地無法到達' 列出 icmp_type '數據包太大' 列出 icmp_type '時間超出' 列出 icmp_type '壞頭' 列出 icmp_type '未知標題類型' 列出 icmp_type '路由器請求' list icmp_type '鄰居請求' 列出 icmp_type '路由器廣告' 列出 icmp_type '鄰居廣告' 選項限制“1000/秒” 選項系列“ipv6” 選項目標“接受” 配置規則 選項名稱“允許 ICMPv6 轉發” 選項 src 'wan' 選項 dest '*' 選項原型“icmp” 列出 icmp_type '迴聲請求' 列出 icmp_type 'echo-reply' 列出 icmp_type '目的地無法到達' 列出 icmp_type '數據包太大' 列出 icmp_type '時間超出' 列出 icmp_type '壞頭' 列出 icmp_type '未知標題類型' 選項限制“1000/秒” 選項系列“ipv6” 選項目標“接受” 配置包括 選項路徑“/etc/firewall.user” 配置區 選項輸出“接受” 選項名稱“OVPN_FW” 選項遮罩'1' 選項輸入“接受” 選項轉發“拒絕” 選項網路“OVPN” 選項 mtu_fix '1' 配置轉發 選項 dest 'OVPN_FW' 選項 src 'lan' 配置轉發 選項 dest 'wan' 選項 src 'lan' 配置轉發 選項 dest 'lan' 選項 src 'OVPN_FW'
我有一些 tcpdump
======OpenVPN server tcpdump icmp filtered ==================================================== 12:46:11.654580 IP 172.20.2.101 > 192.168.0.213: ICMP echo request, id 1, seq 83, length 40 12:46:11.654580 IP 172.20.2.101 > 192.168.0.213: ICMP echo request, id 1, seq 83, length 40 12:46:14.652217 IP 172.20.2.1 > 172.20.2.101: ICMP host 192.168.0.213 unreachable, length 68 12:46:14.652244 IP 172.20.2.1 > 172.20.2.101: ICMP host 192.168.0.213 unreachable, length 68 12:46:14.657835 IP 172.20.2.101 > 192.168.0.213: ICMP echo request, id 1, seq 84, length 40 12:46:14.657835 IP 172.20.2.101 > 192.168.0.213: ICMP echo request, id 1, seq 84, length 40 12:46:17.656214 IP 172.20.2.1 > 172.20.2.101: ICMP host 192.168.0.213 unreachable, length 68 12:46:17.656241 IP 172.20.2.1 > 172.20.2.101: ICMP host 192.168.0.213 unreachable, length 68 12:46:17.661768 IP 172.20.2.101 > 192.168.0.213: ICMP echo request, id 1, seq 85, length 40 12:46:17.661768 IP 172.20.2.101 > 192.168.0.213: ICMP echo request, id 1, seq 85, length 40 12:46:20.660206 IP 172.20.2.1 > 172.20.2.101: ICMP host 192.168.0.213 unreachable, length 68 12:46:20.660233 IP 172.20.2.1 > 172.20.2.101: ICMP host 192.168.0.213 unreachable, length 68 12:46:20.665362 IP 172.20.2.101 > 192.168.0.213: ICMP echo request, id 1, seq 86, length 40 12:46:20.665362 IP 172.20.2.101 > 192.168.0.213: ICMP echo request, id 1, seq 86, length 40 12:46:23.666797 IP 172.20.2.1 > 172.20.2.101: ICMP host 192.168.0.213 unreachable, length 68 12:46:23.666824 IP 172.20.2.1 > 172.20.2.101: ICMP host 192.168.0.213 unreachable, length 68 ======OpenWRT client tcpdump icmp filtered ==================================================== 12:44:17.299404 IP 172.20.2.1 > 172.20.2.100: ICMP redirect 172.20.2.101 to host 172.20.2.101, length 48 12:44:18.461809 IP 172.20.2.1 > 172.20.2.100: ICMP redirect 172.20.2.101 to host 172.20.2.101, length 196 12:44:19.464258 IP 172.20.2.1 > 172.20.2.100: ICMP redirect 172.20.2.101 to host 172.20.2.101, length 196 12:44:20.466652 IP 172.20.2.1 > 172.20.2.100: ICMP redirect 172.20.2.101 to host 172.20.2.101, length 196 12:44:20.944332 IP 172.20.2.1 > 172.20.2.100: ICMP redirect 172.20.2.101 to host 172.20.2.101, length 48 12:44:32.311732 IP 172.20.2.1 > 172.20.2.100: ICMP redirect 172.20.2.101 to host 172.20.2.101, length 308
編輯:不能放那麼多程式碼,所以http://pastebin.com/ThgqBUgM(連結不再有效)
您的問題可能是路由,Ubuntu 伺服器必須知道在哪裡可以找到 192.168.0.0/24 -
route add -net 192.168.0.0/24 gw 172.20.1.100
,否則此路由在預設網關處匹配並且數據包使用錯誤的介面路由。每個轉發數據包的設備(OpenWRT 和 Ubuntu)都必須知道 3 個網路192.168.0.0/24
:192.168.1.0/24
和172.20.1.0/24
.