目的:
构建一台单网卡Linux网关(透明代理),该网关拨入某海外×××服务器,客户端设定该网关后,网络出口则为海外×××服务器,实现加速访问一些网站的目的。

环境信息:
硬件:DELL机器一台,单网卡(IP:10.39.100.253);
机器名:***GW
操作系统:CentOS 6.0  Kernel Linux 2.6.32-71.el6.i686
网络环境:局域网防火墙需允许该机器使用PPTP协议拨入某公网IP

安装步骤:
一. 安装操作系统,设定IP,机器名,可关闭防火墙,SELinux;
修改主机名:设置CentOS主机名称的配置文件为:/etc/sysconfig/network
修改hosts文件:修改/etc/hosts文件
关闭SELinux: 修改/etc/sysconfig/selinux
SELINUX=disabled   #这是最标准的方式

设定系统使用EPEL源:
CentOS 6.x 32-bit (x86/i386):
rpm –Uvh http://download.fedoraproject.org/pub/epel/6/i386/epel-release-6-5.noarch.rpm
CentOS 6.x 64-bit (x64):
rpm –Uvh http://download.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-5.noarch.rpm

二. 安装软件;
检查ppp, pptp, pptp-setup的安装情况,没有则yum install;

三. 使用pptpsetup命令创建×××节点;
pptpsetup命令用法及说明:

  1. pptpsetup  --create <TUNNEL> --server <ip address/hostname> [--domain <DOMAIN NAME>] --u sername <USERNAME> [--password <PASSWORD>] [--encrypt] [--start]
  2. pptpsetup –delete <TUNNEL> 删除一个节点

Options:
* <TUNNEL>  创建的连接名称,自指定。
* <SERVER> PPTP SERVER的IP或域名。
* <DOMAIN>   所在的域,很多Windows的服务器都是使用“域”来管理认证的。
* <USERNAME> ××× 用户名(域用户名)
* <PASSWORD> ×××上用户密码,也可以没这个参数,命令稍后会自动询问,这样保证账号安全
* –encrypt 表示启用加密,不必指定加密方式,命令会读取配置文件中的加密方式
* 当没使用–encrypt 连接时出现下面的错误时,表示使用了加密,这点也可以和×××的管理员联系确认一下,遇到下面的情况可以加上该参数。
* CHAP authentication succeeded
* LCP terminated by peer (ZM-76-^@<M-Mt^@^@^BM-f ) 类似乱码
* –start  创建连接完后马上连接。

运行该命令后实际上创建了两个配置文件:
/etc/ppp/chap-secrets
/etc/ppp/peers/连接名

配置文件 /etc/ppp/peers/连接名 需要做些修改,我的如下:

  1. # written by pptpsetup
  2. pty "pptp 10.39.100.2 --nolaunchpppd"
  3. lock
  4. noauth
  5. nobsdcomp
  6. nodeflate
  7. name csnj\\administrator
  8. remotename cs***
  9. ipparam cs***
  10. #defaultroute  #使用本连接作为默认路由,本文单网卡没意义,可以不添加,说明见附录
  11. persist #当连接丢失时让pppd再次拨号,已验证
  12. require-mppe-128
  13. refuse-pap
  14. refuse-chap
  15. refuse-eap
  16. refuse-mschap

我在做这一步的时候,始终连接不上,怀疑过加密方法、握手协议什么的没用对,最终发现是用户名填写的方式要改变下。
需把上述两个配置文件里面的"DOMAIN\username" 改为"DOMAIN\\username" ,就可以了。
这点在官方文档中亦有说明,链接:http://pptpclient.sourceforge.net/howto-redhat.phtml#setup
引用:

  1. *  The script displays your choice, together with information about specifying a local name:
  2. Add a NEW CHAP secret.
  3. NOTE: Any backslashes (\) must be doubled (\\).
  4. Local Name:
  5. This is the 'local' identifier for CHAP authentication.
  6. NOTE: If the server is a Windows NT machine, the local name
  7. should be your Windows NT username including domain.
  8. For example:
  9. domain\\username
  10. Local Name: your_domain\\your_username

四. 设置拨号脚本;
拨号脚本pon 和poff在下面的目录 /usr/share/doc/ppp-*/scripts/ 里:
cp /usr/share/doc/ppp-2.4.5/scripts/pon /usr/sbin
cp /usr/share/doc/ppp-2.4.5/scripts/poff /usr/sbin
chmod +x /usr/sbin/pon /usr/sbin/poff  #使pon和poff脚本拥有执行权限
这样就可以通过pon/poff <tunnel> 来启停×××连接。
也可以使用 pppd call <tunnel> / killall pppd来启动/停止。

