kstm-su / ictsc7

0 stars 0 forks source link

D-1 #7

Closed Goryudyuma closed 7 years ago

Goryudyuma commented 7 years ago

http://contest.ictsc/#/problems/9/8/issues

Goryudyuma commented 7 years ago

社内のDNSサーバを構築する際、上司はコンテンツサーバとキャッシュサーバを別にしなければならないというこだわりを見せた。リソースが足りないため1台のサーバに同居させたところ、正しくフォワードされないようである。この不具合を修正し、 http://t[チーム番号].p22.ictsc が表示されることを確認してほしい。

ugwis commented 7 years ago

該当のDNSサーバーにリクエストを送信すると、server failedというレスポンスが返ってくる。 マスターに聞きに行って応答がなかったみたい。 ログイン情報に書かれてるサーバーはcentosで、selinuxが有向になっているらしい。

bgpat commented 7 years ago
[root@p22 ~]# systemctl status nsd
● nsd.service - NSD DNS Server
   Loaded: loaded (/usr/lib/systemd/system/nsd.service; enabled; vendor preset: disabled)
   Active: failed (Result: exit-code) since 土 2017-03-04 09:15:00 JST; 4h 6min ago
 Main PID: 738 (code=exited, status=1/FAILURE)

 3月 04 09:15:00 p22.problem.ictsc systemd[1]: Started NSD DNS Server.
 3月 04 09:15:00 p22.problem.ictsc systemd[1]: Starting NSD DNS Server...
 3月 04 09:15:00 p22.problem.ictsc nsd[738]: nsd starting (NSD 4.1.14)
 3月 04 09:15:00 p22.problem.ictsc nsd[738]: [2017-03-04 09:15:00.937] nsd[738]: notice: nsd starting (NSD 4.1.14)
 3月 04 09:15:00 p22.problem.ictsc systemd[1]: nsd.service: main process exited, code=exited, status=1/FAILURE
 3月 04 09:15:00 p22.problem.ictsc nsd[738]: [2017-03-04 09:15:00.939] nsd[738]: error: can't bind udp socket: Permission denied
 3月 04 09:15:00 p22.problem.ictsc nsd[738]: [2017-03-04 09:15:00.939] nsd[738]: error: server initialization failed, nsd could not be started
 3月 04 09:15:00 p22.problem.ictsc systemd[1]: Unit nsd.service entered failed state.
 3月 04 09:15:00 p22.problem.ictsc systemd[1]: nsd.service failed.
bgpat commented 7 years ago
[root@p22 ~]# cat /usr/lib/systemd/system/nsd.service 
[Unit]
Description=NSD DNS Server
After=syslog.target network-online.target
After=nsd-keygen.service
Wants=nsd-keygen.service

[Service]
Type=simple
PIDFile=/var/run/nsd/nsd.pid
EnvironmentFile=-/etc/sysconfig/nsd
ExecStart=/usr/sbin/nsd -d -c /etc/nsd/nsd.conf $NSD_EXTRA_OPTS
ExecReload=/bin/kill -HUP $MAINPID
KillMode=mixed
PrivateTmp=true

[Install]
WantedBy=multi-user.target
bgpat commented 7 years ago

これやってみる https://wiki.centos.org/HowTos/SELinux#head-ad837f60830442ae77a81aedd10c20305a811388

