OpenVPN 用戶端背後的網絡

OpenVPN 用戶端背後的網絡

美好的一天,我在 OpenVPN 網路方面遇到問題。主要想法如圖所示,遠端 OpenVPN 伺服器、2 個客戶端、MyPC 和 OpenWRT 用戶端,擁有自己的網路(包含 Client_1 和 Client_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 正常
Ping MyPC -> client_1 來自 192.168.1.205 的回覆:目標主機無法存取。

Ping OpenVPN 伺服器 -> MyPC 正常
Ping OpenVPN 伺服器 -> OpenWRT 正常
Ping OpenVPN 伺服器 -> client_1 來自 192.168.1.197 icmp_seq=1 目標主機無法存取

Ping OpenWRT -> OpenVPN 伺服器正常
Ping OpenWRT -> MyPC 正常
Ping OpenWRT -> client_1 正常

Ping client_1 -> OpenVPN 伺服器 來自 192.168.0.1 icmp_seq=1 目標連接埠無法存取
從 192.168.0.1 ping client_1 -> MyPC icmp_seq=1 目標連接埠無法存取
Ping client_1 -> OpenWRT 正常

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”
        選項 ip6分配 '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'
        選項輸入“接受”
        選項輸出“接受”
        選項轉送“拒絕”

配置區
        選項名稱“區域網路”
        選項輸入“接受”
        選項輸出“接受”
        選項轉送“拒絕”
        選項網路“lan”

配置區
        選項名稱“wan”
        選項輸入“拒絕”
        選項輸出“接受”
        選項轉送“拒絕”
        選項 masq '1'
        選項網路“wan wan6”

配置規則
        選項名稱“允許 DHCP 更新”
        選項 src 'wan'
        選項原型“udp”
        選項 dest_port '68'
        選項目標“接受”
        選項系列“ipv4”

配置規則
        選項名稱“允許 Ping”
        選項 src 'wan'
        選項原型“icmp”
        選項 icmp_type '回顯請求'
        選項系列“ipv4”
        選項目標“接受”

配置規則
        選項名稱“允許 DHCPv6”
        選項 src 'wan'
        選項原型“udp”
        選項 src_ip 'fe80::/10'
        選項 src_port '547'
        選項 dest_ip 'fe80::/10'
        選項 dest_port '546'
        選項系列“ipv6”
        選項目標“接受”

配置規則
        選項名稱“允許 ICMPv6 輸入”
        選項 src 'wan'
        選項原型“icmp”
        列出 icmp_type '回顯請求'
        列出 icmp_type '回顯回應'
        列出 icmp_type '目的地不可達'
        list icmp_type '資料包太大'
        list icmp_type '超時'
        列出 icmp_type '壞標頭'
        列出 icmp_type '未知標頭類型'
        list icmp_type '路由器請求'
        list icmp_type '鄰居請求'
        list icmp_type '路由器廣告'
        list icmp_type '鄰居廣告'
        選項限制“1000/秒”
        選項系列“ipv6”
        選項目標“接受”

配置規則
        選項名稱“允許 ICMPv6-轉送”
        選項 src 'wan'
        選項目標'*'
        選項原型“icmp”
        列出 icmp_type '回顯請求'
        列出 icmp_type '回顯回應'
        列出 icmp_type '目的地不可達'
        list icmp_type '資料包太大'
        list icmp_type '超時'
        列出 icmp_type '壞標頭'
        列出 icmp_type '未知標頭類型'
        選項限制“1000/秒”
        選項系列“ipv6”
        選項目標“接受”

配置包括
        選項路徑“/etc/firewall.user”

配置區
        選項輸出“接受”
        選項名稱“OVPN_FW”
        選項 masq '1'
        選項輸入“接受”
        選項轉送“拒絕”
        選項網路“OVPN”
        選項 mtu_fix '1'

配置轉發
        選項目標“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(連結不再有效)

答案1

你的問題可能是路由,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/24192.168.1.0/24172.20.1.0/24

相關內容