用 CentOS 7 纯手工打造属于自己的软路由服务器
传送门:
自从了解了软路由这玩意之后,它强大的性能以及高自由度就一直让我羡慕不已。
但是作为“懂” Linux 以及计算机网络的我来说,如果直接使用现成的软路由系统总感觉低估了自己的能力……而且我家里也已经有了一台 Linux 服务器,要是能做到物尽其用那就最好了。
于是我很早就计划着搭建一台属于自己的软路由服务器。可惜由于懒癌发作,一直没有动手。直到半个月前,家里的旧路由器终于坏了,这时候我才着手去研究它……
前前后后折腾了一整天,总算是完工了!感觉收获了不少东西。想想还是很有必要把整个配置过程整理完然后给大家分享一下!
本文纯属个人学习经验分享,写得可能会比较乱,仅供参考。如有错误,可以的话请及时提出,谢谢!
由于我的服务器上只有一个网口,所以必须配合划分了 VLAN 的交换机,把它当作一台单臂路由才能实现上述功能。
下面我划分了三个 VLAN:
以下是交换机端口及 VLAN 的配置表:
以下是服务器网络接口的配置表:
至于“外网”的访问,由于我的云主机流量充足,所以我使用「绕过大陆 IP」模式。
「双 S」-local 监听的地址和端口为 0000:1080 , 「双 S」-redir 监听的地址和端口为 0000:1081 。
以下是“内外网”自动分流原理图:
下面把「可能被污染的域名」交由 dns2socks 解析。
该方案可以达到预期效果,但是仍有不完善的地方。
第一是没有在服务器上设置 QoS 来限制客人网络的网速(后来在交换机上设定了)。
第二是「可能被污染的域名列表」和「大陆 IP 地址集」无法实现自动更新。
不过现在就先这么用着吧,哈哈。
DNS 即Domain Name System(域名系统)的缩写,它是一种将ip地址转换成对应的主机名或将主机名转换成与之相对应ip地址的一种机制。其中通过域名解析出ip地址的叫做正向解析,通过ip地址解析出域名的叫做反向解析。
下面对DNS的工作流程及原理进行简要说明
DNS的查询流程:需要解析服务的Client先查看本机的/etc/hosts;若无结果,则client查看本地的DNS缓存服务器;若无结果,则查找所属域的首选DNS服务器;若此时本地首选DNS服务器仍无法解析,则会想根域名服务器进行查询或选择转发解析请求。
DNS的查询规则:递归式查询,即client向支持递归查询的DNS Server发出解析请求,则自DNS服务器不论是自身直接解析还是无法解析想根发出请求,总会由其向client返回一个结果;迭代式查询,即接收client解析请求的DNS Server,若其能够解析则直接返回结果,若其不能解析将把解析请求交给其他DNS服务器,而不是自己亲自将解析过程完成。
所谓的“根”服务器:根服务器主要用来管理互联网的主目录,全世界只有13台。1个为主根服务器,放置在美国。其余12个均为辅根服务器,其中9个放置在美国,欧洲2个,位于英国和瑞典,亚洲1个,位于日本。所有根服务器均由美国政府授权的互联网域名与号码分配机构ICANN统一管理,负责全球互联网域名根服务器、域名体系和IP地址等的管理。
DNS记录的类型:
A:Address 域名向ip地址转换的记录;
PTR:Printer ip地址向域名转换的记录;
NS:代表域内的dns服务器;
MX:代表域内的邮件服务器;
CNAME:域名的别名;
SOA:start of authority用于标示域内主DNS服务器。
提供DNS服务的软件:BIND即Berkeley Internet Name Domain有加州大学伯克利分校研发是当今提供dns服务应用最广的软件。
下面让我们进入正题,以下内容包括:DNS的缓存服务器、主/从服务器、子域授权、转发以及视图的配置步骤。
DNS缓存服务器
Ps:为了更好的体会和理解dns的配置文件和域解析文件,作者在此只安装bind包,以手动编辑的方式生成这几个必须的文件。
1安装bind包
yum install bind
2创建住配置文件/etc/namedconf
options {
directory "/var/named"; #告知工作目录
};
zone “” IN {
type hint; #声明根域
file "namedca"; #根信息存放文件
};
zone "localhost" IN { #本地正解定义
type master; #类型为master
file "localhostzone"; #正解文件名
};
zone "00127in-addrarpa" IN { #本地反解定义
type master;
file "namedlocal"; #反解文件名
};
chown :named /etc/namedconf
#修改属组给named
3创建3个解析文件
namedca
dig -t NS > /var/named/namedca
#向跟服务器发起查询并重定向到目标文件
localhostzone
vim localhost zone
$TTL 86400
#默认的ttl值
@ IN SOA localhost adminlocalhost (
#主DNS服务器localhost
2011081601
#时间+序列号01
1H
#刷新时间:每隔多久来master查询更新
10M
#重试时间间隔
7D
&n
服务器说白了就是 一台安装了对应处理程序的普通电脑
一般网游,服务器上只是进行数据的处理,并不是会创建地图,比如你进行一个攻击操作,把数据传送到服务器,服务器进行计算(伤害多少,是否暴击,最终伤害,命中了谁,扣血),把这些数据返回客户端,客户端根据得到的数据进行视觉显示
单机游戏和网游类似,但是在客户端内内置了一个服务器,你的数据在本机服务器进行计算,并返回本机客户端进行显示,联机时,队友的数据传送到你本机的服务器进行计算,然后返回队友的客户端进行显示
简单说,普通电脑上 安装服务器软件 后,这台电脑就可以是一个服务器
你要把客户端和服务端分开看,服务器就是处理数据的软件。常说的游戏程序(客户端)就是显示数据的软件。
网游客户端在本地,服务端在官方服务器上
单机游戏,客户端在本地,服务端包含在客户端内
0条评论