域名相关:不管你是选择使用虚拟主机、VPS 或是独立服务器,通常你还需要自己买一个域名,配置 DNS 解析等等,推荐免费的 DNS 解析有 CloudFlare、Rage4,国内还有 CloudXNS,一些虚拟主机商以及域名注册商也提供免费的解析,但不如前面介绍的那几个(详细关于 DNS 的介绍请见此)。如果选择使用 CloudFlare,那么你还可以在 DNS 后台选择开启 Proxy(CDN),这样能为你的网站缓存并加速(但实际上对于国内来说有可能反而减速),并获得一些基础的 DDOS 防护,并隐藏你的源站 IP 地址。
GCE 虽然是提供独立 IP 的,但是当你执行 ifconfig -a 时,你会看到默认分配的 IP 是一个内网的保留 IP(形如 10.123.0.1),这是为了方便 instance 里之间互相连接的 IP。当你配置一些需要外网的服务要 bind 到指定 IP 时,你只需要 bind 到这个 IP 即可,所分配给你的外网 IP 会自动将流量转发到这个 IP 上。而且,你的主机并不知道那个外网 IP 就是主机本身,所以所有发向主机对应的外网 IP 的流量都会经过一个路由器,然后再由路由器返回,并且会应用防火墙策略。所以,如果需要本地的通讯,建议尽量多使用环回地址(如 127.0.0.1,::1)或那个内网地址。
防火墙
不能关闭的防火墙对于初次接触的人来说可能有些不适,不过一旦习惯后便会爱上这个功能,这个基于在路由器上的防火墙功能要比在 iptables 里做限制更方便。强烈建议利用好防火墙功能,不要默认允许所有端口。比如你的网站流量全部经过 Cloudflare,那么就可以通过防火墙来只允许 Cloudflare 的 IP 与你的主机连接。
# The following UserId and LicenseKey are required placeholders: UserId 999999 LicenseKey 000000000000 # Include one or more of the following ProductIds: # * GeoLite2-City - GeoLite 2 City # * GeoLite2-Country - GeoLite2 Country # * GeoLite-Legacy-IPv6-City - GeoLite Legacy IPv6 City # * GeoLite-Legacy-IPv6-Country - GeoLite Legacy IPv6 Country # * 506 - GeoLite Legacy Country # * 517 - GeoLite Legacy ASN # * 533 - GeoLite Legacy City ProductIds 506 GeoLite-Legacy-IPv6-Country DatabaseDirectory /usr/share/GeoIP
www.example.com 600 IN A 10.0.0.1 www.example.com 600 IN A 10.0.0.2 www.example.com 600 IN AAAA ::1 www.example.com 600 IN AAAA ::2 sub.example.com 600 IN LINK www.example.com
IP 地址就是 DNS 缓存服务器地址(如果你开启了 EDNS Client Subnet,且缓存服务器支持,那么就是自己的 IP,但是如果使用 8.8.8.8,那么会看到自己的 IP 最后一位是 0),如果你在本地指定了从你自己的服务器查,那就直接返回你自己的 IP 地址。由于我只安装了国家数据库,所以除了洲和国家之外其余都是 Unknown。
进阶使用
建立分布式 DNS
一般情况下,是一个 Master 和一个 Slave 的 DNS 解析服务器,但是这样的话对 DNSSEC 可能有问题,于是我就建立了两个 Master 服务器,自动同步记录,并设置了相同的 DNSSEC Private Key,好像并没有什么错误发生(毕竟包括 SOA 在内的所有记录也都是完全一样的),我的服务器目前的配置
#!/sbin/sh # # vncserver startup: Startup and kill script for the VNC server # PATH=/usr/sbin:/usr/bin:/usr/ccs/bin:/usr/contrib/bin:/usr/bin/X11:/usr/contrib/bin/X11:/o
# See how we were called. case "$1" in start) echo "Starting $prog: \c" /usr/bin/ulimit -S -c 0 >;/dev/null 2>;&1 RETVAL=0 for display in ${VNCSERVERS} do echo "${display}" DISP="${display%%:*}" USER="${display##*:}" VNCUSERARGS="${VNCSERVERARGS[${DISP}]}" /usr/bin/su ${USER} -c "cd ~${USER} && export HOME=~${USER} && [ -f