2023年11月28日发(作者:)

Debian 使用PPTP client

1. 用以下命令安装pptp client软件和gcc软件

# apt-get install pptp-linuxgcc

有时我们会在字符终端模式下启用SSH连接,以进行远程维护。这时我们要用到pon

poff程序。pon用于VPN拔号,poff用于断开VPN连接。要正常使用这两个程序,前提是

要按上面的配置方法成功配置了一个VPN连接。假设我们已建立了一个名为remote

VPN连接,则可用以下命令连接 VPN服务器。

debian:~# pon remote # 建立一个VPN连接

debian:~# plog # 查看VPN连接状态信息

debian:~# poff remote # 断开VPN连接

remote这个VPN连接的信息主要存放在两个文件中

分别是/etc/ppp/chap-secrets/etc/ppp/peers/remote

2. /etc/ppp/chap-secrets文件示例:

# Secrets for authentication using CHAP

# client server secret IP addresses

username PPTP userpass *

3. /etc/ppp/peers/remote文件示例:

# 这一行是 pptp 拨号时执行的程序,其中 10.0.0.100 pptp 服务器的地址

pty "pptp 0.0.0.0 --nolaunchpppd"

# name 表示在 PPTP 服务器端的用户名

name username

# remotename 表示在 chap-secrets 文件中的服务名

remotename PPTP

require-mppe-128

file /etc/ppp/

ipparam remote

# defaultroute 表示用新创建的 ppp 连接作为缺省路由

defaultroute

# replacedefaultroute 表示在用新建连接做缺省路由时,替换掉原先的缺省路由

replacedefaultroute

最后两项如果是ADSL拨号网络的话是不能加的。会引起断线

解决的方法是在/etc/ppp/ip-up.d//etc/ppp/ip-down.d/里面写脚本。脚本书写这里暂不说

4. /etc/ppp/ 文件示例:

lock

noauth

refuse-eap

refuse-chap

refuse-mschap

nobsdcomp

nodeflate

require-mppe-128

mppe-stateful

defaultroute

5.使用时需用真实的usernamepassword代替配置文件中这两项内容。

6. interfaces 文件中添加 ppp 拨号连接

/etc/network/interfaces 中添加如下内容:

iface remote inet ppp

provider remote

添加完之后,就可以用 ifup remote 来启动 pptp 虚拟专用网了。

7.为本地局域网添加路由

这个步骤和虚拟专用网本没有太大关系,但因为需要,就写在这里。还是修改

/etc/network/interfaces 文件,在原有的 eth0 的局域网配置中加入:

route add -net 10.0.0.0 netmask 255.0.0.0 eth0

这样在不使用 pptp 的时候虽然多了一个路由项,但对系统不会有任何的影响。而在开启

pptp 后,路由也不会出错。

8.网关拨vpn内网客户机上网

/sbin/iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE

/sbin/iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -j MASQUERADE

/sbin/iptables -A FORWARD -p tcp --syn -s 192.168.1.0/24 -j TCPMSS --set-mss 1300

9.编写自动检测连接程序(C语言)

nano zx.c //创建zx.c的源文件

写入以下语句

#include

int main ()

{

FILE *pt;

pt=fopen ("/var/www/ppp0","w+");

fclose(pt);

system("ifconfig | grep ppp0 >>/var/www/ppp0");

pt=fopen ("/var/www/ppp0","r");

if ((fgetc(pt)==EOF) && (fclose(pt) == 0))

{

system("pon remote");

system("plog >> /var/log/");

}

}

保存并推出。

cc zx.c //编译zx.c

//将可执行程序复制到/etc/init.d/目录下 cp /etc/init.d/

10. crontab -e 编辑定时作业脚本:

SHELL=/bin/bash

PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

# m h dom mon dow command

*/5 * * * * /etc/init.d/>> /var/log/

注意 SHELL=/bin/bash PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin 这两

行代码是必须的

11.开机自动连接

nano /etc/

exit 0 前一行写入 /etc/init.d/