使用 dnsforwarder 建立本地 DNS 服务器避免 DNS 问题

0 事出有因

我们学校的网络似乎被污染了,目前看来dns污染是主要问题

dns 是使用udp明文传输的,监听和被污染的难度是相当的低的

然后就被污染了……

主要是 IP 解析出来会连接到一些比较奇怪的地方

正常的DNS延迟高到怀疑人生

看起来搭建一个自己的DNS服务器是非常有必要的了…

1 坑

如果想要直接看教程的话,建议从 2 部分看

一开始找到的解决方案是 dnsmasq 其并不支持 tcp 链接,而我们的 udp 访问方式已经被全端口污染了 ……

网上建议的方法是 pdnsd然而 Debian 官方库里并没有这个东西,而这个东西的源码感觉已经在互联网上销声匿迹了,而且它的已知的最后更新时间已经远在2012 年了……

然后我找到了 dnsforwarder

2 编译 && 安装

项目链接: [https://github.com/holmium/dnsforwarder]

将项目克隆到本地

git clone https://github.com/holmium/dnsforwarder.git
cd ./dnsforwarder

编译

make

安装

sudo make install

然后 dnsforwarder 便位于你的 /usr/bin/ 目录下,你就可以使用了

然而你直接运行本质上与和用 8.8.8.8是除了多了内存缓存是没有区别的…

3 配置

实际上如果你要看官方的 config 的话

它介绍的是挺清楚的

问题就是太清楚了,你要没有基础感觉就跟没学过英语的人读英翻英词典一样……

这里有一份推荐设置

LogOn true
LogFileThresholdLength 102400
LogFileFolder
UDPLocal 127.0.0.1:53
TCPGroup 208.67.220.220:5353 * no
GroupFile
BlockIP 243.185.187.39,46.82.174.68,37.61.54.158,93.46.8.89,59.24.3.173,203.98.7.65,8.7.198.45,78.16.49.15,159.106.121.75,69.63.187.12,31.13.76.8,31.13.64.49
IPSubstituting
BlockNegativeResponse false
Hosts
HostsUpdateInterval 18000
HostsDownloadPath
HostsScript
HostsRetryInterval 30
AppendHosts
BlockIpv6WhenIpv4Exists false
UseCache true
CacheSize 1048576
MemoryCache true
CacheFile
IgnoreTTL false
OverrideTTL -1
MultipleTTL 1
ReloadCache false
OverwriteCache false
DisabledType
DisabledDomain
DisabledList
DomainStatistic false
DomainStatisticTempletFile
StatisticUpdateInterval 29

这份配置使用了 TCP 链接,你可以设置端口或使用多个DNS

  • 开启了硬盘缓存 && 内存缓存
  • 避免了不存在IP
  • 监听本地53端口,非本机无法使用

然后更改 /etc/resolv.conf (dns配置文件) 的内容为

nameserver 127.0.0.1

执行以下命令防止被自动配置(DHCP) 覆盖

sudo chattr +i /etc/resolv.conf

Enjoy it!

04 日常使用

你可以把dnsforwarder设置为开机启动…..

不愿意的话,你可以每次开机执行这个东西qwq

]]>

从0开始的服务器配置 — Debian 9 — apache2+php+mysql+phpmyadmin+smtp(s)+imap(s)

写在前面 鉴于服务器要续费而且服务器内部实在是太乱了…所以有必要重做一次服务器,但是每一次搞服务器都是大坑,所以写一篇博文记录这次的服务器维护过程,给自己提示,也希望能够给初学者(虽然自己也是)予以帮助,因而,如果文章有不准确的地方或着错误的地方,欢迎评论或者邮箱纠正

0x00 基础搭建

