频道直达 - 专题 - 新闻 - 技巧 - 组网 - 开发 - 安全 - web编程 - 图像 - 操作系统 - 数据库 - 教育 - 旅游 - 健康 - 时尚 - 驱动 - 软件 - 游戏 - 多媒体 - ERP - 讨论组

利用openvpn+linux快速建立企业VPN

来源: 作者: 出处:巧巧读书 2006-07-11 进入讨论组
关 键 词:.net  ipv4  ip地址  linux  nat  

  openvpn可工作于两种模式:
  一种是IP遂道路由模式,主要应用于点对点
  一种是基于以太网的遂道桥模式, 应用于点对多点,有多个分支机构
  本文介绍的配置实例是第一种
  拓扑图:
  局域网1: OFFICE主机装redhat9.0 两块网卡
  eth1接公网 61.131.58.x ,
  eth0接 内网192.168.1.56
  vpn 10.1.0.1
  A主机 192.168.1.222
  局域网2:
  HOME主机装redhat9.0两块网卡
  eth0 接公网 218.85.158.244
  eth1 接内网 192.168.0.235
  vpn 10.1.0.2
  B主机 192.168.0.45
  
  环境:redhat9.0+lzo+openssl+openvpn
  openssl用来进行加密,lzo用来进行数据压缩
  下载地址 http://prdownloads.sourceforge.net/openvpn/openvpn-2.0_beta7.tar.gz
  http://www.oberhumer.com/opensource/lzo/download/lzo-1.08.tar.gz
  
  先检查openssl是否已安装
  rpm ?qa | grep openssl
  没有请先装openssl, openssl如何安装就不介绍了
  我将openvpn-2.0.beta7.tar.gz和lzo-1.08.tar.gz下载到/home
  #cd /home
  #tar zxvf lzo-1.08.tar.gz
  #cd lzo-1.08.
  #./comfigure
  #make
  #make install
  #tar zxvf openvpn-2.0_beta7.tar.gz
  #cd openvpn-2.0_beta7
  #./configure --with-lzo-headers=/usr/local/include --with-lzo-lib=/usr/local/lib
  #make
  #make install
  #mkdir /etc/openvpn
  #cd /etc/openvpn
  #openvpn --genkey --secret static.key
  将static.key从office主机复制到home主机的/etc/openvpn目录中
  office#scp static.key root@218.85.158.244:/etc/openvpn
  office#cd /home/openvpn-2.0_beta7/sample-config-files
  office#cp static-office.conf /etc/openvpn
  office#cp firewall.sh /etc/openvpn
  office#cp openvpn-startup.sh /etc/openvpn
  office#cp office.up /etc/openvpn
  修改static-office.conf ,firewall.sh ,openvpn-startup.sh,office.up
  我们先来看office主机的这几个配置文件
  static-office.conf配置如下:
  dev tun0
  remote 218.85.158.244 #为对端的公网ip
  ifconfig 10.1.0.1 10.1.0.2 #为本端和对端的vpn ip地址
  secret /etc/openvpn/static.key #密钥
  port 5000
  comp-lzo
  ping 15
  ping 15
  ping-restart 45
  ping-timer-rem
  persist-tun
  persist-key
  verb 3
  
  office主机的firewall.sh脚本如下:
  #!/bin/bash
  PRIVATE=192.168.1.0/24
  LOOP=127.0.0.1
  
  iptables -P OUTPUT DROP
  iptables -P INPUT DROP
  iptables -P FORWARD DROP
  iptables -F
  
  iptables -P OUTPUT ACCEPT
  iptables -P INPUT DROP
  iptables -P FORWARD DROP
  
  iptables -A INPUT -i eth1 -s $LOOP -j DROP
  iptables -A FORWARD -i eth1 -s $LOOP -j DROP
  iptables -A INPUT -i eth1 -d $LOOP -j DROP
  iptables -A FORWARD -i eth1 -d $LOOP -j DROP
  
  iptables -A FORWARD -p tcp --sport 137:139 -o eth1 -j DROP
  iptables -A FORWARD -p udp --sport 137:139 -o eth1 -j DROP
  iptables -A OUTPUT -p tcp --sport 137:139 -o eth1 -j DROP
  iptables -A OUTPUT -p udp --sport 137:139 -o eth1 -j DROP
  
  iptables -A FORWARD -s ! $PRIVATE -i eth0 -j DROP
  
  
  iptables -A INPUT -s $LOOP -j ACCEPT
  iptables -A INPUT -d $LOOP -j ACCEPT
  
  iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT
  
  iptables -A INPUT -p tcp --dport http -j ACCEPT
  iptables -A INPUT -p tcp --dport ssh -j ACCEPT
  
  iptables -A INPUT -p udp --dport 5000 -j ACCEPT #openvpn默认使用udp 5000端口
  
  iptables -A INPUT -i tun+ -j ACCEPT
  iptables -A FORWARD -i tun+ -j ACCEPT #这两句很重要
  iptables -A INPUT -i tap+ -j ACCEPT
  iptables -A FORWARD -i tap+ -j ACCEPT
  
  iptables -A INPUT -i eth0 -j ACCEPT
  iptables -A FORWARD -i eth0 -j ACCEPT
  
  iptables -A OUTPUT -m state --state NEW -o eth1 -j ACCEPT
  iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
  iptables -A FORWARD -m state --state NEW -o eth1 -j ACCEPT
  iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
  
  iptables -t nat -A POSTROUTING -s $PRIVATE -o eth1 -j MASQUERADE
  
  office.up脚本配置如下:
  #!/bin/bash
  route add -net 192.168.0.0 netmask 255.255.255.0 gw 10.1.0.2 #此处是对端的vpn ip地址
  openvpn-startup.sh脚本配置如下:
  #!/bin/bash
  dir=/etc/openvpn
  $dir/firewall.sh
  modprobe tun
  echo 1 > /proc/sys/net/ipv4/ip_forward
  openvpn --config /etc/openvpn/static-office.conf
  
  
  home主机的4个配置文件
  static-home.conf如下
  dev tun0
  remote 61.131.58.194
  ifconfig 10.1.0.2 10.1.0.1
  secret /etc/openvpn/static.key
  port 5000
  comp-lzo
  ping 15
  ping 15
  ping-restart 45
  ping-timer-rem
  persist-tun
  persist-key
  verb 3
  
  firewall.sh如下
  #!/bin/bash
  PRIVATE=192.168.0.0/24
  LOOP=127.0.0.1
  iptables -P OUTPUT DROP
  iptables -P INPUT DROP
  iptables -P FORWARD DROP
  iptables -F
  
  iptables -P OUTPUT ACCEPT
  iptables -P INPUT DROP
  iptables -P FORWARD DROP
  
  iptables -A INPUT -i eth0 -s $LOOP -j DROP
  iptables -A FORWARD -i eth0 -s $LOOP -j DROP
  iptables -A INPUT -i eth0 -d $LOOP -j DROP
  iptables -A FORWARD -i eth0 -d $LOOP -j DROP
  
  iptables -A FORWARD -p tcp --sport 137:139 -o eth0 -j DROP
  iptables -A FORWARD -p udp --sport 137:139 -o eth0 -j DROP
  iptables -A OUTPUT -p tcp --sport 137:139 -o eth0 -j DROP
  iptables -A OUTPUT -p udp --sport 137:139 -o eth0 -j DROP
  
  iptables -A FORWARD -s ! $PRIVATE -i eth1 -j DROP
  
  iptables -A INPUT -s $LOOP -j ACCEPT
  iptables -A INPUT -d $LOOP -j ACCEPT
  
  iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT
  
  iptables -A INPUT -p tcp --dport http -j ACCEPT
  iptables -A INPUT -p tcp --dport ssh -j ACCEPT
  
  iptables -A INPUT -p udp --dport 5000 -j ACCEPT
  
  iptables -A INPUT -i tun+ -j ACCEPT
  iptables -A FORWARD -i tun+ -j ACCEPT
  iptables -A INPUT -i tap+ -j ACCEPT
  iptables -A FORWARD -i tap+ -j ACCEPT
  
  iptables -A INPUT -i eth1 -j ACCEPT
  iptables -A FORWARD -i eth1 -j ACCEPT
  
  iptables -A OUTPUT -m state --state NEW -o eth0 -j ACCEPT
  iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
  iptables -A FORWARD -m state --state NEW -o eth0 -j ACCEPT
  iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
  
  iptables -t nat -A POSTROUTING -s $PRIVATE -o eth0 -j MASQUERADE
  
  home.up脚本如下:
  #!/bin/bash
  route add -net 192.168.1.0 netmask 255.255.255.0 gw 10.1.0.1
  openvpn-startup.sh脚本如下:
  #!/bin/bash
  dir=/etc/openvpn
  $dir/firewall.sh
  modprobe tun
  echo 1 > /proc/sys/net/ipv4/ip_forward
  openvpn --config /etc/openvpn/static-home.conf
  最后需要注意的是在office和home主机的/etc/modules.conf都要加上一行:
  alias char-major-10-200 tun
  在office主机上
  office#cd /etc/openvpn
  office#./openvpn-startup.sh
  office#./office.up
  在home主机上
  home#cd /etc/openvpn
  home#./openvpn-startup.sh
  home#./home.up
  A主机的default gateway设为192.168.1.56
  B主机的default gateway设为192.168.0.235
  在A主机上ping 192.168.0.45
  在home主机上用tcpdump监听
  home#tcpdump -i tun0
  应该有echo request和echo reply
  不行的话,在home#ping 10.1.0.1看两个vpn网关是否通 更多文章 更多内容请看Linux安全应用宝典  Linux防火墙  Linux服务器专题,或进入讨论组讨论。
