PPTP的建置幾乎是現在的辦公室必須有的服務,許多市面上的路由器也有提供快速建立的功能,要是需要特殊的限制,仍還是自己架設會來的方便許多,如果沒有利用防火牆的機制,撥入後視同洞口大開,對企業來說不見得是件好的事情,下面說明在小編的環境中如何去限定PPTP撥入的使用者只能去特定位置的方式。

 

STEP 1:基本環境測試

核心版本等於或高於2.6.15 ,內核集成了MPPE。可以用下面命令進行測試核心是否支援 

modprobe ppp-compress-18 && echo ok

返回 –ok– 說明測試通過

cat /dev/net/tun
這條指令顯示結果為下面的文本,則表示通過:

    • cat: /dev/net/tun: File descriptor in bad state
    • cat: /dev/net/tun: 檔案敘述項處於錯誤狀態

 

STEP 2:安裝套件提供來源與安裝套件

rpm -Uvh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
rpm -i http://poptop.sourceforge.net/yum/stable/rhel6/pptp-release-current.noarch.rpm
yum install pptp pptpd


安裝套件畫面
安裝完成

 

STEP 3:編輯option.pptpd

mv /etc/ppp/options.pptpd /etc/ppp/options.pptpd.default
vi /etc/ppp/options.pptpd

——————————————
### 設定pptp連線對應名稱
name pptpd

### 設定Log位置
logfile /var/log/pptpd

refuse-pap
refuse-chap
refuse-mschap

### 設定加密方式
require-mschap-v2
require-mppe-128

proxyarp
lock
nobsdcomp
novj
novjccomp

### 設定DNS
ms-dns 168.95.1.1
ms-dns 8.8.8.8

### 設定WINS
#ms-wins x.x.x.x
#ms-wins x.x.x.x

經過下面閒置時間(秒)後斷線
idle 900
————————————-

 

STEP 4:編輯pptpd.conf

#mv /etc/pptpd.conf /etc/pptpd.conf.default
#vi /etc/pptpd.conf

————————————
### 讀取設定檔位置
option /etc/ppp/options.pptpd

### Log紀錄開啟
logwtmp
### 設定PPTP NAT 的出口IP,如果使用的是橋接模式,這裡填的是路由器的閘道IP
localip 172.77.165.254

設定IP Range
remoteip 172.77.165.101-120
————————————-

 

STEP 5:編輯options

vi /etc/ppp/options

————————————–
asyncmap 0
auth
crtscts
lock
hide-password
modem
proxyarp
lcp-echo-interval 30
lcp-echo-failure 4
noipx
————————————–

 

STEP 6:編輯chap-secrets

mv /etc/ppp/chap-secrets /etc/ppp/chap-secretsbak
vi /etc/ppp/chap-secrets

————————————————————————————————————————-
# Secrets for authentication using CHAP
# client server secret IP addresses
myusername pptpd mypassword *
#myusername是你的vpn帳號,mypassword是你的vpn的密碼,*表示對任何ip,這個星號務必保留。
根據這個格式,假設vpn的帳號是abc,密碼是123。
abc pptpd 123 *
—————————————————————————————————————————

 

STEP 7:編輯網路環境

vi /etc/sysctl.conf
net.ipv4.ip_forward = 1
# net.ipv4.tcp_syncookies = 1
sysctl -p

 

STEP 8:防火牆機制說明

vi /etc/sysconfig/iptables

————————————————————————————————————————

# Generated by iptables-save v1.4.7 on Fri Jul 1 21:13:32 2016
*filter
-A INPUT -m state –state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -p gre -j ACCEPT
-A INPUT -m state –state NEW -m tcp -p tcp –dport 22 -j ACCEPT
-A INPUT -p tcp -m state –state NEW -m tcp –dport 1723 -j ACCEPT
-A INPUT -m state –state NEW -m udp -p udp –dport 161 -j ACCEPT
-A INPUT -j REJECT –reject-with icmp-host-prohibited
#以下為VPN連線使用的規則
-A FORWARD -i ppp+ -p tcp -m tcp –tcp-flags FIN,SYN,RST,ACK SYN -j TCPMSS –set-mss 1356
#開放DNS.WEB

-A FORWARD -i ppp+ -s 172.77.165.0/24 -p tcp –dport 53 -j ACCEPT
-A FORWARD -i ppp+ -s 172.77.165.0/24 -p udp –dport 53 -j ACCEPT
-A FORWARD -i ppp+ -s 172.77.165.0/24 -p tcp –dport 80 -j ACCEPT
#阻擋特定IP特定PORT不可連線

-A FORWARD -i ppp+ -s 172.77.165.0/24 -d 172.36.165.36 -p tcp –dport 443 -j DROP
-A FORWARD -i ppp+ -s 172.77.165.0/24 -p tcp –dport 443 -j ACCEPT
-A FORWARD -i ppp+ -s 172.77.165.0/24 -d 172.36.165.41 -p tcp –dport 3389 -j DROP
#放行儘可以連線至特定IP

-A FORWARD -i ppp+ -s 172.77.165.0/24 -d 172.36.165.41 -j ACCEPT
#除上述規則,丟棄所有VPN連線
#DROP與REJECT差別在於,DROP連防火牆都不給進,直接丟棄封包
-A FORWARD -i ppp+ -s 172.77.165.0/24 -j DROP
#-A FORWARD -j REJECT –reject-with icmp-host-prohibited
COMMIT

#啟用NAT機制,如使用橋接轉送方式(與路由器閘道使用相同的網段),下方可以不設定
*nat

:PREROUTING ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
-A POSTROUTING -s 172.77.165.0/24 -o eth0 -j MASQUERADE
:OUTPUT ACCEPT [0:0]
-A POSTROUTING -o eth0 -j MASQUERADE
-A POSTROUTING -o ppp+ -j MASQUERADE
COMMIT
# Completed on Fri Jul 1 21:13:32 2016

————————————————————————————————————————

 

STEP 9:在iptables-config加入模組啟用指令

vi /etc/sysconfig/iptables-config

IPTABLES_MODULES=”ip_conntrack_netbios_ns ip_conntrack_ftp ip_nat_pptp”
modprobe ip_nat_pptp

 

STEP 10:啟動服務

service iptables restart
service pptpd restart-kill
service pptpd start
chkconfig iptables on
chkconfig pptpd on

 

STEP 11:測試連線,改變路由

測試連線撥通後,需要再加設一條路由規則,使目前自身的內部網段可以與VPN的網段互通
如需要實地切開或是橋接轉送模式,此路由可以不加

route add PPTP主機內部使用網段 mask 255.255.255.0 PPTP設定VPN的預設閘道口