歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> 關於Linux >> CentOS 6.0中如何配置pptp VPN Client和Squid透明網關

CentOS 6.0中如何配置pptp VPN Client和Squid透明網關

日期:2017/3/3 15:58:26   编辑:關於Linux

目的:

構建一台單網卡Linux網關(透明代理),該網關撥入某海外VPN服務器,客戶端設定該網關後,網絡出口則為海外VPN服務器,實現加速訪問一些網站的目的。

環境信息:

硬件:DELL機器一台,單網卡(IP:10.39.100.253);

機器名:VpnGW

操作系統:CentOS 6.0 Kernel Linux 2.6.32-71.el6.i686

網絡環境:局域網防火牆需允許該機器使用PPTP協議撥入某公網IP

安裝步驟:

一. 安裝操作系統,設定IP,機器名,可關閉防火牆,SELinux;

修改主機名:設置CentOS主機名稱的配置文件為:/etc/sysconfig/network

修改hosts文件:修改/etc/hosts文件

關閉SELinux: 修改/etc/sysconfig/selinux

SELINUX=disabled #這是最標准的方式

設定系統使用EPEL源:

CentOS 6.x 32-bit (x86/i386):

rpm –Uvh http://download.fedoraproject.org/pub/epel/6/i386/epel-release-6-5.noarch.rpm

CentOS 6.x 64-bit (x64):

rpm –Uvh http://download.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-5.noarch.rpm

二. 安裝軟件;

檢查ppp, pptp, pptp-setup的安裝情況,沒有則yum install;

三. 使用pptpsetup命令創建VPN節點;

pptpsetup命令用法及說明:

pptpsetup  --create <TUNNEL> --server <ip address/hostname> [--domain <DOMAIN NAME>] --u sername <USERNAME> [--password <PASSWORD>] [--encrypt] [--start]
pptpsetup –delete <TUNNEL> 刪除一個節點

Options:

* <TUNNEL> 創建的連接名稱,自指定。

* <SERVER> PPTP SERVER的IP或域名。

* <DOMAIN> 所在的域,很多Windows的服務器都是使用“域”來管理認證的。

* <USERNAME> VPN 用戶名(域用戶名)

* <PASSWORD> VPN上用戶密碼,也可以沒這個參數,命令稍後會自動詢問,這樣保證賬號安全

* –encrypt 表示啟用加密,不必指定加密方式,命令會讀取配置文件中的加密方式

URL:http://www.bianceng.cn/OS/Linux/201410/45923.htm

* 當沒使用–encrypt 連接時出現下面的錯誤時,表示使用了加密,這點也可以和VPN的管理員聯系確認一下,遇到下面的情況可以加上該參數。

* CHAP authentication succeeded

* LCP terminated by peer (ZM-76-^@<M-Mt^@^@^BM-f ) 類似亂碼

* –start 創建連接完後馬上連接。

運行該命令後實際上創建了兩個配置文件:

/etc/ppp/chap-secrets

/etc/ppp/peers/連接名

配置文件 /etc/ppp/peers/連接名 需要做些修改,我的如下:

# written by pptpsetup 
pty "pptp 10.39.100.2 --nolaunchpppd"
lock 
noauth 
nobsdcomp 
nodeflate 
name csnj\\administrator 
remotename csvpn 
ipparam csvpn 
#defaultroute  #使用本連接作為默認路由,本文單網卡沒意義,可以不添加,說明見附錄 
persist #當連接丟失時讓pppd再次撥號,已驗證 
require-mppe-128
refuse-pap 
refuse-chap 
refuse-eap 
refuse-mschap

我在做這一步的時候,始終連接不上,懷疑過加密方法、握手協議什麼的沒用對,最終發現是用戶名填寫的方式要改變下。

需把上述兩個配置文件裡面的"DOMAIN\username" 改為"DOMAIN\\username" ,就可以了。

這點在官方文檔中亦有說明,鏈接:http://pptpclient.sourceforge.net/howto-redhat.phtml#setup

引用:

*  The script displays your choice, together with information about specifying a local name: 
Add a NEW CHAP secret. 
NOTE:Anybackslashes(\)mustbedoubled(\\).
Local Name: 
This is the 'local' identifier for CHAP authentication. 
NOTE: If the server is a Windows NT machine, the local name 
          should be your Windows NT username including domain. 
          For example: 
                  domain\\username 
Local Name: your_domain\\your_username

四. 設置撥號腳本;

撥號腳本pon 和poff在下面的目錄 /usr/share/doc/ppp-*/scripts/ 裡:

cp /usr/share/doc/ppp-2.4.5/scripts/pon /usr/sbin