bgpat commented 7 years ago
[root@p22 ~]# semanage port -a -t dns_port_t -p udp 10053
[root@p22 ~]# semanage port -a -t dns_port_t -p tcp 10053
[root@p22 ~]# systemctl start nsd
[root@p22 ~]# systemctl status nsd
● nsd.service - NSD DNS Server
   Loaded: loaded (/usr/lib/systemd/system/nsd.service; enabled; vendor preset: disabled)
   Active: active (running) since 土 2017-03-04 13:42:34 JST; 1s ago
 Main PID: 3151 (nsd)
   CGroup: /system.slice/nsd.service
           ├─3151 /usr/sbin/nsd -d -c /etc/nsd/nsd.conf
           ├─3152 /usr/sbin/nsd -d -c /etc/nsd/nsd.conf
           └─3153 /usr/sbin/nsd -d -c /etc/nsd/nsd.conf

 3月 04 13:42:34 p22.problem.ictsc systemd[1]: Started NSD DNS Server.
 3月 04 13:42:34 p22.problem.ictsc systemd[1]: Starting NSD DNS Server...
 3月 04 13:42:34 p22.problem.ictsc nsd[3151]: nsd starting (NSD 4.1.14)
 3月 04 13:42:34 p22.problem.ictsc nsd[3151]: [2017-03-04 13:42:34.981] nsd[3151]: notice: nsd starting (NSD 4.1.14)
 3月 04 13:42:35 p22.problem.ictsc nsd[3152]: nsd started (NSD 4.1.14), pid 3151
 3月 04 13:42:35 p22.problem.ictsc nsd[3151]: [2017-03-04 13:42:35.027] nsd[3152]: notice: nsd started (NSD 4.1.14), pid 3151
bgpat commented 7 years ago

10053ポートは名前解決可能

bgpat commented 7 years ago

Mar 4 14:48:47 p22 unbound: [3279:0] info: Could not establish a chain of trust to keys for ictsc. DNSKEY IN

bgpat commented 7 years ago

unboundのDNSSECを無効にした

bgpat commented 7 years ago
mbp-bgpat:ictsc7 bgpat$ dig @192.168.22.3 t8.p22.ictsc any 

; <<>> DiG 9.8.3-P1 <<>> @192.168.22.3 t8.p22.ictsc any
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 23864
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;t8.p22.ictsc.          IN  ANY

;; ANSWER SECTION:
t8.p22.ictsc.       7   IN  SOA t8.p22.ictsc. root.t8.p22.ictsc. 20170223 60 15 600 60
t8.p22.ictsc.       7   IN  A   172.20.0.251

;; Query time: 3 msec
;; SERVER: 192.168.22.3#53(192.168.22.3)
;; WHEN: Sat Mar  4 15:46:41 2017
;; MSG SIZE  rcvd: 87
bgpat commented 7 years ago
  1. サーバーにログインしてサービスの稼動状態を見たところ、nsdがfailedとなっていたのでSELinuxの設定を変更して起動させた。
[root@p22 ~]# semanage port -a -t dns_port_t -p udp 10053
[root@p22 ~]# semanage port -a -t dns_port_t -p tcp 10053
  1. unboundのログを見るとゾーン転送の際、DNSSECのvalidationに失敗していたのでDNSSECを使用しないよう変更
[root@p22 unbound]# diff unbound.conf unbound.conf.org 
341d340
<   module-config: "iterator"

問題サーバーを指定して名前解決ができるようになった

$ dig @192.168.22.3 t8.p22.ictsc any

; <<>> DiG 9.8.3-P1 <<>> @192.168.22.3 t8.p22.ictsc any
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 4800
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;t8.p22.ictsc.          IN  ANY

;; ANSWER SECTION:
t8.p22.ictsc.       53  IN  SOA t8.p22.ictsc. root.t8.p22.ictsc. 20170223 60 15 600 60
t8.p22.ictsc.       53  IN  A   172.20.0.251

;; Query time: 1 msec
;; SERVER: 192.168.22.3#53(192.168.22.3)
;; WHEN: Sat Mar  4 15:55:45 2017
;; MSG SIZE  rcvd: 87
Goryudyuma commented 7 years ago

ICTSC ガイド メンバー チーム トップ 問題 質問 ログアウト 問題2: TAB 公開 2017-03-04T10:13:05.000+09:00 | 更新 2017-03-04T10:13:39.000+09:00 基準点: 85 / 満点: 100 / 通過チーム数: 3 / 依存: なし 補足事項: 問題にて提供するべき情報が不足していました。参加者やVMがデフォルトで参照するDNSサーバ(172.20.0.251)には、t[tid].p22.ictsc IN NS [問題VMのIPアドレス] のレコードが入っています。

2017-03-04T11:08:42.000+09:00 問題のゴールは、参加者の手元のPCのブラウザから http://t[tid].p22.ictsc/ へアクセスができるようになることです。

