歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Unix知識 >> BSD >> FreeBSD下通過PoPToP實現遠程訪問VPN

FreeBSD下通過PoPToP實現遠程訪問VPN

日期:2017/2/28 11:27:36   编辑:BSD


  對於構建VPN來說,網絡隧道(Tunnelling)技術是個關鍵技術。網絡隧道技術指的是利用一種網絡協議來傳輸另一種網絡協議,它主要利用網絡隧道協議來實現這種功能。
  
  現有兩種類型的網絡隧道協議,一種是二層隧道協議,用於傳輸二層網絡協議,它主要應用於構建遠程訪問虛擬專網(Access VPN);另一種是三層隧道協議,用於傳輸三層網絡協議,它主要應用於構建企業內部虛擬專網(Intranet VPN)和擴展的企業內部虛擬專網(Extranet VPN)。
  
  FreeBSD下的PoPToP實現了二層隧道協議中的PPTP(Point to Point Tunneling Protocol)封裝,利用它建立遠程訪問VPN服務,可以替代現有的電話長途撥號訪問。
  
  一、 環境
  1. 一台PC服務器安裝FreeBSD,雙網卡連接內外兩個網段,內部地址172.16.1.210/24,外部地址為固定合法IP地址。
  2. 外地用戶PC通過Internet和FreeBSD主機建立VPN連接連入局域網。
  
  二、 安裝
  # cd /usr/ports/net/poptop
  # make; make install
  如果執行make不允許安裝,編輯當前目錄下的Makefile,將forbidden那行注釋掉
  
  三、 配置

  # kill –HUP (syslogd當前pid)
  b、 # vi /etc/ppp/options
  lock
  debug
  auth
  +chap # chap認證方式
  proxyarp
  # vi /etc/ppp/chap-secrets
  user * password * # 給VPN用戶的用戶名和密碼
  loop:
  set timeout 0
  set device localhost:pptp
  set log phase
  set dial
  set login
  # Server (local) IP address, Range for Clients, and Netmask
  set ifaddr 172.16.1.210 172.16.1.225-172.16.1.254 255.255.255.0
  set server /tmp/loop "" 0177
  loop-in:
  set timeout 0
  allow mode direct
  pptp:
  load loop
  enable proxy
  accept dns
  # DNS Servers to assign client
  set dns 172.16.1.210
  # NetBIOS/WINS Servers to assign client
  # set nbns 172.16.1.200
  set device !/etc/ppp/secure
  # vi /etc/ppp/secure
  #!/bin/sh
  exec /usr/sbin/ppp -direct loop-in
  speed 115200
  debug
  localip 172.16.1.210
  remoteip 172.16.1.225-254 # 連接上來的用戶從中獲取IP
  
  四、 運行

  # /usr/local/etc/rc.d/pptpd.sh start 或
  # /usr/local/sbin/pptpd &
  
  五、 測試

  找個能連接Internet的windows 98se或win2000機器,創建一個VPN連接。服務器地址填FreeBSD的外部合法IP,用戶名user,口令password,並禁用數據壓縮屬性。
  注:windows 98se下建立VPN連接需先添加一個微軟虛擬適配器,一個撥號適配器。
  
  六、 其他

  1、 VPN的連接速度取決於雙方(服務器,用戶端)接入Internet的速度。
  2、 上述設置的PoPToP服務只實現了一個隧道封裝,通過該隧道傳輸的數據並沒有加密,所以並非嚴格意義上VPN連接。
  3、 用戶通過VPN連接上來後,相當於直接連入你的局域網。出於安全考慮,可以結合FreeBSD的防火牆(如ipf),設置一些規則來限制分配給VPN用戶的那段IP地址的訪問范圍。
  4、 如果連接失敗,打開/var/log/pptpd.log、/var/log/ppp.log查看錯誤紀錄。
Copyright © Linux教程網 All Rights Reserved