对于一台服务器而言,首先你需要选择一个合适的服务器系统,虽然说市面上大多使用Centosyum类包管理器的系统,但是对于博主而言,因为平日电脑上使用的就是使用apt包管理器的deepin,而deepin的祖上就是debian,因而为了维护的方便和日常使用习惯而言,选择Debian 9 x64
Tips: 如果可以的话,建议在Debian的所有中优先使用Debian 9因为Debian 9的软件包维护较为广泛与新,可以避免一些服务必须要编译或者添加软件源的问题
选择完服务器系统后,就要开始基础维护了
注意,从此处开始,下文所有部分都是基于Debian 9而写的,如果你在使用Ubuntu系统或其他apt系的系统,请在确保不会产生软件包冲突的情况下,酌情参考,如果你是非apt系的系统,可以将本文命令替换成自己系统上相同或者相同作用的语句
首先,完成现有包更新
apt-get update
apt-get full-upgrade

1×00 Web 服务器搭建

一般 Web 服务器就是Apache2,NginxLighttpd,博主这里选择的是Apache2

1×01 安装Apache2

apt-get install apache2
apt包管理器用起来真舒服 如果你是的服务器正常的话,运行下面的命令应该会与我的返回值类似
< apache2 -v
> Server version: Apache/2.4.25 (Debian)
Server built:   2018-03-31T08:47:16

1×02 开启 Apache2 所需服务

a2enmod rewrite
a2enmod ssl
a2enmod headers
a2enmod http2
开启重定义链接与 ssl 选项,并且开启headerhttp/2使用

1×10 SSL 加密证书申请


为了方便和省钱起见,我们使用certbot 然后为了简介和逼格,我们申请通配符证书
wget https://dl.eff.org/certbot-auto
chmod a+x certbot-auto
./certbot-auto certonly -d *.你的域名 --manual --preferred-challenges dns --server https://acme-v02.api.letsencrypt.org/directory
中间有输出这么一端话:
-------------------------------------------------------------------------------
Please deploy a DNS TXT record under the name
_acme-challenge.xxx.xx with the following value:
<TXT记录内容>
Before continuing, verify the record is deployed.
-------------------------------------------------------------------------------
Press Enter to Continue
意思就是让你给_acme-challenge.你的域名加个txt解析,记录内容是中间的<TXT记录内容>,用dig命令确认完记录后回车即可

1×20 Apache2 配置


