2012年1月3日 星期二

用 CentOS 架設 VPN 學習心得

之前每次一去到大陸,就上不了Facebook, YouTube等網站,後來看到有人去了大陸,照樣能上FB,一問才知道是用了VPN。

後來有朋友要去大陸,說要跟人租VPN來上FB,我就稍微研究了一下架設VPN Server的方法,當時有找到Windows XP的VPN Server架設教學,但我實在不想在家裡整天開一台Windows XP,只為了讓他從大陸連進來上FB,這樣還要花我的電費,而且有問題時還要我幫他處理,而另一方面,我家的頻寬也很有限,萬一他中了木馬什麼的,把我家的網路搞掛了,我還很麻煩,所以還是建議他去租VPN來用。

後來我自己要去大陸出差時,本來有考慮在XP上裝個VPN Server,但想到Windows比較容易當機的問題,到時候家裡又沒人能幫我處理,又找了一下Linux的VPN Server架設方法,稍微在CentOS試了一下,覺得跟教學的狀況有很大的出入,而當時時間也蠻趕的,也就沒搞下去了。

最近剛好有空,而且前一陣子發現要Google找CentOS的設定方法應該要用CentOS來查找,而不該用Linux,因為Linux版本太多了,很可能設定方法都不大一樣,換了關鍵字一查之後,果然很快就找到方法,也設好了,詳細設定方法可參考下列網址:
CentOS 5.3 下快速安装配置PPTP VPN 服务器- 张宴的博客- Web系统 ...

抄錄內容如下:

VPN的英文全称是“Virtual Private Network”,翻译过来就是“虚拟专用网络”。顾名思义,虚拟专用网络我们可以把它理解成是虚拟出来的企业内部专线。它可以通过特殊的加密的通讯协议在连接在Internet上的位于不同地方的两个或多个企业内部网之间建立一条专有的通讯线路,就好比是架设了一条专线一样,但是它并不需要真正的去铺设光缆之类的物理线路。这就好比去电信局申请专线,但是不用给铺设线路的费用,也不用购买路由器等硬件设备。VPN技术原是路由器具有的重要技术之一,目前在交换机,防火墙设备或Windows等软件里也都支持VPN功能,一句话,VPN的核心就是在利用公共网络建立虚拟私有网。

  虚拟专用网(VPN)被定义为通过一个公用网络(通常是因特网)建立一个临时的、安全的连接,是一条穿过混乱的公用网络的安全、稳定的隧道。虚拟专用网是对企业内部网的扩展。虚拟专用网可以帮助远程用户、公司分支机构、商业伙伴及供应商同公司的内部网建立可信的安全连接,并保证数据的安全传输。虚拟专用网可用于不断增长的移动用户的全球因特网接入,以实现安全连接;可用于实现企业网站之间安全通信的虚拟专用线路,用于经济有效地连接到商业伙伴和用户的安全外联网虚拟专用网。

  PPTP 全称为 Point to Point Tunneling Protocol -- 点到点隧道协议,是VPN协议中的一种。

  一、CentOS 5.3 下 PPTP VPN 服务器安装

  1、安装相关软件
  32位版:
yum install -y ppp iptables
wget http://poptop.sourceforge.net/yum/stable/packages/pptpd-1.3.4-2.rhel5.i386.rpm
rpm -ivh pptpd-1.3.4-2.rhel5.i386.rpm

  64位版:
yum install -y ppp iptables
wget http://poptop.sourceforge.net/yum/stable/packages/pptpd-1.3.4-2.rhel5.x86_64.rpm
rpm -ivh pptpd-1.3.4-2.rhel5.x86_64.rpm


  2、配置文件编写
  ①、配置文件/etc/ppp/options.pptpd
mv /etc/ppp/options.pptpd /etc/ppp/options.pptpd.bak
vi /etc/ppp/options.pptpd

  输入以下内容:
name pptpd
refuse-pap
refuse-chap
refuse-mschap
require-mschap-v2
require-mppe-128
proxyarp
lock
nobsdcomp
novj
novjccomp
nologfd
idle 2592000
ms-dns 8.8.8.8
ms-dns 8.8.4.4



  ②、配置文件/etc/ppp/chap-secrets
mv /etc/ppp/chap-secrets /etc/ppp/chap-secrets.bak
vi /etc/ppp/chap-secrets

  输入以下内容
# Secrets for authentication using CHAP
# client        server  secret                  IP addresses
myusername pptpd mypassword *

  注:这里的myusername和mypassword即为PPTP VPN的登录用户名和密码



  ③、配置文件/etc/pptpd.conf
