zoukankan      html  css  js  c++  java
  • ROUTE: route addition failed

    ROUTE: route addition failed

    1)报FlushIpNetTable failed on interface错误 
    应对:以管理员身份运行OpenV-P-N

    2)报Warning: route gateway is not reachable on any active network adapters错误 
    应对:以管理员身份运行cmd,执行: 
    netsh int ip reset logfile.txt 
    netsh winsock reset catalog 
    然后重启机器 

    3)报ROUTE: route addition failed using CreateIpForwardEntry: 至少有一个参数不正确 
    应对:配置文件中增加: 
    route-method exe
    route-delay 2

    Server使用的配置文件server.conf

    #申明本机使用的IP地址,也可以不说明
    ;local a.b.c.d
    #申明使用的端口,默认1194
    port 1194
    #申明使用的协议,默认使用UDP,如果使用HTTP proxy,必须使用TCP协议
    ;proto tcp
    proto udp
    #申明使用的设备可选tap和tun,tap是二层设备,支持链路层协议。
    #tun是ip层的点对点协议,限制稍微多一些,本人习惯使用TAP设备
    dev tap
    ;dev tun
    #OpenV-P-N使用的ROOT CA,使用build-ca生成的,用于验证客户是证书是否合法
    ca ca.crt
    #Server使用的证书文件
    cert server.crt
    #Server使用的证书对应的key,注意文件的权限,防止被盗
    key server.key # This file should be kept secret
    #CRL文件的申明,被吊销的证书链,这些证书将无法登录
    crl-verify v-p-n-crl.pem
    #上面提到的生成的Diffie-Hellman文件
    dh dh1024.pem
    #这是一条命令的合集,如果你是OpenV-P-N的老用户,就知道这条命令的来由
    #这条命令等效于:
    # mode server #OpenV-P-N工作在Server模式,可以支持多client同时动态接入
    # tls-server #使用TLS加密传输,本端为Server,Client端为tls-client
    #
    # if dev tun: #如果使用tun设备,等效于以下配置
    # ifconfig 10.8.0.1 10.8.0.2 #设置本地tun设备的地址
    # ifconfig-pool 10.8.0.4 10.8.0.251 #说明OpenV-P-N使用的地址池(用于分配给客户),分别是起始地址、结束地址
    # route 10.8.0.0 255.255.255.0 #增加一条静态路由,省略下一跳地址,下一跳为对端地址,这里是: 10.8.0.2
    # if client-to-client: #如果使用client-to-client这个选项
    # push “route 10.8.0.0 255.255.255.0″ #把这条路由发送给客户端,客户连接成功后自动加入路由表,省略了下一跳地址: 10.8.0.1
    # else
    # push “route 10.8.0.1″ #否则发送本条路由,这是一个主机路由,省略了子网掩码和下一跳地址,分别为: 255.255.255.255 10.8.0.1
    #
    # if dev tap: #如果使用tap设备,则等效于以下命令
    # ifconfig 10.8.0.1 255.255.255.0 #配置tap设备的地址
    # ifconfig-pool 10.8.0.2 10.8.0.254 255.255.255.0 #客户端使用的地址池,分别是起始地址、结束地址、子网掩码
    # push “route-gateway 10.8.0.1″ #把环境变量route-gateway传递给客户机
    #
    server 10.8.0.0 255.255.255.0 #等效于以上命令
    #用于记录某个Client获得的IP地址,类似于dhcpd.lease文件,
    #防止OpenV-P-N重新启动后“忘记”Client曾经使用过的IP地址
    ifconfig-pool-persist ipp.txt
    #Bridge状态下类似DHCPD的配置,为客户分配地址,由于这里工作在路由模式,所以不使用
    ;server-bridge 10.8.0.4 255.255.255.0 10.8.0.50 10.8.0.100
    #通过OpenV-P-N Server往Client push路由,client通过pull指令获得Server push的所有选项并应用
    ;push “route 192.168.10.0 255.255.255.0″
    ;push “route 192.168.20.0 255.255.255.0″
    #OpenV-P-N启动后,在OpenV-P-N Server上增加的路由,OpenV-P-N停止后自动删除
    ;route 10.9.0.0 255.255.255.252
    #Run script or shell command cmd to validate client
    #virtual addresses or routes. 具体查看manual
    ;learn-address ./script
    #其他的一些需要PUSH给Client的选项
    #
    #使Client的默认网关指向OpenV-P-N,让Client的所有Traffic都通过OpenV-P-N走
    ;push “redirect-gateway”
    #DHCP的一些选项,具体查看Manual
    ;push “dhcp-option DNS 10.8.0.1″
    ;push “dhcp-option WINS 10.8.0.1″
    #如果可以让OpenV-P-N Client之间相互访问直接通过OpenV-P-N程序转发,
    #不用发送到tun或者tap设备后重新转发,优化Client to Client的访问效率
    client-to-client
    #如果Client使用的CA的Common Name有重复了,或者说客户都使用相同的CA
    #和keys连接OpenV-P-N,一定要打开这个选项,否则只允许一个人连接OpenV-P-N
    ;duplicate-cn
    #NAT后面使用OpenV-P-N,如果OpenV-P-N长时间不通信,NAT Session可能会失效,
    #导致OpenV-P-N连接丢失,为防止之类事情的发生,keepalive提供一个类似于ping的机制,
    #下面表示每10秒通过OpenV-P-N的Control通道ping对方,如果连续120秒无法ping通,
    #认为连接丢失,并重新启动OpenV-P-N,重新连接
    #(对于mode server模式下的OpenV-P-N不会重新连接)。
    keepalive 10 120
    #上面提到的HMAC防火墙,防止DOS攻击,对于所有的控制信息,都使用HMAC signature,
    #没有HMAC signature的控制信息不予处理,注意server端后面的数字肯定使用0,client使用1
    tls-auth ta.key 0 # This file is secret
    #对数据进行压缩,注意Server和Client一致
    comp-lzo
    #定义最大连接数
    ;max-clients 100
    #定义运行OpenV-P-N的用户
    user nobody
    group nobody
    #通过keepalive检测超时后,重新启动OpenV-P-N,不重新读取keys,保留第一次使用的keys
    persist-key
    #通过keepalive检测超时后,重新启动OpenV-P-N,一直保持tun或者tap设备是linkup的,
    #否则网络连接会先linkdown然后linkup
    persist-tun
    #定期把OpenV-P-Nn的一些状态信息写到文件中,以便自己写程序计费或者进行其他操作
    status OpenV-P-N-status.log
    #记录日志,每次重新启动OpenV-P-N后删除原有的log信息
    log /var/log/OpenV-P-N.log
    #和log一致,每次重新启动OpenV-P-N后保留原有的log信息,新信息追加到文件最后
    ;log-append OpenV-P-N.log
    #相当于debug level,具体查看manual
    verb 3

    把server.conf文件保存到/etc/OpenV-P-N目录中,并把使用easy-rsa下的脚本什成的key都复制到/etc/OpenV-P-N目录下,命令如下:
    # cd /etc/OpenV-P-N
    # cp easy-rsa/keys/ca.crt .
    # cp easy-rsa/keys/server.crt .
    # cp easy-rsa/keys/server.key .
    # cp easy-rsa/keys/dh1024.pem .
    # cp easy-rsa/keys/ta.key .
    # cp easy-rsa/keys/v-p-ncrl.pem .


    创建OpenV-P-N启动脚本,可以在源代码目录中找到,在sample-scripts目录下的open-v-p-n.init文件,将其复制到/etc/init.d/目录中,改名为OpenV-P-N
    然后运行:
    # chkconfig –add OpenV-P-N
    # chkconfig OpenV-P-N on
    立即启动OpenV-P-N
    # /etc/init.d/OpenV-P-N start

    接下来配置客户端的配置文件client.conf:
    Linux或Unix下使用扩展名为.conf Windows下使用的是.ov-p-n,并把需要使用的keys复制到配置文件所在目录ca.crt elm.crt elm.key ta.key

    # 申明我们是一个client,配置从server端pull过来,如IP地址,路由信息之类“Server使用push指令push过来的”
    client
    
    #指定接口的类型,严格和Server端一致
    dev tap
    ;dev tun
    
    # Windows needs the TAP-Win32 adapter name
    # from the Network Connections panel
    # if you have more than one. On XP SP2,
    # you may need to disable the firewall
    # for the TAP adapter.
    ;dev-node MyTap
    
    # 使用的协议,与Server严格一致
    ;proto tcp
    proto udp
    
    #设置Server的IP地址和端口,如果有多台机器做负载均衡,可以多次出现remote关键字
    
    remote 61.1.1.2 1194
    ;remote my-server-2 1194
    
    # 随机选择一个Server连接,否则按照顺序从上到下依次连接
    ;remote-random
    
    # 始终重新解析Server的IP地址(如果remote后面跟的是域名),
    # 保证Server IP地址是动态的使用DDNS动态更新DNS后,Client在自动重新连接时重新解析Server的IP地址
    # 这样无需人为重新启动,即可重新接入OpenV-P-N
    resolv-retry infinite
    
    # 在本机不邦定任何端口监听incoming数据,Client无需此操作,除非一对一的OpenV-P-N有必要
    nobind
    
    # 运行OpenV-P-N用户的身份,旧版本在win下需要把这两行注释掉,新版本无需此操作
    user nobody
    group nobody
    
    #在Client端增加路由,使得所有访问内网的流量都经过OpenV-P-N出去
    #当然也可以在Server的配置文件里头设置,Server配置里头使用的命令是
    # push “route 192.168.0.0 255.255.255.0″
    route 192.168.0.0 255.255.0.0
    
    # 和Server配置上的功能一样如果使用了chroot或者su功能,最好打开下面2个选项,防止重新启动后找不到keys文件,或者nobody用户没有权限启动tun设备
    persist-key
    persist-tun
    
    # 如果你使用HTTP代理连接OpenV-P-N Server,把Proxy的IP地址和端口写到下面
    # 如果代理需要验证,使用http-proxy server port [authfile] [auth-method]
    # 其中authfile是一个2行的文本文件,用户名和密码各占一行,auth-method可以省略,详细信息查看Manual
    ;http-proxy-retry # retry on connection failures
    ;http-proxy [proxy server] [proxy port #]
    
    # 对于无线设备使用OpenV-P-N的配置,看看就明白了
    # Wireless networks often produce a lot
    # of duplicate packets. Set this flag
    # to silence duplicate packet warnings.
    ;mute-replay-warnings
    
    # Root CA 文件的文件名,用于验证Server CA证书合法性,通过easy-rsa/build-ca生成的ca.crt,和Server配置里的ca.crt是同一个文件
    ca ca.crt
    # easy-rsa/build-key生成的key pair文件,上面生成key部分中有提到,不同客户使用不同的keys修改以下两行配置并使用他们的keys即可。
    cert elm.crt
    key elm.key
    
    # Server使用build-key-server脚本什成的,在x509 v3扩展中加入了ns-cert-type选项
    # 防止OpenV-P-N client使用他们的keys + DNS hack欺骗OpenV-P-Nclient连接他们假冒的OpenV-P-NServer
    # 因为他们的CA里没有这个扩展
    ns-cert-type server
    
    # 和Server配置里一致,ta.key也一致,注意最后参数使用的是1
    tls-auth ta.key 1
    
    # 压缩选项,和Server严格一致
    comp-lzo
    
    # Set log file verbosity.
    verb 4

    OpenV-P-N服务器添加下发路由项目等参数:

    高级选项中的内容:   push "route 192.168.21.0 255.255.255.0";mute 10;comp-lzo; 

    内网客户端若需和OpenV-P-N客户端通讯,需要手动添加路由。

    例如:在 /etc/sysconfig/static-routes 文件中增加如下内容:

    any net 192.168.21.80/48 gw 192.168.21.6

    在线掩码计算工具: http://tool.chinaz.com/Tools/subnetmask

    在linux下设置永久路由的方法: 
    1.在/etc/rc.local里添加 
    方法: 
    route add -net 192.168.3.0/24 dev eth0 

    route add -net 192.168.2.0/24 gw 192.168.2.254 

    route add –net 180.200.0.0 netmask 255.255.0.0 gw 10.200.6.201 dev eth0 metric 1

    route add:命令关键字,表示增加路由,若要删除路由,则为route del;

    -host/-net:表示路由目标是主机还是网段;

    netmask:表示路由目标为网段时才会使用到,表示路由目标网段的子网掩码;

    gw:命令关键字,后面跟下一跳网关;

    dev:命令关键字,后面跟具体设备名,表示路由是从该设备出去。

    metric:为路由指定所需越点数的整数值(范围是 1 ~ 9999),它用来在路由表里的多个路由中选择与转发包中的目标地址最为匹配的路由。所选的路由具有最少的跃点数。跃点数能够反映跃点的数量、路径的速度、路径可靠性、路径吞吐量以及管理属性。


    2.在/etc/sysconfig/network里添加到末尾 
    方法:GATEWAY=gw-ip 或者 GATEWAY=gw-dev 


    3./etc/sysconfig/static-routes : 
    any net 192.168.3.0/24 gw 192.168.3.254 
    any net 10.250.228.128 netmask 255.255.255.192 gw 10.250.228.129 


    如果在rc.local中添加路由会造成NFS(网络文件系统,是FreeBSD支持的文件系统中的一种,它允许网络中的计算机之间通过TCP/IP网络共享资源)无法自动挂载问题,所以使用static-routes的方法是最好的。无论重启系统和service network restart 都会生效 

    以下是解决NFS问题的描述: 

    按照linux启动的顺序,rc.local里面的内容是在linux所有服务都启动完毕,最后才被执行的,也就是说,这里面的内容是在netfs之后才被执行的,那也就是说在netfs启动的时候,服务器上的静态路由是没有被添加的,所以netfs挂载不能成功。 而且,如果你重启了网络服务器,那么路由就失效了,这个时候你不得不重新加载这个文件了。


    static-routes文件又是什么呢,这个是network脚本执行时调用的一个文件,这个文件的放置在/etc/sysconfig目录下,在network脚本中的位置是:

    # Add non interface-specific static-routes. 
    if [ -f /etc/sysconfig/static-routes ]; then 
    grep "^any" /etc/sysconfig/static-routes | while read ignore args ; do 
    /sbin/route add -$args 
    done 
    fi

    从这段脚本可以看到,这个就是添加静态路由的方法,static-routes的写法是

    any net 192.168.0.0/16 gw 网关ip

    这样的话,在启动network脚本的时候路由就自动添加上了,又因为network是在netfs前面启动的,自然在挂载nfs的时候就正常了。 
    这样看来,如果需要添加静态路由,使用static-routes文件要比使用rc.local好,而且当改变了网络配置,需要重启network脚本的 时候,相应的静态路由是可以自动添加上的,但这时如果使用rc.local的话,在重启network服务的时候,原本添加好的静态路由就消失了。

    =================== End

  • 相关阅读:
    Unity3d 4.3 通过代码动态更改SpriteRender的Sprite
    使用Unity3D的50个技巧:Unity3D最佳实践
    仿照wtform自定义Form组件
    flask-script
    Django中的信号
    浅淡python中with的用法,上下文管理器
    类和对象的创建过程(元类,__new__,__init__,__call__)
    flask-wtforms
    flask-session组件
    Flask-信号(blinker)
  • 原文地址:https://www.cnblogs.com/lsgxeva/p/11378768.html
Copyright © 2011-2022 走看看