五. 设置开机自动拨号,并在拨号后改变路由;
把启动拨号的命令添加到/etc/rc.d/rc.local文件中:

开机后查看路由已使用***通道设备。

六. 查看××× Log;
相应的LOG可以在 /var/log/message中查看。
to further diagnose a failure, add options to the command(使用命令行拨号并查看屏幕日志):
pppd call ***_name debug dump logfd 2 nodetach

七. 安装squid;
yum –y install squid
启动squid:/etc/rc.d/init.d/squid start

八. 配置squid;
修改配置文件 /etc/squid/squid.conf
配置为透明代理:
# Squid normally listens to port 3128
http_port 10.39.100.253:3128  transparent
配置squid开机自动启动:
chkconfig squid on

九. 关于访问控制;
设置完成后,关键且重要的任务是访问控制。Squid支持的管理方式很多,使用起来也非常简单(这也是有人宁愿使用不做任何缓存的Squid,也不愿意单独使用iptables的原因)。
Squid可以通过IP地址、主机名、MAC地址、用户/密码认证等识别用户,也可以通过域名、域后缀、文件类 型、IP地址、端口、URL匹配等控制用户的访问,还可以使用时间区间对用户进行管理,所以访问控制是Squid配置中的重点。
Squid用ACL (Access Control List,访问控制列表)对访问类型进行划分,用http_access deny 或allow进行控制。
本文通过Mac地址进行控制,在配置文件中修改
acl  allowuser  arp  mac1  mac2
http_access  allow  allowuser
特别要注意的是,Squid将使用allow-deny-allow-deny……这样的顺序套用规则。例如,当一个用户访问代理服务器时, Squid会顺序测试Squid中定义的所有规则列表,当所有规则都不匹配时,Squid会使用与最后一条相反的规则。
iptables –t filter –A INPUT –s 10.39.101.152 –I eth0 –j ACCEPT
iptables –t filter –A INPUT –s 10.39.0.0/16 –I eth0 –j DROP

十. 打开内核IP转发;
方法一:修改/proc下内核参数文件内容
直接修改内核参数ip_forward对应在/proc下的文件/proc/sys/net/ipv4/ip_forward。用下面命令查看ip_forward文件内容:
# cat /proc/sys/net/ipv4/ip_forward
该文件默认值0是禁止ip转发,修改为1即开启ip转发功能。修改命令如下:
# echo 1 >/proc/sys/net/ipv4/ip_forward
修改过后就马上生效,即内核已经打开ip转发功能。但如果系统重启后则又恢复为默认值0,如果想永久打开需要通过修改/etc/sysctl.conf文件的内容来实现。
方法二.修改/etc/sysctl.conf文件
默认sysctl.conf文件中有一个变量是
net.ipv4.ip_forward = 0
  将后面值改为1,然后保存文件。因为每次系统启动时初始化脚本/etc/rc.d/rc.sysinit会读取/etc/sysctl.conf文件的 内容,所以修改后每次系统启动时都会开启ip转发功能。但只是修改sysctl文件不会马上生效,如果想使修改马上生效可以执行下面的命令:
# sysctl –p

十一. 配置iptables;
1. 将客户端的请求NAT方式转给外网进行路由;
iptables -t nat -A POSTROUTING -s 10.39.0.0/16 -o ppp0 -j MASQUERADE
2. 将客户端对Web端口80的请求转发到Squid 3128端口,由Squid接手;
iptables -t nat -A PREROUTING -s 10.39.0.0/16 -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3128
保存:/etc/rc.d/init.d/iptables save
重启:service iptables restart

十二. 安装过程中,学习了若干(>20)网络上的博客文章,知识库,无法一一列出,一并感谢。
网络中很多文章使用脚本来实现开机自动拨号,断线重拨等功能,因我不懂脚本,待以后弄懂了再补充。

本文PDF版笔记下载:http://down.51cto.com/data/416640

转载于:https://blog.51cto.com/netside/870961