2017-03-04T14:22:25.000+09:00 問題に不備があり、逆引きについて設定することはできないことが判明しました。 逆引きの加点についてはなしとします。お手間を取らせてしまい大変申し訳ありませんでした。

2017-03-04T15:22:44.000+09:00 問題: 社内のDNSサーバを構築する際、上司はコンテンツサーバとキャッシュサーバを別にしなければならないというこだわりを見せた。リソースが足りないため1台のサーバに同居させたところ、正しくフォワードされないようである。この不具合を修正し、 http://t[チーム番号].p22.ictsc が表示されることを確認してほしい。

ログイン情報

host user pass sudo p22.problem.ictsc admin password yes 質問 解答 得点: 60 新規質問

タイトルは具体的かつ端的に記入してください ||||

​ 100:0 質問投稿 解決済み NSレコードがない 問題にて提供するべき情報が不足していました。参加者やVMがデフォルトで参照するDNSサーバ(172.20.0.251)には、t[tid].p22.ictsc IN NS [問題VMのIPアドレス] のレコードが入っています。 とありますが、手元のPCから引けません。 問題には影響ないでしょうか。

$ dig @172.20.0.251 t8.p22.ictsc NS

; <<>> DiG 9.8.3-P1 <<>> @172.20.0.251 t8.p22.ictsc NS ; (1 server found) ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: SERVFAIL, id: 36249 ;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION: ;t8.p22.ictsc. IN NS

;; Query time: 5 msec ;; SERVER: 172.20.0.251#53(172.20.0.251) ;; WHEN: Sat Mar 4 15:49:55 2017 ;; MSG SIZE rcvd: 30 投稿 2017-03-04T15:51:16.000+09:00 | 更新 2017-03-04T16:00:28.000+09:00 問題ありません。よろしくお願いいたします。 投稿者: ICTSC7 運営委員 | 2017-03-04T15:56:34.000+09:00 解決済み

bgpat commented 7 years ago

とりあえずNSレコードを追加した

bgpat commented 7 years ago
[root@p22 ~]# diff /etc/unbound/unbound.conf /etc/unbound/unbound.conf.org 
180d179
<   access-control: 172.20.0.251/32 allow
342d340
<   module-config: "iterator"
ugwis commented 7 years ago

nsdのゾーン情報

  1. サーバーにログインしてサービスの稼動状態を見たところ、nsdがfailedとなっていたのでSELinuxの設定を変更して起動させた。
[root@p22 ~]# semanage port -a -t dns_port_t -p udp 10053
[root@p22 ~]# semanage port -a -t dns_port_t -p tcp 10053
  1. unboundのログを見るとゾーン転送の際、DNSSECのvalidationに失敗していたのでDNSSECを使用しないよう変更
[root@p22 unbound]# diff unbound.conf unbound.conf.org 
341d340
<   module-config: "iterator"

問題サーバーを指定して名前解決ができるようになった

$ dig @192.168.22.3 t8.p22.ictsc any

; <<>> DiG 9.8.3-P1 <<>> @192.168.22.3 t8.p22.ictsc any
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 4800
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;t8.p22.ictsc.          IN  ANY

;; ANSWER SECTION:
t8.p22.ictsc.       53  IN  SOA t8.p22.ictsc. root.t8.p22.ictsc. 20170223 60 15 600 60
t8.p22.ictsc.       53  IN  A   172.20.0.251

;; Query time: 1 msec
;; SERVER: 192.168.22.3#53(192.168.22.3)
;; WHEN: Sat Mar  4 15:55:45 2017
;; MSG SIZE  rcvd: 87
  1. 172.20.0.251からの名前解決が許可されていたなかったので、access-controlを追加した
        # Choose deny (drop message), refuse (polite error reply),
        # allow (recursive ok), allow_snoop (recursive and nonrecursive ok)
        access-control: 0.0.0.0/0 refuse
        access-control: 192.168.0.0/16 allow
        access-control: 172.16.0.0/16 allow
+       access-control: 172.20.0.251/32 allow
        access-control: 10.0.0.0/8 allow
        access-control: 127.0.0.0/8 allow
        # access-control: ::0/0 refuse
        # access-control: ::1 allow

手元のPCからhttp://t8.p22.ictsc/ にアクセスできることが確認された