整理最近做的vpn系統的專案前端後端客戶端,排除些百度出來的坑。(一)vpn的配置之pptp與freeradius
這個專案的所有vpn連線的認證是用freeradius+mysql,用freeradius+mysql進行登入驗證可以讓系統管理更加輕鬆。 只需要在主驗證伺服器上控制mysql的radius表 就能控制所有的vps的 靈活的應對各個vps上的不同的vpn協議(pptp、l2tp 、sstp、 openvpn)。 所以用一臺主伺服器就能控制所有使用者的有效期、同時線上數還有各個vps的連線狀態和流量監測。 這篇文章也修正了一部分網路上教程中頻繁出現的問題。 一些問題真的是不把各種情況的日誌仔細研究。就很難發現 系統用的是centos6.6 64位 getconf LONG_BIT 可以檢視系統位數 還有 cat /proc/version 新手在配置後如果vpn的服務啟動成功 但是客戶端連線不上。 最好的除錯的辦法就是去檢視iptables的日誌還有在/var/log/message 這些日誌資訊 找到 [ppp] 有關的資訊。
比如:
May 17 00:17:42 host-23-109-37-197 pppd[8927]: LCP terminated by peer (User request)
May 17 00:17:42 host-23-109-37-197 pppd[8927]: Connect time 6.5 minutes.
May 17 00:17:42 host-23-109-37-197 pppd[8927]: Sent 62494311 bytes, received 3799284 bytes.
May 17 00:17:45 host-23-109-37-197 pppd[8927]: Connection terminated.
May 17 00:17:45 host-23-109-37-197 pppd[8927]: Modem hangup
May 17 00:17:45 host-23-109-37-197 pppd[8927]: Exit.
如果centos 系統太精簡的話,還需要安裝一些必要的編譯環境和ppp還有操作中要用到的程式
yum install -y iptables make gcc gmp-devel xmlto bison flex libpcap-devel lsof vim-enhancedr cpio perl pam tcp_wrappers
這篇文章我主要是記錄freeradius 客戶端(撥號驗證服務)+pptp 的配置方法。不過我把pptp 的常用配置方法一併記錄下來。方便剛開始的新手參考。 #freeradius 的伺服器端配置稍後再來寫。
一、檢查伺服器系統環境是否支援安裝pptp vpn
1、檢查系統核心是否支援MPPE補丁
modprobe ppp-compress-18 &&echo 1
顯示 1 說明系統支援MPPE補丁,如果不支援,需要先安裝kernel-devel
yum install kernel-devel
用以下命令檢查PPP是否支援MPPE:
strings /usr/sbin/pppd |grep -i mppe | wc --lines
如果以上命令輸出為“0”則表示不支援;輸出為“30”或更大的數字就表示支援,MPPE(Microsoft Point to Point Encryption,微軟點對點加密)。
2、檢查系統是否開啟TUN/TAP支援
cat /dev/net/tun
如果這條指令顯示結果為下面的文字,則表明通過:
cat: /dev/net/tun: File descriptor in bad state
3、檢查系統是否開啟ppp支援
cat /dev/ppp
如果這條指令顯示結果為下面的文字,則表明通過:
cat: /dev/ppp: No such device or address
上面三條必須同時滿足,否則不能安裝pptp vpn
二、開始安裝pptp
直接執行
yum -y install ppp pptpd
如果出現 No package pptpd available.
那就需要 rpm 來安裝
一般linux 系統裡都會有這些安裝程式 如果沒有就自行下載後rpm進行安裝.執行下面的命令
1、ppp #安裝pptpd需要此支援
rpm -ivh http://poptop.sourceforge.net/yum/stable/packages/ppp-2.4.4-14.1.rhel5.x86_64.rpm
2、pptpd
rpm -ivh http://poptop.sourceforge.net/yum/stable/packages/pptpd-1.4.0-1.rhel5.x86_64.rpm
如果出現
ppp = 2.4.4 is needed by pptpd-1.3.4-2.rhel5.x86_64
原因是pptpd與PPP不相容,下載pptpd-1.3.4-2.el6.x86_64.rpm安裝即可。
我找來一些別人分享的資源可供下載(Sina 部落格:Professor哥)
當然如果你可以直接訪問 poptop.sourceforge.net 的話可以直接去這裡下載。
等全部安裝完畢 就開始配置ppp 和pptp 了
三、配置pptp
1.配置檔案/etc/ppp/options.pptpd
vi /etc/ppp/options.pptpd
修改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
- 解析:ms-dns 8.8.8.8, ms-dns 8.8.4.4是使用google的dns伺服器。
- 注意:如果虛擬機器核心不支援MPPE的話,無法使用加密,用WINDOWS預設VPN連線會顯示“證書信任錯誤”。
解決方法:修改/etc/ppp/options.pptpd註釋掉require-mppe-128(註釋:#require-mppe-128)這行,然後windows的vpn撥號的屬性改為可選加密,再次連線就成功了
2、不使用freeradius 直接用文字來做vpn使用者認證
vi /etc/ppp/chap-secrets
新增pptp撥號使用者和密碼(可以設定多個使用者,每行一個)
#client server secret IP addresses
test1 pptpd 123456 *
test2 pptpd 1234 *
格式:使用者名稱 pptpd 密碼 * 其中*表示為客戶端自動分配IP地址
3、 設定pptp伺服器IP地址,設定vpn撥入客戶端ip的ip分配範圍
vi /etc/pptpd.conf
option /etc/ppp/options.pptpd
logwtmp
localip 192.168.1.1 #這就相當於配置路由器的地址。一個區域網內的閘道器地址。
remoteip 192.168.1.2-254 #為連線vpn的使用者動態分配192.168.1.254之間的IP地址的地址。注意:不能用1-255, 192.168.1.1 是閘道器地址192.168.1.255是廣播地址。
4.配置檔案/etc/sysctl.conf 開啟路由轉發
將“net.ipv4.ip_forward”改為1:
net.ipv4.ip_forward=1
同時在“net.ipv4.tcp_syncookies = 1”前面加# :
# net.ipv4.tcp_syncookies = 1
*另外:還可以可以執行下面的命令來建立裝置節點
mknod /dev/ppp c 108 0 #建立ppp裝置節點
echo 1 > /proc/sys/net/ipv4/ip_forward
echo "mknod /dev/ppp c 108 0" >> /etc/rc.local
echo "echo 1 > /proc/sys/net/ipv4/ip_forward" >> /etc/rc.local
儲存退出,並執行下面的命令來生效它:
sysctl -p 或
/sbin/sysctl -p
四.配置防火牆
不配置防火牆轉發規則的話。。就只能連線vpn上不了網
iptables -t nat -A POSTROUTING -o eth0 -s 192.168.1.0/24 -j MASQUERAD #新增規則eth0 是網絡卡 一般單網絡卡都是叫這個 如果你的不是就替換成你的網絡卡名稱 MASQUERAD 自行判斷
或者
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -j SNAT --to-source 153.128.21.17 #153.128.21.17 這個是你的公網 ip
iptables -A FORWARD -p tcp --syn -s 192.168.1.0/24 -j TCPMSS --set-mss 1356 #新增規則 這兩條命令的192.168.1.1 就是之前的local ip ,24 子網掩碼
或者
iptables -A FORWARD -p tcp -i ppp+ -j TCPMSS --syn --set-mss 1356 #調節適合ppp的mss 如果不設定這個值 會出現網路中MTU過大 然後導致資料包被丟棄的情況。也就是連上了pptp 但是上不了網
iptables -A INPUT -p gre -j ACCEPT # 放行47埠
iptables -A INPUT -p tcp --dport 1723 -j ACCEPT # 放行1723埠
/etc/init.d/iptables save
#儲存防火牆設定
下面 貼出一個我的iptables 供參考 注意我裡面的註釋 不需要照抄,使伺服器除了ssh連線 和 pptp連線,其餘的連線一律拒絕,防止被攻擊 ,以下是防火牆配置檔案裡的內容
/etc/sysconfig/iptables
##########################################
# Generated by iptables-save v1.4.7 on Tue Mar 8 15:02:25 2016
*filter
:FORWARD ACCEPT [0:0]
:INPUT ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT #ssh連線埠開放
-A INPUT -p gre -j ACCEPT
-A INPUT -p tcp -m tcp --dport 1723 -j ACCEPT
-A INPUT -p udp -m udp --dport 1812 -j ACCEPT
#1812-1814 這三條是我的伺服器作為遠端freerdius 驗證伺服器的埠
#如果你們不用fresradius 做認證可以不需要這三條
# 重點是 1812 1813 1814 freeradius 在監聽時都是監聽的udp協議。。
#網上的教程 防火牆的過濾好多都寫得是tcp。
#結果就是如果radius客戶端和伺服器端不是同一臺伺服器時。。根本就不能通訊
-A INPUT -p udp -m udp --dport 1813 -j ACCEPT
#1812 是radius 用來認證的 1813 是用來計時之類的。
#如果1813埠不開放。那什麼時候登入退出 還有 流量都不會被記錄
-A INPUT -p udp -m udp --dport 1814 -j ACCEPT
-A INPUT -p udp -m udp --dport 53 -j ACCEPT #dns埠
-A FORWARD -p tcp -i ppp+ -j TCPMSS --syn --set-mss 1356
-A INPUT -j REJECT --reject-with icmp-host-prohibited #拒絕除了以上規則的所有請求
COMMIT
# Completed on Tue Mar 8 15:02:25 2016
# Generated by iptables-save v1.4.7 on Tue Mar 8 15:02:25 2016
*nat
:PREROUTING ACCEPT [37:3710]
:POSTROUTING ACCEPT [18:1675]
:OUTPUT ACCEPT [18:1675]
-A POSTROUTING -s 192.168.1.0/24 -o eth0 -j MASQUERADE #路由轉發把vpn連線的資料轉到進入外網的網絡卡上
COMMIT
# Completed on Tue Mar 8 15:02:25 2016
# Generated by webmin
*mangle
:FORWARD ACCEPT [0:0]
:INPUT ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:PREROUTING ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
COMMIT
# Completed
##########################################
都配置好後
/sbin/service pptpd start #啟動pptp
/etc/init.d/pptpd stop #關閉
service pptpd restart #重啟
chkconfig pptpd on #設定開機啟動
以下是配置pptp 中的 freeradius 客戶端配置部分
下面的操作不會被之前pptp的配置所影響
只需將 freeradius 連線、客戶端配置新增到
/etc/ppp/options.pptpd
1.找到一個想要的freeradius client 做客戶端
可以直接去freeradius的ftp來複制想要的版本連結
然後用命令下載
wget ftp://ftp.freeradius.org/pub/freeradius/freeradius-client-1.1.7.tar.gz
再解壓
tar zxvf freeradius-client-1.1.7.tar.gz
再進入目錄進行編譯
cd freeradius-client-1.1.7
./configure && make && make install
然後再進行freeradius 客戶端的配置
vi /usr/local/etc/radiusclient/radiusclient.conf
用這條命令可以跳過空段和註釋段
cat /usr/local/etc/radiusclient/radiusclient.conf |grep -v ^# |grep -v ^$
看到的就是這樣
auth_order radius,local
login_tries 4
login_timeout 60
nologin /etc/nologin
issue /usr/local/etc/radiusclient/issue
authserver localhost
acctserver localhost
servers /usr/local/etc/radiusclient/servers
dictionary /usr/local/etc/radiusclient/dictionary
login_radius /usr/local/sbin/login.radius
seqfile /var/run/radius.seq
mapfile /usr/local/etc/radiusclient/port-id-map
default_realm
radius_timeout 10
radius_retries 3
radius_deadtime 0
bindaddr *
login_local /bin/login
找到 authserver 和 acctserver 將值改為 freeradius 驗證主伺服器的 ip地址:埠號
將 radius_deadtime 0 和 bindaddr * 將這兩項註釋掉(或者通過以下命令來註釋之)
sed -i ‘s/radius_deadtime/#radius_deadtime/g’ /usr/local/etc/radiusclient/radiusclient.conf
sed -i ‘s/bindaddr/#bindaddr/g’ /usr/local/etc/radiusclient/radiusclient.conf
就像這樣
auth_order radius
login_tries 4
login_timeout 60
nologin /etc/nologin
issue /usr/local/etc/radiusclient/issue
authserver 108.61.16.250:1812
acctserver 108.61.16.250:1813
servers /usr/local/etc/radiusclient/servers
dictionary /usr/local/etc/radiusclient/dictionary
login_radius /usr/local/sbin/login.radius
seqfile /var/run/radius.seq
mapfile /usr/local/etc/radiusclient/port-id-map
default_realm
radius_timeout 10
radius_retries 3
login_local /bin/login
指定FreeRADIUS Server地址,並設定key
cat >>/usr/local/etc/radiusclient/servers<<EOF
108.61.16.250 testing123
EOF
增加字典。這一步很重要!
wget -c http://hello-linux.googlecode.com/files/dictionary.microsoft
mv ./dictionary.microsoft /usr/local/etc/radiusclient/
cat >>/usr/local/etc/radiusclient/dictionary<<EOF
INCLUDE /usr/local/etc/radiusclient/dictionary.sip
INCLUDE /usr/local/etc/radiusclient/dictionary.ascend
INCLUDE /usr/local/etc/radiusclient/dictionary.merit
INCLUDE /usr/local/etc/radiusclient/dictionary.compat
INCLUDE /usr/local/etc/radiusclient/dictionary.microsoft
EOF
然後找到radius.so
locate radius.so
然後在 /etc/ppp/options.pptpd 最後一行新增他的路徑 要選對應自己的系統位數的那個路徑的radius.so
plugin /usr/lib64/pppd/2.4.5/radius.so
#也可以直接寫 plugin radius.so
radius-config-file /usr/local/etc/radiusclient/radiusclient.conf
這些配置好後就可以連線了 pptp 連線後 pptp伺服器會向freeradius 伺服器請求驗證 驗證通過後就ptpp 連線成功。
如果你們出錯了。就可以在
/var/log/message
檢視系統日誌 找出錯誤原因
查查是在驗證的時候連線不上radius 驗證伺服器
還是pptp本身不能成功連線客戶端
freeradius 可以進行 兩臺伺服器驗證測試
只需在freeradius服務端停止radiusd服務
service radiud stop
然後進入debug 除錯模式來觀察驗證狀態
然後進入debug 除錯模式來觀察驗證狀態
radiud -X
客戶端只需用radtest命令即可
[[email protected] ~]# radtest
Usage: radtest [OPTIONS] user passwd radius-server[:port] nas-port-number secret [ppphint] [nasname]
-d RADIUS_DIR Set radius directory
-t <type> Set authentication method
type can be pap, chap, mschap, or eap-md5
-x Enable debug output
-4 Use IPv4 for the NAS address (default)
-6 Use IPv6 for the NAS address
但是因為我客戶端不是安裝的整個freeradius 服務
而是隻編譯了精簡的 freeradius-client 客戶端 所有沒有radtest 命令可以用
這時你只需在freeradius的服務端從
/usr/bin 裡 把radtest 和 radclient 這兩個檔案
複製到 freeradius 客戶端 伺服器裡的
/usr/bin 即可 執行radtest 命令了
相關推薦
整理最近做的vpn系統的專案前端後端客戶端,排除些百度出來的坑。(一)vpn的配置之pptp與freeradius
這個專案的所有vpn連線的認證是用freeradius+mysql,用freeradius+mysql進行登入驗證可以讓系統管理更加輕鬆。 只需要在主驗證伺服器上控制mysql的radius表 就能控制所有的vps的 靈活的應對各個vps上的不同的vpn協議(p
最近做保險公司專案
就單證模組來說吧,每天平均2w單的增量,主表已經過3億,這樣的資料量肯定構架的人沒有想到,或者想到了跟他也沒有關係,就忽悠客戶,現在麻煩來了,客戶需要做各種各樣的盤點,把資料查一個底朝天,想想看,3億資料,日誌表甚至過10億了,這樣的資料進行分組,排序,表關聯查詢,是何等的慢,所以構架師幹不好就是個
A/B 測試的基本概念舉例理解以及具體實現方法【傳統A/B測試基於後端的 A/B 測試(Back-end AB test),現在基本上基於前端js在客戶端進行分流,有更多優點,請看裡面】
文章來源:http://www.aliued.cn/2010/09/27/ab-testing-realization-method.html 什麼是A/B測試?以及如何進行? 很多朋友都問我怎麼進行A/B測試,我一般都不直接回答他們的問題,而是首先問一句:“你的日
社交系統ThinkSNS+ V0.8.7發布,“問答”功能千呼萬喚始出來
加載 blank cab www. mini 成功 登陸 推薦 sns 【摘要】社交系統ThinkSNS+又更了,本次跳過了0.8.6,直接發布0.8.7,新增功能主要有問答系統,問答系統主要有最新問答、精選、懸賞、熱門、全部以及話題;第三方登錄,含QQ登錄、微信登錄、微博
網上做淘寶刷單員兼職被騙怎麽辦-百度_經驗
兼職 刷單 網上做淘寶刷單員兼職被騙怎麽辦-百度_經驗【支付寶全民小二QQ:951883135】我們將全力為您追回所有被騙去的資金等,支付寶全民小二QQ:【951883135】 微信、支付寶 淘寶、刷單被騙 維權投訴、等等其他的業務。 之前我就是通過這個方法把錢追回。網上做淘寶刷單員兼職被騙怎麽辦-百
記一次前端服務端客戶端三方聯調的總結
由於負責專案的原因第一次與客戶端服務端三方聯調,感覺有必要總結一下,雖然內容不復雜 技術也不難,總結總是好的。 就是要求使用者去關注公眾號,成功之後給予金幣獎勵。 和服務端的互動:進入頁面,反覆輪循去請求介面,服務端輪循去查詢資料庫,當得到返回結果是成功的時候銷燬該頁面。30s後停止請求。 和客戶端的互
關於mysql安裝後在客戶端cmd插入語句無法執行的問題
字符 mysql安裝 客戶端 界面 默認 無法執行 client gb2 set 關於mysql安裝後在客戶端cmd插入語句無法執行的問題 因為windows cmd默認字符集是gbk,當character_set_client=utf8時,cmd中出現中文會報錯;c
vue 專案快速輸出微信、支付寶、百度小程式
上週,[email protected] 正式釋出,優化了資料更新效能的同時,支援了百度智慧小程式,著實激動了一把,這“可能”是目前社群裡第一個同時支援三端小程式的 vue 小程式框架。下面我們就來試試他的效果。 跟著文件走 官方文件的第一部分就是快速入門,順藤摸瓜,構建一個 megalo 專案
負載均衡後獲取客戶端真實ip
String ip3=request.getRemoteAddr(); 如果沒有配負載均衡,則request.getRemoteAddr() 獲取的就是真實客戶端IP,如果配了nginx負載均衡,則request.getRemoteAddr() 獲取的是負載均衡nginx伺服器的ip,而不是真實
Windows10系統在安裝完Git客戶端之後桌面的文件和快捷方式都出現藍色的問號的解決方式
1 安裝完Git客戶端之後會出現藍色的問號:例如: 2:解決方式: window 7 ---->把隱藏的檔案全部顯示: 工具-資料夾選項-在檢視中找到 “隱藏檔案和資料夾” 那一欄,勾選“顯示所有檔案、資料夾和驅動器”,需要把“隱藏受保護作業系統安全檔案”前的鉤去掉. w
canal 修改mysql資料後Java客戶端無反應的問題解決方案
canal官方文件可以點選這裡檢視。 按照官網的教程完成配置後會發現,在修改mysql時java客戶端還是沒有反應。暫時發現有以下兩種原因: 1.需要修改canal.properties配置,但是官網沒有講解。(大概率) 進入canal解壓檔案 ,編輯conf/canal.prope
Android 百度地圖開發(一)如何呼叫百度地圖介面和在專案中顯示百度地圖以及實現定位
二、下載百度地圖API庫 然後新增到專案中即可。 三、在專案清單AndroidMainifest.xml配置百度地圖API key和新增相關許可權 四、在專案呼叫百度地圖專案功能,這篇文章就首先講講顯示地圖和定位的功能 首先
Git專案的初始化--客戶端
分散式專案版本管理工具,效果遠超SVN,誰用誰知道?安裝(windows):git的安裝通常是按照正常順序執行安裝即可,沒什麼複雜的?基礎配置:linu下載:wget命令即可linux下的最重要的安裝依賴的問題?安裝Git?tar -zxvf git的gz包編譯?make p
前端開發的客戶端本地儲存
4 在前端開發過程中,為了與伺服器更方便的互動或者提升使用者體驗,我們都會在客戶端(使用者)本地儲存一部分資料,比如cookie/localStorage/sessionStorage。在後端管理系統的前端,更是會涉及到一部分超大資料的請求,一個介面有時會達到5M甚至15M
.Net Core/Framework之Nginx反向代理後獲取客戶端IP等數據探索
aspnet keep 關於 asp off seh time 失誤 war 公司項目最近出現獲取訪問域名、端口、IP錯誤現象,通過排查發現, 之前項目一直通過Nginx自定義Headers信息來獲取,但最近運維人員失誤操作造成自定義Header信息丟失,造成項目拿不到
【Android實戰專案】Odoo 郵箱客戶端的經歷
在技術層面上來說,我在開發這款APP的時候,只是個大三的學生,經驗上和技術上都不成熟,現在大四,把之前做的Odoo 郵箱拿出來總結一下,和大家分享一下, 在漫長的開發中,也發現了很多新人都會犯的毛病,大部分人都太強調實踐操作,而疏忽了多看書總結經驗,由於是企業應用,全部原始
apt-get upgrade升級後docker客戶端和伺服器版本不一致問題解決方式。
錯誤現象:$ docker images Error response from daemon: client and server don't have same version (client : 1.19, server: 1.18)錯誤原因說明:使用apt-get
sql2005安裝後沒有客戶端 這個問題困擾好多開發人員!我通過自己的摸索和總結 終於搞明白了!!!
Microsoft SQL Server Management Studio Express (SSMSE) 是一種免費、易用的圖形管理工具,用於管理 SQL Server 2005 Express Edition 和具有高階服務的 SQL Server 2005 Express Edition。
筆記本清灰後組裝後出現藍屏,並不斷的迴圈重啟。
前兩天自己手動第一次對自己的筆記本進行了拆解,以前清灰什麼的都是在臺式機上,已經熟的不能再熟了,但是拆解筆記本還是第一次,所以拆的那叫膽顫心驚,就深怕拆壞了,而舍友說拆了肯定不能用了,嚇得我半死。 終於黃天不負有心人,拆完了機器,清完灰,然後就進行組裝,但是坑爹的是筆記本還
推薦一個適用於SpringBoot專案的輕量級HTTP客戶端框架,快來試試它!
在`SpringBoot`專案直接使用`okhttp`、`httpClient`或者`RestTemplate`發起`HTTP`請求,既繁瑣又不方便統一管理。因此,在這裡推薦一個適用於`SpringBoot`專案的輕量級HTTP客戶端框架[retrofit-spring-boot-starter](https