CentOS 6.0配置pptp ××× Client和Squid透明网关
目的:
构建一台单网卡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命令用法及说明:
- pptpsetup --create <TUNNEL> --server <ip address/hostname> [--domain <DOMAIN NAME>] --u sername <USERNAME> [--password <PASSWORD>] [--encrypt] [--start]
- 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/连接名 需要做些修改,我的如下:
- # written by pptpsetup
- pty "pptp 10.39.100.2 --nolaunchpppd"
- lock
- noauth
- nobsdcomp
- nodeflate
- name csnj\\administrator
- remotename cs***
- ipparam cs***
- #defaultroute #使用本连接作为默认路由,本文单网卡没意义,可以不添加,说明见附录
- persist #当连接丢失时让pppd再次拨号,已验证
- require-mppe-128
- refuse-pap
- refuse-chap
- refuse-eap
- refuse-mschap
我在做这一步的时候,始终连接不上,怀疑过加密方法、握手协议什么的没用对,最终发现是用户名填写的方式要改变下。
需把上述两个配置文件里面的"DOMAIN\username" 改为"DOMAIN\\username" ,就可以了。
这点在官方文档中亦有说明,链接:http://pptpclient.sourceforge.net/howto-redhat.phtml#setup
引用:
- * The script displays your choice, together with information about specifying a local name:
- Add a NEW CHAP secret.
- NOTE: Any backslashes (\) must be doubled (\\).
- Local Name:
- This is the 'local' identifier for CHAP authentication.
- NOTE: If the server is a Windows NT machine, the local name
- should be your Windows NT username including domain.
- For example:
- domain\\username
- 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
相关文章:

mysql汉字转拼音函数
-- 创建汉字拼音对照临时表 CREATE TABLE IF NOT EXISTS t_base_pinyin (pin_yin_ varchar(255) CHARACTER SET gbk NOT NULL,code_ int(11) NOT NULL,PRIMARY KEY (code_) ) ENGINEInnoDB DEFAULT CHARSETlatin1;-- 插入数据 INSERT INTO t_base_pinyin (pin_yin_,code_) VAL…

