科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网网络频道路由交换实路出真知 FreeBSD8下Bridge配置openVPN

实路出真知 FreeBSD8下Bridge配置openVPN

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

公司的办公网络是192.168.4.0/24,均只用单网卡eth0,通过Juniper防火墙映射公网IP上网,即内网内所有的机器的网关均是防火墙的固定IP-192.168.4.3,目前想通过外网拨号(VPN服务器IP为192.168.4.46)进公司内部局域网进行办公.

作者: 抚琴煮酒 来源:51CTO 2010年12月23日

关键字: VPN FreeBSD8

  • 评论
  • 分享微博
  • 分享邮件

在本页阅读全文(共2页)

Ethernet Bridging 

桥接概览

以太网桥接将一个以太网接口和一个或多个虚拟TAP接口结合(combine)并将它们桥接为一个桥接接口。以太网桥接代表一个物理以太网交换机 (switch)的软件模拟,以太网桥可以 认为是在一台机器上共享一个IP子网连接多个以太网卡(物理的或虚拟的)的软件交换机,

通过将在不同地方的一个物理以太网卡和一个OpenVPN的TAP接口桥接,可以将两个以太网络在逻辑上合并为好象是一个以太子网。

一、这里交待下openVPN的操作系统及网络分配等。

openVPN服务器采用64bit的FreeBSD8,分配的IP为192.168.4.46,通过防火墙NAT上网,网关为192.168.4.3,单网卡,无公网IP;Freebsd8下配置网卡跟linux一样,用脚本控制较简单,脚本如下:

[root@openvpn ~]# cat /root/addbr0.sh
#!/bin/sh
kldload if_tap
ifconfig bridge0 create
ifconfig bridge0 addm re0
ifconfig bridge0 192.168.4.241  netmask 255.255.255.0  broadcast 192.168.4.255
/usr/local/sbin/openvpn --config /usr/local/etc/server.conf --daemon openvpn
ifconfig bridge0 addm tap0

