最近美国的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云平台上部署一个基于CoreOS的Kubernetes集群。Kubernetes(简称K8s)是一个开源的容器编排系统,用于自动化容器化应用的部署、扩展和管理。CoreOS是专为...
自从 Linux 4.3 开始,在 Linode 上使用 PaX/grsecurity 时,内核会在被 pv-grub 执行后不久立即崩溃。由于崩溃是在启动后极早期立刻发生的,没有任何可以用来调试的日志,同时公司也不是盖子开的,也没有办法得到母...
《Python库:linode_cli-3.1.1-py2.py3-none-any.whl的详解与应用》 在Python的开发过程中,我们经常会...无论是新手还是经验丰富的开发者,都应考虑将其纳入自己的工具箱,以提升在Linode平台上的开发和运维体验。
安装假设您有一个可以运行的Go环境: $ go get github.com/alexsacr/linode用法关于您的期望: package mainimport ( "fmt" "github.com/alexsacr/linode")func main () { c := linode . NewClient ( "yourAPIKey" )...
`certbot_dns_linode-0.37.2-py2.py3-none-any.whl` 是一个Python库的轮子文件,它专为自动化证书管理工具Certbot设计,用于与Linode DNS API集成,以便在Linode的DNS服务上自动配置和验证域名以获取Let's Encrypt的...
概述一路设置主控然后设置小兵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...
您可以在 Linode 库上找到此脚本的最新版本 安装和配置: RVM 系统范围 Ruby [使用 RVM 的任何版本] MySQL Phusion 乘客 NGINX 吉特 部署用户 图像魔术师 日志旋转 禁止失败 禁止 SSH 密码登录和 Root 登录 更新...
`linode_api4-5.1.0-py3-none-any.whl`这个文件表明该库是针对Python 3版本的,且不依赖特定的系统架构或ABI(应用程序二进制接口),因此可以在任何支持Python 3的环境中无缝安装。 `linode_api4`库的核心功能在于...
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