收藏此文】【 】【打印】【关闭
较早的文章:用ganglia监控服务器状态

较新的文章:adsl共享上网
相关图文阅读
频道图文推荐
健 康 咨 询
时 尚 咨 询
巧巧读书宗旨
相关专题
·VPN技术 (943篇文章)
·Linux集群技术 (7455篇文章)
·SSL VPN详细知识介绍专题 (943篇文章)
·体验Linux的音影世界 (7209篇文章)
·Linux驱动大全 (7806篇文章)
·Linux下的路由的配置与应用 (10580篇文章)
·Linux命令简介 (8806篇文章)
·Linux防火墙 (8679篇文章)
·Linux日志专题 (7571篇文章)
·Linux服务器的安全性能 (17829篇文章)
热点标签: .net  ipv4  ip地址  linux  nat  
最新论坛文章
站内各频道最新更新文档
站内最新制作专题
热门关键字导读
Photoshop教 程照片处理 照片制作 PS快捷键 抠图
计 算 机 故 障XP系统修复
艺 术 与 设 计设计 流媒体 设计欣赏 边框
计 算 机 安 全ARP
站内频道文章精选
百度推荐,商机无限
搜索您感兴趣的内容
Web 全站
巧巧电脑频道编辑信箱  告诉我们您想看的专题或文章