server环境:

eth0 ip地址为:10.18.6.115

open*** server的配置文件如下

local 10.18.6.115
port 1194
proto udp
dev tun
ca /etc/open***/easy-rsa/2.0/keys/ca.crt
cert /etc/open***/easy-rsa/2.0/keys/server.crt
key /etc/open***/easy-rsa/2.0/keys/server.key
dh /etc/open***/easy-rsa/2.0/keys/dh1024.pem
status /var/run/open***.status
server 172.17.1.0  255.255.255.0
ifconfig-pool-persist ipp.txt
push "dhcp-option DNS 10.18.6.65"
push "route 10.18.6.0 255.255.255.0"
push "route 10.18.2.0 255.255.255.0"
client-config-dir /etc/open***/ccd
user nobody
group nobody
duplicate-cn
keepalive 10 120
comp-lzo
persist-key
persist-tun
script-security 2
verb 3

配置中推送了dns和2条路由到客户端

设置iptables:

iptables  -t nat -A POSTROUTING -s 172.17.1.0/24 -j SNAT --to-source 10.18.6.115

------------------------------------------------------------------------

客户端192.16.5.0/24和***server在同一个局域网内,通讯正常。

但在载入***配置文件,拨通***后,无法ping通10.18.6.0/24网段。

经过各种配置排除都没有发现任何问题。


故障分析:

拨***之前, 192.16.5.0/24 →10.18.6.0/24 直接局域网通讯。

拨***之后,由于推送了10.18.6.0/24的路由。客户端会把与10.18.6.0/24的通讯包封装到***接口,然后下一跳去找***server 10.18.6.115。但***server的地址也是10.18.6.0/24段啊。这不就矛盾了吗?简单说,就是找10.18.6去***server,找***server又得去10.18.6。这推来推去,肯定走不出去。

解决:把10.18.6.0从***server的配置中剔除。


local 10.18.6.115
port 1194
proto udp
dev tun
ca /etc/open***/easy-rsa/2.0/keys/ca.crt
cert /etc/open***/easy-rsa/2.0/keys/server.crt
key /etc/open***/easy-rsa/2.0/keys/server.key
dh /etc/open***/easy-rsa/2.0/keys/dh1024.pem
status /var/run/open***.status
server 172.17.1.0  255.255.255.0
ifconfig-pool-persist ipp.txt
push "dhcp-option DNS 10.18.6.65"
push "route 10.18.2.0 255.255.255.0"
client-config-dir /etc/open***/ccd
user nobody
group nobody
client-to-client
duplicate-cn
keepalive 10 120
comp-lzo
persist-key
persist-tun
script-security 2
verb 3
log         open***.log