最近美国的Office准备修改VPN的设置,
1、用OpenVPN取代现在的PPTP VPN.
2、限制VPN对Internet的访问,今后通过VPN只能访问内部资源。
对我的影响则是:
1、不能用手机连入VPN了,iPhone不支持OpenVPN。
2、不能用公司VPN了。
不得以想到自己在Linode的VPS,通常只用来做一些测试和host一些Imified的Bot,每月200G的流量大多浪费了,不如干脆自己建一个VPN好了。
因为单纯自用,不需要什么复杂的配置,很简单的就搞定了,步骤如下:
1、安装PPTP服务,因为系统是Ubuntu,所以简单的apt-get就可以了。
sudo apt-get install pptpd -y
2、修改/etc/pptpd.conf
这个配置文件内容很简单,主要需要修改的就是文件末尾的localip和remoteip
#localip 192.168.0.1
#remoteip 192.168.0.234-238,192.168.0.245
remoteip指的是将来分配给VPN Client的IP,localip则是将来VPN Client看到的远端地址。VPN Client建立VPN连接后:
在VPN Client上ifconfig看到的:
ppp0: flags=8051<UP,POINTOPOINT,RUNNING,MULTICAST> mtu 1444
inet 192.168.0.234 --> 192.168.0.1 netmask 0xffffff00
在Linode上ifconfig看到的:
ppp0Link encap:Point-to-Point Protocol
inet addr:192.168.0.1 P-t-P:192.168.0.234 Mask:255.255.255.255
UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1496 Metric:1
RX packets:385 errors:0 dropped:0 overruns:0 frame:0
TX packets:322 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:3
RX bytes:56584 (56.5 KB) TX bytes:91628 (91.6 KB)
3、修改/etc/ppp/chap-secrets,这个文件名中保存了访问VPN的用户名密码,格式如下:
username pptpd password *
Username和password都是明文;pptpd代表服务名,和/etc/ppp/options.pptpd里的name对应,通常默认值就是pptpd;最后一项是分配这个用户的ip,*代表随机分配。
4、修改/etc/ppp/options.pptpd,大多数配置项都不需要修改,除了DNS设置:
#ms-dns x.x.x.x
#ms-dns x.x.x.x
去掉前面的#注释符号,修改地址为真正有效的DNS服务器地址。VPN Client建立VPN连接后,就会使用这里指定的DNS服务器来解析域名。如果这里不指定,就需要在每个VPN Client上指定。
如果系统是Ubuntu,还需要在这个文件中指定log文件的位置,否则就需要在/etc/pptpd.conf中注释掉logwtmp以彻底关闭log。
logfile /var/log/pptpd.log
5、重启PPTP
/etc/init.d/pptpd restart
通常这样VPN就可以工作,Client已经可以建立到Server的VPN连接,并且访问Server的资源了。但是因为没有建立从VPN到Internet的路由,所以Client是无法通过VPN访问Internet,需要通过设置路由规则来解决。
6、开启IP转发
修改/etc/sysctl.conf,打开net.ipv4.ip_forward=1
执行sysctl -p使配置生效。
7、安装iptables,通过iptables设置转发规则简单,
apt-get intall iptables
8、添加转发规则
iptables -A FORWARD -s 192.168.0.0/24 -j ACCEPT
iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o eth0 -j MASQUERADE
192.168.0.0/24 对应remoteip的网段
9、保存iptables转发规则
由于iptables添加的转发规则在系统或网络设备重启后就会失效,所以需要保存iptables的配置,并使它能在重启后恢复。
保存转发规则到/etc/iptables-rules
iptables-save > /etc/iptables-rules
创建新文件/etc/network/if-up.d/iptables
#!/bin/sh
iptables-restore < /etc/iptables-rules
chmod +x /etc/network/if-up.d/iptables
这样每次网卡启动时都会重新从iptables-rules读取iptables的转发规则
分享到:
相关推荐
[Ubuntu][Linux][教學]_安裝設定#04_在Linode_VPS上架設Ubuntu
在 Linode 上部署 CoreOS 通过这项工作,您可以轻松地在上部署 。 至于今天(2015 年 1 月)CoreOS 在 Linode 上不可用。 通过这项工作,您可以使用自己的云配置轻松快速地部署 CoreOS。 安装(使用 Docker) 这是...
kube-linode:在Linode上配置KubernetesCoreOS集群
概述一路设置主控然后设置小兵CLUSTER_NAME=testSERVICE_IP_RANGE=10.0.0.0/16CLUSTER_POD_IP_RANGE=10.10.0.0/16POD_IP_RANGES=10.10.x.0/24条款Provisioning Master和2个奴才作为Ubuntu 15.04 设置主机名,私有IP...
安装假设您有一个可以运行的Go环境: $ go get github.com/alexsacr/linode用法关于您的期望: package mainimport ( "fmt" "github.com/alexsacr/linode")func main () { c := linode . NewClient ( "yourAPIKey" )...
您可以在 Linode 库上找到此脚本的最新版本 安装和配置: RVM 系统范围 Ruby [使用 RVM 的任何版本] MySQL Phusion 乘客 NGINX 吉特 部署用户 图像魔术师 日志旋转 禁止失败 禁止 SSH 密码登录和 Root 登录 更新...
Api-linode_api4-python.zip,linode apilinode_api4的正式python绑定,一个api可以被认为是多个软件设备之间通信的指导手册。例如,api可用于web应用程序之间的数据库通信。通过提取实现并将数据放弃到对象中,api...
docker-machine-driver-linode 适用于docker-machine的Linode驱动程序插件。安装docker-machine是必需的,。 然后,从为您的环境安装最新版本。从源安装如果你宁愿从源代码编译,你需要有一个工作go 1.11+环境, ...
terraform-linode-k8s:Linode的Kubernetes安装程序
要使Ansible能够读取此模块,您必须将其放在“库”文件夹中,并通过编辑ansible.cfg-( )来让ansible知道它在哪里。 安装示例 选择您将保存自定义ansible模块的位置 mkdir ~/custom-ansible-modules cd ~/custom-...
创建Linode后,它会上载位于“ provision”文件夹中的另一个bash脚本,并在新计算机上执行该脚本。 它更新系统,为用户添加ssh密钥,更新IP表,系统时间,sshd配置等。基本上,我通常对创建的任何新服务器执行的...
安装 npm install -g linode-dns-tools 工具 linode 导入区域文件 通过 Linode API 导入绑定式 DNS 区域文件。 如果您从另一个不允许 Linode 的自动区域导出功能的托管服务导出一个,则非常有用。 用法 linode-...
linode4j Linode API的Java实现 ##特征 干净,简单的数据访问层和数据对象。 轻松区分必需参数和可选参数。 线程安全的类似Spring的基于模板的数据访问对象。 通过Jackson的超快速序列化。 简化了对所有...
Flask-on-Linode │ README.md │ FlaskDeployment.md │ .gitignore │ └───flask_app │ │ __init__.py │ │ forms.py │ │ models.py │ │ routes.py │ │ requriments.txt │ │ site.db │ │ │ └...
消极Go库,用于与Linode API进行交互。 。用法导入方式: import github.com/LunaNode/go-linode并用作linode: apiKey := "myKey"client := linode.NewClient(apiKey)linodeID, err := client.CreateLinode(6, 1) /...
docker-machine-linode 适用于docker-machine的... 然后,在$ GOPATH中安装docker docker-machine-linode驱动程序并将$ GOPATH / bin添加到$ PATH env中。 go get github.com/taoh/docker-machine-linode cd $GOPATH
Linode的Terraform Provider 网站: : ...发展历程建立提供者如果您希望构建或向提供程序提供代码,则首先需要在计算机上安装 and (需要1.11+版本)。 您还需要正确配置 ,并将$GOPATH/bin添加到$PATH 。 要编译提供
指示在 Linode 的 DNS 管理器中创建 A 记录。 下载脚本: $ git clone https://github.com/andrewchilds/linode-dyn-dns $ cd linode-dyn-dns设置您的 API 密钥,可在找到: $ echo MY_API_KEY > .key获取您的域 ID ...
在Digital Ocean VPS(或Linode等)上安装Flask Webapp 在这里,我总结了如何在装有Ubuntu Linux的Digital Ocean VPS上安装Flask Web应用程序。 将涵盖以下主题: 服务器配置 大局 Nginx的 由gunicorn提供的虚拟...
适用于Linode的Kubernetes Cloud Controller ManagerCCM的目的Linode Cloud Controller Manager(CCM)在Linode上创建了完全受支持的Kubernetes体验。 部署的时,将自动部署负载平衡器Linode NodeBalancers。 这是...