数据挖掘的一些经典算法
数据挖掘能做以下七种不同事情(分析方法):数据挖掘能做以下七种不同事情 分类 (Classification) 估计(Estimation) 预测(Prediction) 相关性分组或关联规则(…

python cx oracle安装_python3.6的安装及cx_oracle安装
一、创建所需目录mkdir -p /home/用户名/software/python3.6.1mkdir -p /home/用户名/priv/bydmkdir -p /home/用户名/priv/byd/src/pythonmkdir -p /home/用户名/priv/byd/org二、修改byd目录的权限cd /home/用户名/priv/llchmod 777 byd/ll三、将安装包放到byd中,…

opencv 无法找到tbb_debug.dll
本人环境:vs 2010 在opencv(你的opencv install 路径)\build\common\tbb\ia32\vc10下,将tbb.dll 拷贝一份,改名为tbb_debug.dll. 并将此路径加入到系统环境变量中即可。转载于:https://blog.51cto.com/danielllf/871369

【天命奇御】成就进度62/71的通关攻略(1·开篇前言)
天命奇御于2018.8.9号在wegame上发售 先是一周目记录: 可以说一周目是熟悉最终boss技能后,靠技术过的...... 然后是二周目记录: 开篇前言: 转载于:https://www.cnblogs.com/wuduojia/p/9494700.html
使用git上传代码到github
1. github上创建项目 github是一个服务器托管商,我们写好的代码可以上传到github上面去 登录github的官方网站:http://github.com/ 注册一个自己的用户 新建一个项目,我这里有我自己的一个github账号,我直接登录上去了&am…

gpg加密命令 linux_用 PGP 保护代码完整性(五):将子密钥移到一个硬件设备中 | Linux 中国...
在这个系列教程中,将为你提供使用 PGP 和保护你的私钥的最佳体验。-- Konstantin Ryabitsev致谢译自 | linux.com 作者 | Konstantin Ryabitsev译者 | LCTT / qhwdw在这个系列教程中,将为你提供使用 PGP 和保护你的私钥的最佳体验。在本系列教程中&#…

在Android使用XML文件控制按钮文字在各种状态下的颜色
最近在项目中遇到新的需求,就是在按钮在选按的时候需要将文字变为白色,但android默认的按钮颜色为黑色,之前也没有考虑过类似的问题。 通过doc文档,发现按钮文字的处理方式和背景的处理方式很相似,同样可以用一份selec…

人人网 6.0 版申请页面随着滚动条拖动背景图片滚动出现的原理
第一步是考虑静态实现。整个页面分成几大块,比如: <div class"section" id"topic-a"></div> <div class"section" id"topic-b"></div> <div class"section" id"topi…

Python内部类,内部类调用外部类属性,方法
一 Python中内部类 典型定义: class MyOuter:age18def __init__(self,name):self.namenameclass MyInner:def __init__(self,inner_name):self.inner_nameinner_nameoutMyOuter(lqz) innerout.MyInner(lqz_inner) print(inner.inner_name) 二 内部类调用外部类的类属…

POJ 2528 Mayor's posters(线段树)
题目大意 贴海报。每张海报的高度都是一样的,唯独宽度不一样。每张海报只能占用整数倍的单位线段长度,贴了 n(n<10000) 张海报之后,有几张能够看见(有一个角能看见这张海报也算被看见了)?海报的宽度最大…

xmind 模板_xmind模板打包下载
500套xmind模板【分类整合】好东西分享啦!~百度网盘下载链接:https://pan.baidu.com/s/1pCf8aqM8R8m4U4oWZUfOUA提取码:xt1j 微云盘下载连接: https://share.weiyun.com/5c3vehsXMind中的思维导图结构包含一个中心根主题ÿ…
Pycharm的运行和简单调试
我这里已经简单的创建了一个文件,为了浅显易懂,这里程序写的比较简单 1. 运行程序 首先,找到编辑窗口上面有一个向下方向的灰色箭头,点击它 点击之后,选择第一个选项edit Configurations,然后在弹出…

为什么百度只收录我的网站首页?
在我们做SEO的时候,经常碰到一个常见的问题,百度只收录网站的首页或者是一夜之间网站的收录变成了只剩首页。出现这种情况的原因很多,我们需要去检查自己的问题,然后去解决,让自己的网站重新获得更多页面的收录&#x…

Python3.5 学习十二 数据库介绍
MYSQL介绍: 主流三种数据库:Oracle、Mysql、Sqlserver Mysql安装和启动: windows 1安装 2启动服务 3进入bin目录,打开命令行 4 mysqladmin -u root password ******* 设置密码 5 mysql -u root -p 使用密码登录 显示所有数据…
github上删除一个仓库
首先进入到你需要删除的仓库,在这个页面的左侧或者上部找到”settings”选项 点击进入”settings”,然后一直往下拉,直到看到一个红色的横条区域,下面有一个”Delet this respository”,点击删除即可

两个线程同时访问一个变量_百战程序员:Java多线程对象及变量的并发访问
在开发多线程程序时,如果每个多线程处理的事情都不一样,每个线程都互不相关,这样开发的过程就非常轻松。但是很多时候,多线程程序是需要同时访问同一个对象,或者变量的。这样,一个对象同时被多个线程访问&a…

AE 9.3代码 升级到AE10.0
下载的代码是AE 9.3,本机配置是AE 10.0 ,程序打不开,运行不了,提示找不到ESRI.ArcGIS.Controls.AxMapCongrol等等AE 控件。 具体解决方法: (1) 在引用中,重新添加ArcGIS引用…

mysql数据库主从同步过程详述(三)
续mysql数据库主从同步过程详述(二)在此说明下:在最后试验过程中,当查看从库状态的时候,IO_Running显示为no,从error_log中看到如下报错提示:120523 0:55:31 [Note] Slave I/O thread: connected to master rep192.168.1.5:3306, replication started in log mysql-bin.0000…

[No0000160]常用C# 正则表达式大全
正则表达式的本质是使用一系列特殊字符模式,来表示某一类字符串。正则表达式无疑是处理文本最有力的工具,而.NET提供的Regex类实现了验证正则表达式的方法。Regex 类表示不可变(只读)的正则表达式。它还包含各种静态方法ÿ…

在VS中,如何新建项目,如何添加类库
学习了C#基础后就自己做了一个小小的qq空间,感觉挺好的。之后,由于团队需要被分配到测试方面去了,虽然测试时会看C#代码,但终究不是自己写的,没有那种深究的热情,尽管师兄说,看代码是最快提升的…
Python中requests包的安装
在使用pycharm开发的时候,我们经常需要导入一些包,但是这些包,我们事先并没有安装,一个显著的现象就是我们在pycharm中导入一个包时,系统提示不存在,那就是我们没有安装这个包。举一个例子,我在…

python fft库有哪些_Python图像处理库PIL中快速傅里叶变换FFT的实现(一)
离散傅里叶变换(discrete Fouriertransform)傅里叶分析方法是信号分析的最基本方法,傅里叶变换是傅里叶分析的核心,通过它把信号从时间域变换到频率域,进而研究信号的频谱结构和变化规律。FFT是一种DFT的高效算法,称为快速傅立叶变…

转: Android ListView 滑动背景为黑色的解决办法
2019独角兽企业重金招聘Python工程师标准>>> 在Android中,ListView是最常用的一个控件,在做UI设计的时候,很多人希望能够改变一下它的背景,使他能够符合整体的UI设计,改变背景背很简单只需要准备一张图片然…

BZOJ1901Zju2112 Dynamic Rankings——树状数组套主席树
题目描述 给定一个含有n个数的序列a[1],a[2],a[3]……a[n],程序必须回答这样的询问:对于给定的i,j,k,在a[i],a[i1],a[i2]……a[j]中第k小的数是多少(1≤k≤j-i1),并且,你可以改变一些a[i]的值,改变后&#…
Git与github基本操作
一. git安装与简单配置 1. git的安装 首先进入git的官方网站git-scm.com 下载自己电脑对应的git版本,然后点击安装即可 点击上图的红色部分进行下载 安装的时候直接默认即可 找到你的Git安装位置,把快捷方式中的git bash发送到桌面࿰…

容器 root权限运行_【漏洞通告】Containerd容器逃逸漏洞通告 (CVE202015257)
2020年12月1日,Containerd发布更新,修复了一个可造成容器逃逸的漏洞CVE-2020-15257,并公开了相关说明。通过受影响的API接口,攻击者可以利用该漏洞以root权限执行代码,实现容器逃逸。深信服安全研究团队依据漏洞重要性…

IOS成长之路-NSMutableURLRequest实现Post请求
NSData *bodyData [[bodyString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]dataUsingEncoding:NSUTF8StringEncoding];//把bodyString转换为NSData数据 NSURL *serverUrl [[NSURL URLWithString:RequestUrl] URLByAppendingPathComponent:urlStr];//获…

rsync ssh文件同步
参考链接 下载 manual #rsync -avP -e ssh ./filename root192.68.1.38:/root/paths/ (本地到远程) #rsync -avP -e ssh root192.68.1.38:/root/paths/test.tar.gz /root /paths (远程到本地) rsync -av --progress --inpl…
【转】Linux思维导图
【原文】https://www.toutiao.com/i6591690511763898888/ 1、Linux学习路径: 2、Linux桌面介绍: 3、FHS(文件系统目录标准): 4、Linux需要特别注意的目录: 5、Linux 内核学习路线: 6、Linux Security Coaching…