CentOS 6.0配置pptp ××× Client和Squid透明网关相关推荐

  1. CentOS 5.6配置PPTP+Radius+Daloradius认证服务器傻瓜教程

    1.检查服务器是否有必要的支持.如果检查结果没有这些支持的话,是不能安装pptp的.执行指令: #modprobe ppp-compress-18 && echo ok 这条执行执行后 ...

  2. CentOS 5.3 下快速安装配置 PPTP ××× 服务器

    ×××的英文全称是"Virtual Private Network",翻译过来就是"虚拟专用网络".顾名思义,虚拟专用网络我们可以把它理解成是虚拟出来的企业内部 ...

  3. linux 虚拟专用网络设置,centos安装配置pptp 虚拟专用网络服务器步骤分享

    说明: 服务器操作系统:CentOS 5.X 64位 服务器IP地址:192.168.21.128 实现目的:服务器安装配置pptp软件,对外提供虚拟专用网络拨号服务 具体操作: 一.安装包下载 1. ...

  4. 玩转虚拟化VMWare之一: VMWare ESXi 5.0和vSphere Client安装和配置

    内容提要: 1. 安装和配置VMWare ESXi 5.0 2. 安装和配置vSphere Client 3. 详细介绍如何注册 4. 如何在ESXi 5.0中安装CentOS 6.4 x64 一.E ...

  5. CentOS 6.0 图形(图解)安装教程、基本配置、网络配置、软件源配置、安装压...

    一.准备安装CentOS 6 1.CentOS简介 CentOS 是甚么? CentOS 是一个基于Red Hat 企业级 Linux 提供的可自由使用的源代码企业级的 Linux 发行版本.每个版本 ...

  6. CentOS 6.0 图形(图解)安装教程、基本配置、网络配置、软件源配置、安装压缩、语言包

    一准备安装CentOS 6 1.CentOS简介 CentOS 是甚么? CentOS 是一个基于Red Hat 企业级 Linux 提供的可自由使用的源代码企业级的 Linux 发行版本.每个版本的 ...

  7. CentOS 6.0 图形(图解)安装教程、基本配置、网络配置、软件源配置、安装压缩、语言包 一.准备安装CentOS 6

    CentOS 6.0 图形(图解)安装教程.基本配置.网络配置.软件源配置.安装压缩.语言包 一.准备安装CentOS 6 1.CentOS简介 CentOS 是甚么? CentOS 是一个基于Red ...

  8. 【转】CentOS 6.0 图形(图解)安装教程、基本配置、网络配置、软件源配置、安装压缩、语言包...

    一.准备安装CentOS 6 1.CentOS简介 CentOS 是甚么? CentOS 是一个基于Red Hat 企业级 Linux 提供的可自由使用的源代码企业级的 Linux 发行版本.每个版本 ...

  9. 服务器系统linux怎么安装教程,CentOS 8.0.1905 linux服务器系统安装与配置图解教程...

    说明: 截止目前CentOS 8.x最新版本为CentOS 8.0.1905,下面介绍CentOS 8.0.1905的具体安装配置过程 服务器相关设置如下: 操作系统:CentOS 8.0.1905 ...

最新文章

  1. Yann LeCun“隔纸对话”黄铁军:图灵机上的深度学习能模拟世界吗?
  2. POJ3461 Oulipo ——KMP算法——Pku3461
  3. “他们”最想要的圣诞礼物是你的...
  4. 路径总和Python解法
  5. C#连接sqlServer数据库详解
  6. 最新的20多个JMS面试问答(2020)
  7. MongoDB分布式集群分片
  8. 关于solaris中 crontab -e 出现数字0的解决办法
  9. 建立一个普通方法无法打开查看和删除的文件夹
  10. 客户永远是对的---我的理解:做事不要抱怨,别为失败找借口。
  11. 腾讯云数据库智能化海量运维的建设与实践
  12. 【回文串14】LeetCode 680. Valid Palindrome II
  13. select2 ajax 搜索框,修改Select2搜索框(Modify Select2 search box)
  14. wps 甘特图_项目管理/产品研发/建设施工/计划生成项目进度甘特图表教程
  15. 哪个pdf打印机可以设置双面打印啊
  16. cogs 1487. 麻球繁衍(概率dp)
  17. iOS客户端技术支持
  18. python3注释_python3的注释
  19. 魔金多商户商城平台管理
  20. C# FileSystemWatcher使用说明

热门文章

  1. android c聊天功能,Android实现简单C/S聊天室应用
  2. 军用软件概算计价规范_工程造价五算:估算、概算、预算、结算、决算
  3. flutter和webapp_Flutter全平台!迁移现有Flutter项目到WEB端
  4. dhcp报文_动态地址分配DHCP,IP地址管理方式及分配原则,一分钟了解下
  5. 【java】4.27上课及做作业时遇到的问题及第十六节课笔记整理
  6. 多线程1(进程、[创建]线程与生命周期)
  7. 微信小程序学习做动画效果
  8. js获取前后几天或者前后几个月的日期
  9. 一劳永逸,iOS 自定义 ActionSheet 封装流程
  10. laravel基础课程---8、laravel响应和视图(响应是什么)