ifconfig bridge0 deletem tap0
/usr/local/sbin/openvpn --config /usr/local/etc/server.conf --daemon openvpn
ifconfig bridge0 addm tap0

 


    这里说明一下,跟bridge0分配的也是192.168.4.0网段的机器,这里我看网上大部分的文章都是用IP,即192.168.4.46,我建议另一个IP配置,这个IP不能跟局域网的IP发生冲突,脚本成功运行后,可用命令ifconfig 检查下,成功的配置应该如下:

    二、安装过程我简略带过,不会的朋友请参考googel的相关搜索结果或我的上一篇文章《实路出真知 配置openVPN时应该注意的事项》,Server端的配置如下,这是重头戏,相关语法我会详细介绍。

    [root@openvpn ~]# cat /usr/local/etc/server.conf | grep -v "^#" | grep -v "^;"  | sed '/^$/d'
    port 1194
    proto udp
    dev tap0
    ca   /usr/local/src/openvpn-2.0.9/easy-rsa/2.0/keys/ca.crt
    cert /usr/local/src/openvpn-2.0.9/easy-rsa/2.0/keys/server.crt
    key  /usr/local/src/openvpn-2.0.9/easy-rsa/2.0/keys/server.key  # This file should be kept secret
    dh /usr/local/src/openvpn-2.0.9/easy-rsa/2.0/keys/dh1024.pem
    ifconfig 192.168.4.241  255.255.255.0
    server-bridge 192.168.4.241 255.255.255.0 192.168.4.244 192.168.4.246
    push "redirect-gateway"
    client-to-client
    keepalive 10 120
    comp-lzo
    user nobody
    group nobody
    persist-key
    persist-tun
    status openvpn-status.log
    log-append  openvpn.log
    verb 3

    以上脚本运行时已成功启动了openVPN,并分配了网桥bridge0地址--192.168.4.241,可用命令lsof  -i:1194检验下。 

       

      这里我将server.conf详细参数说明下,这里也是用bridge配置的重点

      ;locala.b.c.d ##申明本机使用的IP地址,也可以不说明
      port1194 ##申明使用的端口,默认1194
      ;prototcp ##申明使用的协议,默认使用UDP,如果使用HTTP proxy,必须使用TCP协议
      proto udp
      dev tap ##申明使用的设备可选tap和tun,tap是二层设备,支持链路层协议。#tun是ip层的点对点协议,限制稍微多一些,本人习惯使用TAP设备
      ;devtun
      ;dev-nodeMyTap #windows下需要像这样指定设备名
      ##OpenVPN使用的ROOT CA,使用build-ca生成的,用于验证客户是证书是否合法
      ca /user/local/src/openvpn-2.0.9/easy-rsa/keys/ca.crt
      #Server使用的证书文件
      cert /usr/local/src/openvpn-2.0.9/easy-rsa/keys/server.crt
      #Server使用的证书对应的key,注意文件的权限,防止被盗
      key /usr/local/src/openvpn-2.0.9/easy-rsa/keys/server.key
      #This file should be kept secret
      #CRL文件的申明,被吊销的证书链,这些证书将无法登录
      crl-verify vpncrl.pem
      #上面提到的生成的Diffie-Hellman文件
      dh /user/local/src/openvpn-2.0.9/easy-rsa/keys/dh1024.pem
      #防止openvpn重新启动后"忘记"Client曾经使用过的IP地址
      ifconfig-pool-persistipp.txt
      #Bridge状态下类似DHCPD的配置,为客户分配地址,由于这里工作在桥接模式
      server-bridge 192.168.4.241 255.255.255.0 192.168.4.244 192.168.4.246
      #openVPN中有个参数是push,它表示通过VPN Server往Client push路由,
      client通过pull指令获得Server push的所有选项并应用(这一点很重要,这样其他服务器添加一下路由就可以登陆了,
      否则无效,这个最好和你的内网断一至,否则也不生效),但在网桥模式下这个就不需要配置了,这个主要用于其路由模式。
      
      
      #如果可以让VPN Client之间相互访问直接通过openvpn程序转发
      client-to-client
      #NAT后面使用VPN,如果VPN长时间不通信,NAT Session可能会失效,
      #导致VPN连接丢失,为防止之类事情的发生,keepalive提供一个类似于ping的机制,
      #下面表示每10秒通过VPN的Control通道ping对方,如果连续120秒无法ping通,
      #认为连接丢失,并重新启动VPN,重新连接
      #(对于mode server模式下的openvpn不会重新连接)。
      keepalive10 120
      #对数据进行压缩,注意Server和Client一致
      comp-lzo
      #定义最大连接数
      max-clients100
      #定义运行openvpn的用户
      usernobody
      groupnobody
      #通过keepalive检测超时后,重新启动VPN,不重新读取keys,保留第一次使用的keys
      persist-key
      #通过keepalive检测超时后,重新启动VPN,一直保持tun或者tap设备是linkup的,
      #否则网络连接会先linkdown然后linkup
      persist-tun
      #定期把openvpn的一些状态信息写到文件中,以便自己写程序计费或者进行其他操作
      statusopenvpn-status.log
      #记录日志,每次重新启动openvpn后删除原有的log信息
      log
      openvpn.log
      #相当于debug level,具体查看manual
      verb3
      客户端的配置文件较简单, 我们这里就不能详细阐述了,如下:
      [root@openvpn]# cat client.txt | grep -v "^;" | grep -v "^#" | sed '/^$/d'
      client
      dev tap0
      proto udp
      remote 192.168.4.46 1194
      #内网通过防火墙NAT作的DMZ映射出去
      resolv-retry infinite
      nobind
      persist-key
      persist-tun
      ca ca.crt
      cert zacharyz.crt
      key zacharyz.key
      comp-lzo
      verb 3

      测试结果:

      我们测试时分配的是联通的公网IP,测试时发现只要一拨号,无论是ADSL还是小区环境,结果只要能连通192.168.4.46的机器,它所能连通的网段均都能连通,由于 我只需要ssh环境即可完成日常工作,但其它同事需要远程桌面环境,所以准备将其更改完电信的公网IP;另整个环境部署工作完成时,得到了我们部门经理Manager Z的帮助,这里 表示感谢。这篇文章主要介绍的是桥接模式下的openVPN,如果只需要路由模式,请参考我在51cto的另一篇openVPN,请注意二者的区别;整个openVPN在64bit的Freebsd8下完成。

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章