默认 Apache2 配置文件: /etc/apache2/apache2.conf
站点配置文件: /etc/apache2/sites-enabled/*.conf

1×21 目录配置

AllowOverride None更改为AllowOverride All

1×22 站点配置

养成一个好习惯,把站点配置文件按照/etc/apache2/sites-enabled/<优先级>-<域名>.conf eg:001-blog.woshiluo.site.conf 不然你的后期维护将会非常的麻烦~~血的教训 标准配置文件如下
<VirtualHost *:80>
# http 配置
    ServerAdmin <你的邮箱>
    ServerName <域名>
    DocumentRoot <域名目录>
</VirtualHost>
<IfModule mod_ssl.c>
    <VirtualHost *:443>
# https 配置
        # 开启 http2
        Protocols h2 http/1.1
        ServerAdmin <你的邮箱>
        ServerName <域名>
        DocumentRoot <域名目录>
        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined
        SSLEngine on
        SSLCertificateFile     /etc/letsencrypt/live/<申请证书域名>/fullchain.pem
        SSLCertificateKeyFile      /etc/letsencrypt/live/<申请证书域名>/privkey.pem
        <FilesMatch "\.(cgi|shtml|phtml|php)$">
                SSLOptions +StdEnvVars
        </FilesMatch>
        <Directory /usr/lib/cgi-bin>
                SSLOptions +StdEnvVars
        </Directory>
    </VirtualHost>
</IfModule>
# vim: syntax=apache ts=4 sw=4 sts=4 sr noet
其中 <你的邮箱>表示你的名字当前域名的Admin邮箱,当然这个就写你自己的邮箱啦 <域名> 表示正在配置的域名 <域名目录> 表示当前域名指向的目录,如/var/www/html <申请证书域名> 表示你在上文申请证书时所用的域名,注意通配符证书的域名不带*.比如你申请的为*.woshiluo.sie,那么此处填写woshiluo.site

1×24 SSL 加强[选做]

经过这一步,你的服务器在 SSL Lab 的评测会得到 A+
本部分部分源自:https://raymii.org/s/tutorials/Strong_SSL_Security_On_nginx.html
在你的配置加上这些语句:
# 去除弱加密部分
SSLCipherSuite EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH
SSLProtocol All -SSLv2 -SSLv3
SSLHonorCipherOrder On
# HSTS
Header always set Strict-Transport-Security "max-age=63072000; includeSubDomains; preload"
Header always set X-Content-Type-Options nosniff
# 修复了一堆漏洞
SSLCompression off
SSLUseStapling on
SSLStaplingCache "shmcb:logs/stapling-cache(150000)"
SSLSessionTickets Off
至此,你的Apache2基础配置完毕

1×30 服务器运行环境配置


Upd: 2019.03.04
目前看来, 使用官方的 apt 源是一个更加优秀的选择
wget https://dev.mysql.com/get/mysql-apt-config_0.8.12-1_all.deb
dpkg -i mysql-apt-config_0.8.12-1_all.deb
或者去官网下载
然后执行
apt-get update
apt-get install mysql-community-server php phpmyadmin
注意,使用弱加密模式才可使用phpmyadmin
以下是更新前内容


apt-get install php mysql-server phpmyadmin
一个命令解决一切问题(划 然而实际上这样子会出一点问题,使用这个命令安装很有可能会出现一个问题,那就是mysql root用户密码为空… 按照下面的操作一般就可以修复了:
mysql -uroot
update mysql.user set authentication_string=PASSWORD('<你的密码>'),
flush privileges;
quit;
service mysql restart

1×31 关于http2的细小配置


Apache 2.4.27, HTTP/2 在prefork模式下将不受支持 所以防患于未然,我们来一波配置:
apachectl stop
apt-get install php-fpm
a2enmod proxy_fcgi setenvif
a2enconf php7.0-fpm
a2dismod php7.0
a2dismod mpm_prefork
a2enmod mpm_event
apachectl start

1×40 邮箱服务搭建


我们使用postfixdovecot相结合来搭建邮箱服务,当然不可能只有安装这么简单,我们还需要配置
apt-get install postfix libsasl2-2 sasl2-bin libsasl2-modules dovecot-imapd dovecot-pop3d dovecot-common
又一次证明apt管理的方便

1×41 配置postfix与dovecot

首先我们需要停止服务:
service postfix stop
service dovecot stop
修改postfix基础配置文件:/etc/postfix/main.cf 在文件末尾加入下面的语句:
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth
smtpd_sasl_auth_enable = yes
smtpd_sasl_local_domain = <你的域名>
smtpd_recipient_restrictions = permit_mynetworks,permit_sasl_authenticated,reject_unauth_destination
smtpd_sasl_security_options = noanonymous
message_size_limit = 10240000
其中 <你的域名>表示你要进行邮箱配置的域名 修改dovecot配置文件:/etc/dovecot/dovecot.conf 在开头添加:
protocols = pop3 imap
mail_location = mbox:~/mail:INBOX=/var/mail/%u
disable_plaintext_auth = no
auth default {
    mechanisms = plain login
    socket listen {
        client {
            path = /var/spool/postfix/private/auth
            mode = 0660
            user = postfix
            group = postfix
        }
    }
}
修改sasl配置文件:`/etc/default/saslauthd中的
START=no
START=yes
修改
OPTIONS="-c -m /var/run/saslauthd"
OPTIONS="-c -m /var/spool/postfix/var/run/saslauthd"
当然,咱把目录改了…文件也得改啊:
rm -r /var/run/saslauthd/
mkdir -p /var/spool/postfix/var/run/saslauthd
ln -s /var/spool/postfix/var/run/saslauthd /var/run
chgrp sasl /var/spool/postfix/var/run/saslauthd
adduser postfix sasl
启动这几个服务以及处理一些权限:
service postfix start
service dovecot start
usermod -G root postfix
chmod -R 777 /var/mail
然后根据想要的用户前缀建个用户
adduser  <你的用户名字>
然后根据需求加密码什么的就行了

1×42 启用 imaps / pop3s / smtps[选做]

Postfix基础配置中写入下列语句:
smtpd_tls_key_file = <你的加密证书>
smtpd_tls_cert_file = <你的CA证书>
smtpd_tls_loglevel = 1
smtpd_tls_received_header = yes
smtpd_tls_session_cache_timeout = 3600s
tls_random_source = dev:/dev/urandom
<你的CA证书> <你的加密证书>参考上文apache2配置 在Postfix端口配置中写入下列语句:/etc/postfix/master.cf
smtps     inet  n       -       n       -       -       smtpd
  -o smtpd_tls_wrappermode=yes
  -o smtpd_sasl_auth_enable=yes
  -o smtpd_client_restrictions=permit_sasl_authenticated,reject
在 Dovecot 的 ssl 配置中写入下列语句:
ssl = yes
ssl_cert = <<你的CA证书>
ssl_key = <<你的加密证书>
<你的CA证书> <你的加密证书>参考上文apache2配置 重启服务:
service dovecot restart
service postfix restart
以上,你的邮箱服务其就配置完成了

开启BBR优化

BBR是谷歌最新的TCP拥塞算法,效果较为优秀,我们当然要添加一波 虽然有要求版本4.9以上,但是我们 Debian 9默认刚好4.9,擦边球wq 那么执行下面的命令即可:
echo "net.core.default_qdisc=fq" >> /etc/sysctl.conf
echo "net.ipv4.tcp_congestion_control=bbr" >> /etc/sysctl.conf
sysctl -p
sysctl net.ipv4.tcp_available_congestion_control

2×00 致谢与版权声明


在撰写本博文的时候,博主参考并整理许多博文,以下是主要部分,还有许多杂七杂八的小问题来自网上或来自自己的经验,并于此表示感谢: 除此之外,其他基本上没有引用 当然,如果有任何问题,希望你能提出并发于评论]]>

如何愉快的完成 Linux 的入门

写在开头 身为一名Oier身边有许多优秀的同学想学习 Linux 却又因许多问题不敢学或者尝试后放弃,转而每天吐槽Dev的日常爆炸,在作为一个Linux重度使用党的同时也不由得为惊奇,在结和这些优秀的同学所遇到的问题与自己的经历时,发现一些常见的问题,便写出来给初学者们应对

系统选择与安装

系统选择


看过一个大佬,他使用的是一款贼高端的那种搞网络渗透的 Linux 的系统,我问他为什么装这个,然后 他回答我:”装逼啊” 我:”????”(黑人问号脸.jpg) 显然这位大佬装逼的心我们是管不了的 但是如果你是抱着一颗想要学习 Linux 的态度,还这么选系统的话就凉了像上面这种系统会把你给吓跑的 所以说如果你是一个新手的话,该怎么选择系统呢:
  1. 有着良好的论坛体系或者用户基数较多的系统,因为这样子大多数你遇到的问题,网上都能够找到答案
  2. 选择一款有着良好桌面环境支持的,我知道,怎么说有些人就会喷,说用Linux用什么桌面环境,实则不然,如果最为日常生活使用的话,没有图形化界面终究会遇到一些麻烦
  3. 有着优秀中文环境支持的,虽然说你学Linux最后肯定要车技英语,但是开头先用良好的中文,起码会降低许多误操作的可能
基于这三个基础条件,博主这里有三个比较推荐的系统当然也许还有更好的,但是这是博主用过的,我敢去推荐,当然,你不喜欢也无妨: Deepin, Debian , Ubuntu

安装


首先,如果你像好好学Linux,先将Windows删除,请不要说你需要用,学完在装也无妨(博主就是这样的),毕竟有些工作确实只有Windows能做,删除Windows后,你就会避免遇到什么问题都去Windows,而只有”学习”的时候才会用Linux,这种情况当然学不会,你需要将 Linux 融于生活,这样才能学的更好 其他的坑,自己踩过了,才能明白

日常使用

这是一个大坑,许多人装系统一路过来没毛病,到了这一步,又回到了Win中

命令使用与背


首先 Linux 与大多数 Unix-Like 系统虽然有桌面环境,但是不使用命令来保证日常使用的正常的话,确实很艰难,但是若果讲命令融于日常使用当中,便不会艰难 首先,刻意去背这些命令与用法肯定是无效的,首先你要知道,Linux下大多数命令的通用方式,比如 -是干什么的,--是干什么的呀 之类的 然后用到什么,学什么,多用几次,也就记下来了,你光背不用,不仅忘的快,还不知道什么时候用

实践


学习完必定要有实践的过程,如果你不去实践的话,那么终究是纸上谈兵,你无法熟练的应对各种情况 但是实践总得有目标,你需要以你现在的常有项作为开始,如果你是一名Oier的话,可以从配置 Vim 学习 g++ 与 gdb 开始,如果你是一名网站维护者,可以试着搭一下服务器等等诸如此类的东西

最后要说

首先,这篇博客是基于博主与博主身边的人发生的事情写的,也许他不适合你,如果你有别的方法,欢迎在评论去留言 其次,学习任何一门的东西都不会简单,不开始,不尝试就不可能学会 ]]>

Host同步

(by vokins):https://raw.githubusercontent.com/vokins/yhosts/master/hosts 科学上网源(by racaljk):https://raw.githubusercontent.com/racaljk/hosts/master/hosts Windows段:点击下载软件 然后,上视频…… [plyr poster=”https://cups.woshiluo.dream.ren/doc/%E8%B6%85%E7%BA%A7%E5%B1%8F%E5%B9%95%E5%BD%95%E5%83%8F%E4%B8%93%E5%AE%B6%E5%9B%BE%E7%89%87-2017%E5%B9%B401%E6%9C%8817%E6%97%A516%E6%97%B635%E5%88%8653%E7%A7%92.jpg”]https://cups.woshiluo.dream.ren/%E6%8D%95%E8%8E%B7%2001.mp4[/plyr] 安卓端:到此网站下载该软件 [plyr poster=”https://cups.woshiluo.dream.ren/Screenshot_20170127-000821.png”]https://cups.woshiluo.dream.ren/Screencast_2017-01-26-23-46-02.mp4[/plyr] ]]>

红米3CDMA教程

后期更新https://blog.woshiluo.site/382.html

2.4更新:lineages os以对红米3发布官方版lineage os博主不想刷机了大家试试吧可以就留个言

1.16更新:因为cm解体后重组名叫lineage os,但教程经尝试后并不可用,我会尽力找到更好的解决办法,实在不行充个值拿老人机使吧/#滑稽

下载链接:http://pan.plyz.net/s/?u=2889296102&p=lineage-14.1-20170104-UNOFFICIAL-ido.zip

自从cm诞生以来,第三方系统快速发展, 但只要是国外的纯净刷机包,一般都用不了电信。/#滑稽

(上图说出了我的心声)

但是

cm倒闭了

于是cm的同志们兵分两路,一波投靠魔趣一波投靠RR,个人在魔趣使用两周后强烈推荐大家使用RR下放红米3RR安卓7.1的限速云的下载链接

点击下载(下载失败的话请评论)

即使脱离了CM也干变不了其用不了电信打电话的本质

所以我来讲讲如何在RR中用电信打电话(魔趣也可以不过要多试几次)(终于进入正题)

第一步:用ES浏览器(CM浏览器不行)(其他自行实践)打开/system打开下面这个文件

ES下载链接 点击下载

第二步:将下图画圈的值改成4,1

第三步:重启

第四步:重设网络

可以用电信打电话了,如果还不行,请重刷后再试。

附加步:因为经过上述步骤后没法用4G,所以再改把4,1改成8,1即可

如果还不行的话,就用流量打网络电话吧(表打我)

  ]]>