两台装有Ubuntu系统的服务器搭建VPN(一台为本地服务器,另一台为云服务器)
我们搭建VPN采用的是openvpn,搭建过程总体需要经过三大步骤:
1、openvpn的安装与配置
2、端口转发
3、系统重启iptables规则自动生效
注意:以下所有名令在root权限下输入(进入root权限命令 sudo su) 下面用红颜色标注的字体是修改了的;如果按以前的操作失败了的可以把下面两条红色的语句重新添加到服务器中就可以了。
PS:感谢jsa大神指正我的错误.
一、openvpn的安装与配置
openvpn安装与配置教程,此链接中的内容介绍了openvpn的安装与配置步骤(图文并茂)
二、端口转发
第一步完成后,本地服务器与云服务器组成了一个局域网(我们配置后的本地服务器虚拟网卡IP为10.8.0.6,云服务器虚拟网卡IP为10.8.0.1),可以试着在本地服务器上运行命令 ping 10.8.0.1或者在云服务器上运行命令 ping 10.8.0.6,如果数据包都能被接收说明两台服务器已成为一个局域网,否则说明配置未成功。
在做端口转发时先看看这篇博客http://blog.csdn.net/daisy_chenting/article/details/7058145 它介绍了iptables规则了,如果想详看可以去看看《鸟哥的Linux私房菜》。
云服务器与本地服务器IP:
本地服务器IP: 172.16.200.33 本地服务器虚拟网卡IP: 10.8.0.6 端口:80
云服务器公网IP: 115.159.185.192 端口:80 内网IP(虚拟网卡IP):10.8.0.1 端口:80
端口转发命令:
sysctl net.ipv4.ip_forward=1(这条必须写到/etc/sysctl.conf文件下,否则当服务器重启时,路由功能会失效,导致要访问的页面失败)
iptables -P FORWARD DROP
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to 10.8.0.6:80
iptables -A FORWARD -p tcp --dport 80 -j ACCEPT
iptables -t nat -A POSTROUTING -d 10.8.0.6 -p tcp --dport 80 -j SNAT --to 10.8.0.1
最后三条命令就是将所有访问10.8.0.6的用户请求访问的源IP改为10.8.0.1,让10.8.0.6误以为是10.8.0.1发送的请求,由于它们已在同一个局域网中,所以可以访问成功。
三、系统重启iptables规则自动生效
有两种方法可以在系统重启后使得iptables规则自动生效,两种修改方法如下:
1、 修改Operation System
iptable-save > /etc/iptables-config (root权限下,将当前规则存到/etc/rc.local文件中) (保存iptables规则这条语句以前漏掉了,现在添加上)
iptables-restore < /etc/iptables-config (在/etc/rc.local文件末尾添加这条命令,Ubuntu开机之后会执行/etc/rc.local文件中的脚本)
2、修改网卡
iptables-save > /etc/iptables.up.rules (root权限下,将当前规则存到/etc/iptables.up.rules文件中)
pre-up iptables-restore < /etc/iptables.up.rules (修改脚本/etc/network/interfaces,在其末尾添加这条命令,在网络启动时应用防火墙规则)
注:先去了解下对文件的操作
两台装有Ubuntu系统的服务器搭建VPN(一台为本地服务器,另一台为云服务器)的更多相关文章
- JavaScript进阶(九)JS实现本地文件上传至阿里云服务器
JS实现本地文件上传至阿里云服务器 前言 在前面的博客< JavaScript进阶(八)JS实现图片预览并导入服务器功能>(点击查看详情)中,实现了JS将本地图片文件预览并上传至阿里云服务 ...
- ubuntu系统用docker搭建wordpress
目标:在docker中搭建wordpress 安装顺序: 首先要有一个云服务器---购买或者自己搭建(本人是自己在主机上装了虚拟机,搭建了一个ubuntu14.04,安装链接:https://www. ...
- Hadoop 在ubuntu系统上的搭建[图解]
前言 本文介绍如何在Ubuntu Kylin操作系统上搭建Hadoop平台. 配置 1. 操作系统: Ubuntu Kylin 14.04 2. 编程语言: JDK 1.8 3. 通信协议: SSH ...
- Ubuntu系统之Hadoop搭建
作业来源:https://edu.cnblogs.com/campus/gzcc/GZCC-16SE1/homework/3223 一.在Window中安装Oracle VM VirtualBox 二 ...
- 本地Linux备份服务器[Client]定期备份云服务器[Server]上的文件(下)
https://www.cnblogs.com/kevingrace/p/5972563.html Client上使用rsync命令查看服务器上文件列表rsync --list-only -e &qu ...
- ubuntu系统lamp环境搭建、数据库迁移、设置数据库外部访问
sudo passwd root设置两次密码su输入设置的密码exit (退出root帐号) 1.sudo apt-get update 2.sudo apt-get install apache2 ...
- 2003服务器搭建vpn
先说下为什么会有本文,公司的git突然被防火墙屏蔽了,有些同事无奈用4g网去提交,我比较穷,1g的小水管hold不住,于是我想着用vpn.国内封杀的比较严重,免费的更是少,找朋友要了一个3小时试用的, ...
- Windows7系统中nginx与IIS服务器搭建集群实现负载均衡
10分钟搭建服务器集群——Windows7系统中nginx与IIS服务器搭建集群实现负载均衡 分布式,集群,云计算机.大数据.负载均衡.高并发······当耳边响起这些词时,做为一个菜鸟程序猿无疑 ...
- 3.linux(ubuntu)常用服务器搭建
1 ftp 1.1 ftp服务器 1.安装vsftpd服务器 sudo apt-get install vsftpd 2.配置vsftpd.conf文件 sudo vi /etc/vsftpd.con ...
随机推荐
- Javascript学习笔记:闭包题解(3)
代码: function assignHandler(){ var element=document.getElementById('someElementId'); element.onclick= ...
- CodeUI Test:创建第一个CodeUI Test
CodeUI Test是微软自动化测试的一个比较好的项目,它的原理是获取到Windows窗口上的控件,然后针对控件的部分属性进行获取和对比,模拟对控件进行点击.双击.右键点击等事件.这样可以录制用户测 ...
- 元素定义了position:fixed;后怎么居中
div{ position:fixed; width:1200px; margin:0 auto; top:0; bottom:0; left:0; right:0; }
- MongoDB 概念解析
SQL术语/概念 MongoDB术语/概念 解释/说明 database database 数据库 table collection 数据库表/集合 row document 数据记录行/文档 col ...
- php操作ini配置文件
有些配置化的数据放到配置文件可以方便管理,比如数据库信息,路由信息,先建立配置文件,test.ini [database_setting] host=127.0.0.1 user=root passw ...
- 移动APP的开发迭代离不开测试,你搞清楚其中的关键点了吗?
App测试的一个要求是一个beta测试环境.为此,操作系统制造商要么提供他们自己的测试环境,比如:Testflight (iOS),要么可以使用任一商用工具,如:HockeyApp (Android) ...
- 【第1期】腾讯云的1001种玩法征集,Ipad mini和Kindle 等你拿!(文章评审中)
版权声明:本文由阁主的小跟班原创文章,转载请注明出处: 文章原文链接:https://www.qcloud.com/community/article/695994001482226944 来源:腾云 ...
- centos7查看端口命令
查看Centos端口命令: # netstat -lntp #查看监听(Listen)的端口# netstat -antp #查看所有建立的TCP连接其他关于查看服务器网络信息命令:1.查看Linux ...
- JAVA 线程中的异常捕获
在java多线程程序中,所有线程都不允许抛出未捕获的checked exception(比如sleep时的InterruptedException),也就是说各个线程需要自己把自己的checked e ...
- ajax向后台传递数组
$.ajax({ traditional: true//这个设置为true,data:{"steps":["qwe","asd"," ...