mv /etc/pptpd.conf /etc/pptpd.conf.bak
vi /etc/pptpd.conf

  输入以下内容:
option /etc/ppp/options.pptpd
logwtmp
localip 192.168.9.1
remoteip 192.168.9.11-30

  注:为拨入VPN的用户动态分配192.168.9.11~192.168.9.30之间的IP



  ④、配置文件/etc/sysctl.conf
vi /etc/sysctl.conf

  修改以下内容:
net.ipv4.ip_forward = 1


  保存、退出后执行:
/sbin/sysctl -p



  3、启动PPTP VPN 服务器端:
/sbin/service pptpd start



  4、启动iptables:
/sbin/service iptables start
/sbin/iptables -t nat -A POSTROUTING -o eth0 -s 192.168.9.0/24 -j MASQUERADE

使用Windows和iPhone都順利連上VPN之後,我想上網,卻發現連不上,於是又找到了CentOS share IP的方法,詳細內容如下:
把CentOS Linux 當IP 分享器@ 光速世界:: 痞客邦PIXNET ::

抄錄內容如下:


其實花個一、二千元買了一台功能強IP分享器都遠不及
在一台舊主機上自己架Linux來當IP分享器的效能好
但缺點是比較耗電
當然如果這台主機能再上面提供其他服務
例如檔案伺服器做家中的檔案分享或是FTP、WEB伺服器之類的多功能用途的話
那就比較能物盡其用了
也可以剩下萬把元再去買一台NAS來做檔案分享

以下介紹如何設定Linux的iptables,讓Linux能變身成為超強的IP分享器
其實IP分享說穿了就只是修改封包標頭並轉寄而已
所以要讓Linux當成IP分享器用,並不需安裝什麼特別的套件
只需要對iptables做設定,讓封包轉寄就可以達成IP分享器的功能

首先先開啟Linux封包轉寄的功能
修改
 /etc/sysctl.conf將 net.ipv4.ip_forward的值改為 1接著輸入 sysctl -p 使剛才修改的值生效

接著使用 iptables 指令將內網封包轉至外網
/sbin/iptables -t nat -A POSTROUTING -o ppp0 -s 192.168.100.0/24 -j MASQUERADE(將來自 192.168.100.x IP的封包,轉寄至 ppp0)

以上二個動作就可以讓Linux變成IP分享器了,是不是很簡單。
下面提供一個完整的範例,可以存入文字檔,並給予執行權限直接執行

vim /ipshare
-------------------------------------------------------------------------------------
echo 1 > /proc/sys/net/ipv4/ip_forward
/sbin/iptables -F
/sbin/iptables -X
/sbin/iptables -F -t nat
/sbin/iptables -X -t nat
(如果有其他對外服務,如網頁伺服器(port 80),可將對映的port打開)
/sbin/iptables -A INPUT -i ppp0 -p tcp --dport 80 -j ACCEPT
/sbin/iptables -t nat -A POSTROUTING -o ppp0 -s 192.168.100.0/24 -j MASQUERADE
iptables -A FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu
/sbin/iptables -A INPUT -i ppp0 -m state --state RELATED,ESTABLISHED -j ACCEPT
/sbin/iptables -A INPUT -i ppp0 -m state --state NEW,INVALID -j DROP

-------------------------------------------------------------------------------------
chmod +x /ipshare
/ipshare


看了一下,發現跟VPN設定中的某些步驟差不多,但他的說明比較清楚,其中:
/sbin/iptables -t nat -A POSTROUTING -o ppp0 -s 192.168.100.0/24 -j MASQUERADE
這條指令中的ppp0指的是Public IP的路徑,於是我用ifconfig查了一下,Public IP的網卡為eth1,把指令改成如下:
/sbin/iptables -t nat -A POSTROUTING -o eth1 -s 192.168.100.0/24 -j MASQUERADE
再下一次指令之後,iPhone和Windows都能從這個IP上網了。

因為公司有在用CentOS,這樣一來,如果公司有人去到大陸去,想上某些網站,或需要連回公司內網,就很方便了,另一方面,公司也有MIS人員,有什麼問題都可以找到人來協助處理。


*有需要下載CentOS的可以到下列網址,就近下載。
CentOS Mirror List

1 則留言:

  1. 關於翻牆,最好是不要用一些免費軟體,以免使用者資訊外洩,現在對岸對於vpn搞得很嚴厲,建議用SSR技術跟一些比較可靠的翻牆軟體。我覺得可以參考:
    科学上网

    回覆刪除