cp /usr/share/doc/ppp-2.4.5/scripts/poff /usr/sbin

chmod +x /usr/sbin/pon /usr/sbin/poff #使pon和poff腳本擁有執行權限

這樣就可以通過pon/poff <tunnel> 來啟停VPN連接。

也可以使用 pppd call <tunnel> / killall pppd來啟動/停止。

五. 設置開機自動撥號,並在撥號後改變路由;

把啟動撥號的命令添加到/etc/rc.d/rc.local文件中:

開機後查看路由已使用vpn通道設備。

六. 查看VPN Log;

相應的LOG可以在 /var/log/message中查看。

to further diagnose a failure, add options to the command(使用命令行撥號並查看屏幕日志):

pppd call vpn_name debug dump logfd 2 nodetach

七. 安裝squid;

yum –y install squid

啟動squid:/etc/rc.d/init.d/squid start

八. 配置squid;

修改配置文件 /etc/squid/squid.conf

配置為透明代理:

# Squid normally listens to port 3128

http_port 10.39.100.253:3128 transparent

配置squid開機自動啟動:

chkconfig squid on

九. 關於訪問控制;

設置完成後,關鍵且重要的任務是訪問控制。Squid支持的管理方式很多,使用起來也非常簡單(這也是有人寧願使用不做任何緩存的Squid,也不願意單獨使用iptables的原因)。

Squid可以通過IP地址、主機名、MAC地址、用戶/密碼認證等識別用戶,也可以通過域名、域後綴、文件類 型、IP地址、端口、URL匹配等控制用戶的訪問,還可以使用時間區間對用戶進行管理,所以訪問控制是Squid配置中的重點。

Squid用ACL (Access Control List,訪問控制列表)對訪問類型進行劃分,用http_access deny 或allow進行控制。

本文通過Mac地址進行控制,在配置文件中修改

acl allowuser arp mac1 mac2

http_access allow allowuser

特別要注意的是,Squid將使用allow-deny-allow-deny……這樣的順序套用規則。例如,當一個用戶訪問代理服務器時, Squid會順序測試Squid中定義的所有規則列表,當所有規則都不匹配時,Squid會使用與最後一條相反的規則。

iptables –t filter –A INPUT –s 10.39.101.152 –I eth0 –j ACCEPT

iptables –t filter –A INPUT –s 10.39.0.0/16 –I eth0 –j DROP

十. 打開內核IP轉發;

方法一:修改/proc下內核參數文件內容

直接修改內核參數ip_forward對應在/proc下的文件/proc/sys/net/ipv4/ip_forward。用下面命令查看ip_forward文件內容:

# cat /proc/sys/net/ipv4/ip_forward

該文件默認值0是禁止ip轉發,修改為1即開啟ip轉發功能。修改命令如下:

# echo 1 >/proc/sys/net/ipv4/ip_forward

URL:http://www.bianceng.cn/OS/Linux/201410/45923.htm

修改過後就馬上生效,即內核已經打開ip轉發功能。但如果系統重啟後則又恢復為默認值0,如果想永久打開需要通過修改/etc/sysctl.conf文件的內容來實現。

方法二.修改/etc/sysctl.conf文件

默認sysctl.conf文件中有一個變量是

net.ipv4.ip_forward = 0

將後面值改為1,然後保存文件。因為每次系統啟動時初始化腳本/etc/rc.d/rc.sysinit會讀取/etc/sysctl.conf文件的 內容,所以修改後每次系統啟動時都會開啟ip轉發功能。但只是修改sysctl文件不會馬上生效,如果想使修改馬上生效可以執行下面的命令:

# sysctl –p

十一. 配置iptables;

1. 將客戶端的請求NAT方式轉給外網進行路由;

iptables -t nat -A POSTROUTING -s 10.39.0.0/16 -o ppp0 -j MASQUERADE

2. 將客戶端對Web端口80的請求轉發到Squid 3128端口,由Squid接手;

iptables -t nat -A PREROUTING -s 10.39.0.0/16 -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3128

保存:/etc/rc.d/init.d/iptables save

重啟:service iptables restart

十二. 安裝過程中,學習了若干(>20)網絡上的博客文章,知識庫,無法一一列出,一並感謝。

網絡中很多文章使用腳本來實現開機自動撥號,斷線重撥等功能,因我不懂腳本,待以後弄懂了再補充。

本文PDF版筆記下載:http://down.51cto.com/data/416640

本文出自 “不談理想” 博客,請務必保留此出處http://netside.blog.51cto.com/766556/870961

Copyright © Linux教程網 All Rights Reserved