Server:RedHat
Linux9Kernel2.6.10
. x0 d( @6 s: E9 O c% b1 d1 y! e3 k* ~ L& G/ r! A8 S- Q
Client:Win2000Pro/ServerSP4,Win
XPSP2
* ~) o% R: E& X3 `! w- p$ j
, o4 Q. p" c# _ Server所需要:
- N+ A) S$ h0 h. D6 ^4 h, J1 B
/ C7 ~7 P: K p+ } www.kernel.org
) m9 k; I/ ]6 n) x9 d kernel:linux-2.6.10.tar.bz2
7 J! T% u+ j$ r2 J, {# h3 N7 _+ C! {8 v
http://www.polbox.com/h/hs001/
, x" T, A1 D0 `5 s
kernel_patch:linux-2.6.10-mppe-mppc-1.2.patch.gz
) f/ w) K8 E5 Q2 o6 H! R" p/ t pppd:ppp-2.4.3.tar.gz
3 V" _& I- i, M2 d! ?5 f$ J, s! b
pppd_patch:ppp-2.4.3-mppe-mppc-1.1.patch.gz
+ }9 p: m% U* |4 H) D
pptpd:pptpd-1.2.3.tar.gz
# ~- F7 z7 G8 z6 s
" r2 ^3 ^+ d. O7 a 为了方便起见,可以把它们放在同一个目录下
' E/ L# q% `/ A+ W/ P; l5 Z7 G8 {+ \; Q
我不喜欢用RPM方式安装,所以都是用的源码方式编译安装
l" p! ]( O; v; [
2 u. d# T9 N" ~" A 一、先给内核打补丁( o3 M: w& r! n( ]$ s* g* w2 u& z
7 o4 p0 C( t# a* D L D' i
$ A4 |: n9 y6 U8 u1 \
# ~* ?1 x* ]- `% Q) w8 h
3 H" s0 i( a5 C- x( K- p1 y% a& k/ p* f8 W2 n: u$ t% F1 V" q
C$ R0 c/ w9 T3 r" I: l#tarzjvflinux-2.6.10.tar.bz2#gunziplinux-2.6.10-mppe-mppc-1.2.patch.gz#patch-p0-ilinux-2.6.10-mppe-mppc-1.2.patch#ln%26;#8211;slinux-2.6.10linux#cdlinux#makemenuconfigDevice
Drivers-%26gt;NetworkingSupport-%26gt;
& ~6 r s' @* a) ^# x
$ [1 ?* C1 `. Y6 j6 i* \ 把"PPPsupport"编进内核,你也可作为模块编译。
M- G( P4 y* u# d \0 c0 o5 m9 T! x1 q. ~, U5 h/ Z
3 {1 _: n9 H2 j1 r9 M+ ~- r
]+ t/ v" `% M& P
/ ^7 r( S1 I, G/ |2 P( U# b
' n$ ] J3 c, x6 c5 o5 C1 b
# h) m& z& z- w `0 x U: n& [9 FPPPSupportforasyncserialportsPPPSupportforsyncttyportsPPPDeflatecompression
MicrosoftPPPcompression/encryption(MPPC/MPPE)"Cryptographicoptions
, E; a" G) m7 q) {' Y2 @; _( A
6 O* x; L6 J5 d2 @3 I
把"CryptographicAPI"编进内核,你也可作为模块编译。确保SHA1和ARC4支持已经选上:
, s7 d8 e K. f+ R3 |; r: T8 g x! e$ g4 c& U; C
/ J) y" }2 ~; C# ^( h8 Q. }
% a2 s, n& Z% C+ @! }7 k# }
* x; P9 E8 V4 g
0 k3 {5 [* I! e! J' D
* I, P1 _( u1 w8 \3 z. fSHA1digestalgorithmARC4cipheralgorithm
, ~/ w( ^& M, E% ?/ t/ w/ O[color=#FFFFFF']
9 g) [/ |9 z) y) N- {3 \& }! f8 M
) l( t# M# Q# M$ b0 ^4 g2 G
7 O" c0 d7 I( T1 F' m( f: r5 u
保存配置文件,退出
, g: D& r! N* B4 O1 e. U' c. O
; P% K' O& ^3 N% w: [
编译内核
! j8 L: ]( h- q, W/ r: T/ x( G. r* T4 E7 E2 ?$ _
makeallmodulesmodules_installinstall
* s' _; k: ^1 r# C! x0 P3 J' e$ x. B) Z+ V. c* f3 {: m+ b
修改/etc/modprobe.conf(2.4的Kernel请修改/etc/modules.conf)
8 t7 p8 l8 j j& o2 r) W
3 L: `. @8 \' m H5 w4 k' o 重启,进入2.6.10
- B' e0 N' ~4 d0 ^ `# I 因为密码是明文显示的,最好能修改文件权限,使root作为owner和chmod700
4 a w m0 H% f" C* |% x
. G4 B/ _$ e& {6 w& f3 ~9 F+ i
+ }& K D! Z- X0 N2 l, K
* K( w6 V: v! Y* X
; F. _8 u/ ]0 e- q. W( W5 f4 z1 \- |! i! e- b' n' [
# G! b8 `1 e: r- D
vi/etc/modules.confaliaschar-major-108ppp_genericalias/dev/pppppp_genericaliastty-ldisc-3ppp_asyncaliastty-ldisc-14ppp_syncttyaliasppp-compress-18ppp_mppe_mppcaliasppp-compress-21bsd_compaliasppp-compress-24ppp_deflatealiasppp-compress-26ppp_deflate
9 ]0 q8 z, }, U
[color=#FFFFFF']
2 ~9 R: ^" X% N: L9 J+ o
- H3 |; Z5 J- r
) ^+ T- s' l# L% R% T A: a 重新启动
5 M) H9 s* E* e( n
7 d6 ~ N/ ^$ Q6 v8 G. ]+ I; |4 d: K0 y$ u
& s$ o( |+ [8 X4 J$ q: j9 T2 b' X# X5 |) B& Y8 Z/ G
, V. l8 ~7 x# s& j. p+ L
" X2 v! v' R5 t$ B. a) Y#reboot
) e: U+ W+ Z5 n1 c) j: z8 u
) @: F: N2 C; Z2 a$ d" m" N/ Q5 i
在我这里aliasppp-compress-18ppp_mppe_mppc好像没用,只好手动加载:
- _! f5 `7 @* |# E! Y9 E, C! Q g! B
& p1 l- u0 p7 n
. o4 x1 w5 w- t; n# [9 O9 b* O9 c
2 k* c! n; x" {" x- |
7 w' |& C+ ?. s% q#modprobeppp_mppe_mppc
# E, Y/ E7 c9 ~
$ e% d" H8 S4 X 确认内核支持
G6 b1 o$ T$ K$ e& m/ X
% j" u* C: T/ G4 x. \5 i3 w! ? n; j
/ R: ]5 c, P8 i) b
& h+ g2 x4 G! q& B! @
0 t0 c; |- l0 l8 b
8 [6 ~+ S0 {. k% m: ~strings`whichpppd`│grep-imppe│wc--lines30###大于等于30就行#####[strings`whichpppd`│grep-imppc│wc--lines7####不为0#####dmesg│grepMPPEMPPE/MPPCencryption/compressionmoduleregistered
3 `# @# n) }6 j+ O# j v0 o7 ?! k
4 H6 C- b& c ]0 n6 f! d# Z6 w 启动pptpd
3 p8 Y+ @# ]4 d3 A5 R* q3 m
3 a5 `% m- v' C# s$ j8 c$ N3 l# j
4 a# @" n1 h" t! r/ }& J1 M( y, M# \
# Z7 A% V \8 R
* n8 l9 k4 o9 N- d- x$ H6 R$ I, m
8 n. V, S0 [8 O; O- H1 p
#/usr/local/sbin/pptpdMar1723:07:32localhostpptpd[4471]:MGR:
ManagerprocessstartedMar1723:07:32localhostpptpd[4471]:MGR:Maximumof10connectionsavailable
7 P! _8 @$ \& n+ f9 U' ~% N" `3 m2 P6 A0 g! n
设置客户端连接,“
安全”里面选择自定义,如图所示,这里取决于你在option.pptpd里面的设置:
! Z" v2 l- [ \- f+ Y6 A4 `
6 T' Q' V- j( B2 q4 K
/ C/ ^0 i/ T8 e4 ~; a) t8 Y7 {" c
. |. I0 I% z% Z: i3 Y
( C8 c% c+ I: A' @$ y5 ^1 ]) f) ` r$ l, ] X3 f; |3 ^2 x) _
Mar1723:09:59localhostpptpd[4473]:CTRL:Client192.168.1.136controlconnectionstartedMar1723:09:59localhostpptpd[4473]:CTRL:Startingcall(launchingpppd,openingGRE)Mar1723:09:59localhostpppd[4474]:pppd2.4.3startedbyroot,uid0Mar1723:09:59localhostpppd[4474]:Usinginterfaceppp0Mar1723:09:59localhostpppd[4474]:Connect:ppp0%26lt;--%26gt;/dev/pts/1Mar1723:10:02localhostpptpd[4473]:CTRL:IgnoredaSETLINKINFOpacketwithrealACCMs!Mar1723:10:02localhostpppd[4474]:MPPC/MPPE128-bitstatelesscompressionenabledMar1723:10:04localhostpppd[4474]:foundinterfaceeth0forproxyarpMar1723:10:04localhostpppd[4474]:localIPaddress192.168.1.3Mar1723:10:04localhostpppd[4474]:remoteIPaddress192.168.1.230
3 {5 c) L7 }* D/ T$ j+ c1 J
/ c" W4 R5 ~/ y# |& G 成功!
- Q+ `& U9 A8 ]9 U4 E" X% U
1 i+ i& {3 R( i- z& e; q
除了那个红色的一行外,不知是何原因?
1 ?$ I1 b- A. O4 y# r( m- L/ ? 注:2.4.x的内核除了patch文件和modules.conf文件外,其它都
类似。为什么pppd的选项文件里面会有不同?pptp客户端是基于PPP协议的。PPP需要MPPE加密协议支持来支持某些PPTP
服务器。
* F# c' d: q5 }2 h4 b; C
& Y+ ^5 S' Z; N$ q4 t5 x 早期的版本包含了Open
SSL授权的源码,这一部分源码是独立于PPP项目的;这就是PPP-MPPE2.4.0(红色)。稍晚些的版本使用了BSD授权的源码,这些源码是PPP项目的一部分;这就PPP2.4.2及其更高版本了(绿色),第三个就是使用了JanDubiec的patch,加入MPPC支持的版本(蓝色)
% M) o: H: ^0 \# J( O
) A$ M% C) o; _ 对每个版本来说,PPPMPPE支持需要有两个部分。其一是内核的支持,另外就是pppd
程序的支持。这两个部分必须是同一个版本,如果两个的版本不一致,产生的结果就是pppd程序报告这样的错误:内核不支持。两个版本的详细对比:
3 r5 m/ z: N) p$ n9 e
* y) T$ u$ Y0 L; l6 h5 ^
: ], `/ Q; Z9 u5 j5 Q
& Z* z- C' S( b7 }- N: M9 o
$ V- L) ^9 s$ ]' a' q
5 O+ W3 b8 m f* y8 s, [/ r0 s J9 \( ~, `; P& J8 n# c* `
PPP-MPPE2.4.0nofurtherdevelopment?noresponsetoproblemshasknownproblemssuchaskernelpanicsOpenSSLlicensedirectlyconflictswithkernellicensewhenloaded,doesnotindicatealicenseconflictrequires/etc/modules.confchangesmodulefilenamemppe.o(orppp_mppe.o)mppe-128(inconsistentwithexistingoptionnames)mppe-statelessrequire-chapms-v2(incorrectprotocolname)
3 m" P6 d7 M; K# k[color=#FFFFFF']
) }8 D. C' M! T4 {
) C+ p7 y( }. C' Y$ H. A4 H2 M
& H1 w! x. R8 J. O! q
: E+ I! w/ t w9 Y0 A
- A1 ^3 H- {' ~* W% `% _" c
3 \4 w' @2 `) a
) _5 _$ P0 Z3 Y, W; b% g0 ?! S9 O \7 A( e* F* @& K7 y! B
PPP2.4.2andlaterongoingdevelopmentbyPPPprojectactiveresponsetoproblemsbydevelopershasnoknownproblemsatthistime(staytuned)BSDlicensedoesnotconflict(asmuch)withkernellicensewhenloaded,indicatesalicenseconflictrequiresno/etc/modules.confchangesmodulefilenameppp_mppe.o
require-mppe-128nomppe-statefulrequire-mschap-v2, j7 |; \" u& b8 D2 R" a1 D
; A1 h( P% A5 q* j$ z& n) l
这两个版本的pppd程序也有不同的命令行参数。
8 S. ^7 E4 Z) Q/ E. _ @0 y
2 A$ k8 i9 r9 a 如果你是从老的PPP-MPPE2.4.0包升级过来的,请修改/etc/ppp/options.pptp和/etc/ppp/peers文件中已经存在的tunnels名称,采用与MPPE支持相关的正确的pppd参数命名。
2 q& q. p! m' ^
4 d2 p% W; N$ [ PPTP客户端项目以前使用的参数选项命名是对非官方的打了MPPE补丁的PPP而言的。从那时起,PPP项目组就采用了他们的命名使其与其它pppd选项一致。