BIND+GeoIP: 根据查询者IP的地理位置给出不同的DNS结果 – 肥叉烧 feichashao.com


本站和网页 https://feichashao.com/bind_with_geoip/ 的作者无关,不对其内容负责。快照谨为网络故障时之索引,不代表被搜索网站的即时页面。

BIND+GeoIP: 根据查询者IP的地理位置给出不同的DNS结果 – 肥叉烧 feichashao.com
跳至内容
肥叉烧 feichashao.com
feichashao's Blog
菜单
首页
游记
特价机票
ABOUT ME
BIND+GeoIP: 根据查询者IP的地理位置给出不同的DNS结果
为了能让访客访问到最快的服务器,可以在DNS上动手脚。有一些DNS服务商如dnspod可以根据DNS查询者的位置,给出相应的DNS解析结果。
自己搭建DNS服务器,也可以实现类似效果。在 BIND 9.10 中,提供了 GeoIP 的功能,利用 GeoIP 库查询访客IP所在区域,根据区域给出结果。参考:
https://kb.isc.org/article/AA-01149/0/Using-the-GeoIP-Features-in-BIND-9.10.html
在 RHEL7.3/CentOS7.3 中,BIND 开始支持 GeoIP.
BIND now supports GeoIP-based ACLs
With this update, the BIND DNS server is able to use GeoIP databases. The feature enables administrators to implement client access control lists (ACL), based on client's geographical location. (BZ#1220594)
下面是验证这个功能的实验步骤。在这个例子中,对于 hehe.test.com, 来自美国的访客可以查询到 2.2.2.2 的结果,来自其他地区的访客得到 4.4.4.4 的结果。
1. 在 RHEL7.4 中,安装 bind 和 GeoIP:
# yum install bind geoip
2. 更新 GeoIP 数据库:
# geoipupdate -v
3. 修改 BIND 的配置。创建两个view, 其中一个是美国地区的View,一个是默认View. 两个View都能解析 test.com 的域名,但是使用不同的zone file, 使之得到不同的结果。
[root@dns ~]# diff /etc/named.conf.bk /etc/named.conf
13c13
< listen-on port 53 { 127.0.0.1; };
---
> listen-on port 53 { any; };
19c19,20
< allow-query { localhost; };
---
> allow-query { any; };
> geoip-directory "/usr/share/GeoIP";
52,54c53,79
< zone "." IN {
< type hint;
< file "named.ca";
---
> acl "redwoodcity" {
> geoip country US;
> };
> view "redwoodcity" {
> match-clients { redwoodcity; };
> zone "test.com" {
> file "named-us.test";
> type master;
> };
> zone "." IN {
> type hint;
> file "named.ca";
> };
> };
> view "default" {
> zone "test.com" {
> file "named.test";
> type master;
> };
> zone "." IN {
> type hint;
> file "named.ca";
> };
57c82
< include "/etc/named.rfc1912.zones";
---
> #include "/etc/named.rfc1912.zones";
创建对应的 zone 文件:
For default view
[root@dns ~]# cat /var/named/named.test
$TTL 3H
@ IN SOA root root (
20 ; serial
300 ; refresh
200 ; retry
900 ; expire
3H ) ; minimum
@ NS master.test.com.
master.test.com. A 3.3.3.3
hehe.test.com. A 4.4.4.4
For US view
[root@dns ~]# cat /var/named/named-us.test
$TTL 3H
@ IN SOA root root (
20 ; serial
300 ; refresh
200 ; retry
900 ; expire
3H ) ; minimum
@ NS master.test.com.
master.test.com. A 1.1.1.1
hehe.test.com. A 2.2.2.2
4. 重启 BIND 服务。
# systemctl restart named
5. 使用 dig 命令进行测试。这里可以给网卡添加一个美国的IP地址8.8.8.8,用于测试。
# ip addr add 8.8.8.8/24 dev ens3
&#91;root@dns ~&#93;# dig +short -b 8.8.8.8 -t A @localhost hehe.test.com
2.2.2.2
&#91;root@dns ~&#93;# dig +short -t A @localhost hehe.test.com
4.4.4.4
可以看到,如果查询者的IP是8.8.8.8(位于美国),那么能得到2.2.2.2的返回。其他地区则得到4.4.4.4的返回。
作者 feichashao发布于 2018/01/062018/05/23分类 Linux
文章导航
上一 上篇文章: 实践报告:港澳台同胞如何在大陆申请信用卡下一 下篇文章: 五台山日出计划
搜索 Search
搜索:
搜索
分类目录
Amazon Web Service
公开课 MOOCs
6.824 Distributed Systems
Scala
图像与视频处理 Image and Video Processing
旅行 Traveling
台湾单车环岛 Cycling in Taiwan
尼泊尔旅行 Travel to Nepal
欧洲骑行计划 Cycling in Europe
无人驾驶 Self-Driving Car
未分类
电影 Movie
经验 Experience
计算机 Computer
Android Development
C++
Jenkins
Linux
MC9S12XS128
Openshift
VBA
汇编语言 Assembly Language
网络 Network
讲饮讲食 Delicacy
飞思卡尔智能车 Freescale Intelligent Car
近期文章
2022川藏318骑行记录
2022/11/09
实践记录:港澳居民居住证在西藏四川入住酒店?
2022/05/28
操作记录: 怎样带流浪猫做绝育
2021/05/05
crash 分析 vmcore 的常用命令
2021/01/14
Elasticsearch 删除 RED state index
2020/11/10
2020青海湖骑行计划: 银川, 西宁, 青海湖
2020/10/26
"kubectl apply -f" fail with "The xxxx is invalid: metadata.resourceVersion: Invalid value: 0x0: must be specified for an update"
2020/08/25
文章归档文章归档
选择月份
2022年11月 (1)
2022年5月 (1)
2021年5月 (1)
2021年1月 (1)
2020年11月 (1)
2020年10月 (1)
2020年8月 (2)
2020年7月 (1)
2020年6月 (2)
2020年5月 (1)
2020年3月 (2)
2020年2月 (2)
2020年1月 (2)
2019年12月 (1)
2019年9月 (1)
2019年8月 (4)
2019年7月 (1)
2019年6月 (1)
2019年5月 (4)
2019年2月 (2)
2019年1月 (3)
2018年12月 (3)
2018年11月 (3)
2018年9月 (3)
2018年8月 (14)
2018年7月 (5)
2018年6月 (10)
2018年5月 (2)
2018年1月 (4)
2017年12月 (2)
2017年11月 (2)
2017年10月 (1)
2017年9月 (5)
2017年7月 (2)
2017年6月 (15)
2017年5月 (4)
2017年2月 (1)
2016年12月 (1)
2016年10月 (1)
2016年9月 (1)
2016年8月 (2)
2016年7月 (1)
2016年6月 (3)
2016年5月 (6)
2016年4月 (3)
2016年3月 (3)
2016年2月 (3)
2016年1月 (1)
2015年12月 (1)
2015年11月 (3)
2015年10月 (3)
2015年9月 (2)
2015年8月 (3)
2015年6月 (3)
2015年4月 (2)
2015年3月 (2)
2015年2月 (1)
2015年1月 (10)
2014年12月 (24)
2014年11月 (15)
2014年10月 (12)
2014年9月 (2)
2014年8月 (6)
2014年7月 (3)
2014年6月 (3)
2014年5月 (4)
2014年4月 (13)
2014年3月 (1)
2014年2月 (8)
2014年1月 (4)
2013年12月 (10)
2013年11月 (11)
2013年10月 (6)
2013年9月 (5)
2013年8月 (12)
2013年7月 (1)
与我联系 Contact Me如有疑问/建议/勘误,请与我联系: feichashao@gmail.com
Feel free to contact me at feichashao@gmail.com
微信赞赏码标签
8086
Coursera
dosbox
Freescale
glibc
hive
kdump
kernel
LCC
MGF
nepal
pacemaker
rhel
SJW
加德满都
台湾
台湾大学
吉隆坡
国际漫游
图像处理
尼泊尔
巴塞尔
拉萨
日本
早茶
曼海姆
机率课
杜伊斯堡
杜塞尔多夫
樟木
欧洲骑行
汇编
波恩
海牙
漫游资费
电影
科尔马
科布伦茨
美因茨
西宁
阿姆斯特丹
阿纳姆
青藏铁路
青藏高原
鹿特丹
友情链接 External LinksLLC&#8217;s Blog
不要乱立Flag
m4d3bug&#8217;s blog
首页
游记
特价机票
ABOUT ME
肥叉烧 feichashao.com
自豪地采用WordPress