CentOS下配置常用Tunnel隧道

一.介绍

Tunnel,也就是隧道,在Linux中使用还是挺广泛的,从常见的安全加密类的隧道到更多是服务器互联使用的GRE/IPIP隧道,种类还是挺多的。之前我写的内网穿透系列就提到了一部分隧道,感兴趣的可以去看看——>传送门

当然,这次我们不提那些需要额外安装依赖或者软件的,主要说比较原生的,需要注意的事,这些虽然原生,但是大多需要内核模块支持,这也就意味着很大可能无法在OpenVZ上正常使用(就算有tun和tap也不够),所以建议使用KVM等其他虚拟化架构的VPS或者独立服务器实验。

二.配置

仰慕搞全球大内网的大佬,因为对隧道也有了点兴趣,不过种类确实不少,也不是一直能用到,所以在这边做下收集和记录,方便自己或者其他有需求的人看。

另外,这些隧道的用途是承载其他数据,不带IPSec就连加密都没了,所以如果用于传输重要数据请使用带加密的方式,比如,你要传输文件可以跑个rsync或者scp啊ftp啊啥的。

由于DEB系和RHL系的网络配置文件格式不太一样,所以我这边就只写CentOS(也就是RHL的了)

另外,请确保iptables规则对隧道两端都开放

这边我只介绍最常见的GRE以及IPIP,因为EOIP在Linux下需要额外对内核Patch,而IPSec真的比较烦人。另外推荐WireGuard——>传送门

阅读全文→

内网穿透系列——WireGuard (快速, 安全的下一代隧道程序)

一.介绍

WireGuard是个新出的隧道程序,内核级的,所以数据处理能力以及资源消耗就会很理想,而且它可以工作于一方动态IP一方静态IP的环境下,这就能够很好的利用于内网穿透的环境下。当然,有几个大佬拿它做搭隧道来实现自己的全球大内网(x, 看得我也很是羡慕

具体的介绍我不提了,感兴趣的去它的官网看看就知道了,针对以往的隧道程序做了不少方面的对比,可以看出来优势还是挺大的。 ——> 传送门

二.安装

大部分系统在WireGuard官网上都介绍了包安装和编译安装的过程,但是,心疼我Centos6,没人写怎么装,这就很气。所以我研究了下怎么装,发现"怎么又是个坑(摔 !"

首先,WireGuard是工作在KernelSpace的,所以对内核版本有着一定要求,必须在3.10版本以上,要我说就直接上4.9,带BBR多好,美滋滋。

首先这边有个大坑,还是得注意,官方表示WireGurad源码需要使用4.7以上的GCC编译,嗯,我特么怎么就没看到啊魂淡(摔,然后我第一次全套使用Centos6默认的GCC编译,出现了如下的错误

在更换高版本GCC编译后成功,但是发现无法加载wireguard.ko内核,dmesg查看后发现如下报错

经过研究WireGuard的官方邮件列表中他人的报错后终于发现了一个蛋疼的问题,就是如果内核使用了低版本GCC编译,那么程序必须也要低版本,但是程序默认无法通过低版本编译,需要修改代码。所以最好就是全部高版本。这儿主要还是因为内核用的是我自己的修改版,如果是官方版本的话……也许不会有问题?

具体可以查看邮件列表对话——>传送门

官方提供了一种把WireGuard直接patch到内核中的玩法,如下

然后会多两个内核参数,可以自行调整

但是我想了下还是不推荐这个方法,因为WireGuard目前还是比较频繁更新的,做到内核里不利于更新,以后稳定了或许不错

PS.总结一下,两个注意点

①.内核需要高版本GCC编译,且大于3.10版本

②.代码需要高版本GCC编译,使用前通过lsmod确认模块已经加载

三.使用方法

这部分不介绍了,官方真的详细,还有手把手动画演示以及测试服务器,命令全帮你写好了,照瓢画葫就行_(:з」∠)_  ——>传送门

内网穿透系列——SSH反向隧道 (最简单的内网穿透方案)

一.介绍

前面介绍了ngrok和frp,虽然好用,但是对于某些很简单的需求来说可能也麻烦了,最好有啥能一键搞定的,这种情况下,你可能需要SSH反向连接了。

当然,由于SSH的特殊性,建议使用的服务器为国内服务器,以减小特殊干扰和网络波动导致的可能的瞎几把断线。

二.配置

这个对于Linux服务器来说,肯定有ssh对吧,没有你怎么连接的???所以我们也不考虑服务器需要安装点啥了,当然为了防止断线的情况,我们还是要装个程序滴,这个后面说。

①如果你本地也是Linux,或者装了比如Git啊Cygwin啥的,那么你本地就能直接执行ssh命令了,在这种情况下,一键(建议先不加-f参数来确认能否连上)

那个客户端能访问的IP我说明下,可以是本地比如localhost,也可以是局域网IP,甚至可以是你本地所能访问到的其它的IP,这种可能出现在多层局域网内,比如公司啥的,而远程IP可以省略其实,如果需要开放给公网请使用远程服务器的公网IP,另外-p指定ssh端口的参数默认是22,如果你是22的话可以省略,如果你用的不是密码的话请使用 -i 参数来指定key文件 阅读全文→