dig (domain information groper) 는 DNS 네임서버에 쿼리를 날리기위한 유용한 툴이다.
DNS lookup 과 쿼리를 보낸 네임서버로부터 돌아오는 응답을 출력해준다.

대부분의 DNS 관리자들은 DNS장애 시 troubleshoot 를 위해 dig를 사용한다.
이유는 dig의 유연하고 편리하기 때문이다.

보통 dig는 명령어라인 인자들과 함께 사용한다.

dig 사용 시 name server 를 명시하지 않으면 /etc/resolv.conf 파일에 명시된
리스트로 쿼리를 보낸다.

사용법은 다음과 같다.

dig @server name type

[server]
네임서버의 아이피 또는 도메인을 명시한다.
IPv4는 dotted-decimal(.)을 사용하고 IPv6는 colon-delimited(:)을 사용한다.

[name]
도메인을 명시한다.

[type]
ANY, A, MX, SIG, 기타.. 를 명시한다.
명시하지 않을 경우 기본적으로 A레코드를 출력한다.

< 예제 >

// 도메인 조회
[root@assa root]# dig @168.126.63.1 sysadm.kr ANY

; <<>> DiG 9.2.1 <<>> @168.126.63.1 sysadm.kr ANY
;; global options: printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 65437
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 2, ADDITIONAL: 2

;; QUESTION SECTION:
;domain.net. IN ANY

;; ANSWER SECTION:
domain.net. 172800 IN NS ns.domain.net.

;; AUTHORITY SECTION:
domain.net. 172800 IN NS ns.domain.net.

;; ADDITIONAL SECTION:
ns.domain.net. 172800 IN A 192.168.1.100

;; Query time: 3080 msec
;; SERVER: 168.126.63.1#53(168.126.63.1)
;; WHEN: Sat Mar 29 11:01:07 2003
;; MSG SIZE rcvd: 134

// Reverse lookup(역방향 조회)
[root@assa root]# dig @168.126.63.1 -x 192.168.10.1 ANY
; <<>> DiG 9.2.1 <<>> @168.126.63.1 -x 192.168.10.1 ANY
;; global options: printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 61892
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 0

;; QUESTION SECTION:
;1.10.168.192.in-addr.arpa. IN ANY

;; AUTHORITY SECTION:
1.10.168.192.in-addr.arpa. 600 IN SOA ns.domain.net. root.ns.domain.net. 2003021922 28800 14400 3600000 86400 



. server : 확인하고자 하는 DNS 서버의 domain 이나 IP 를 넣어주면 됨
2. query type 에 올수 있는것
– a – 네트워크 주소를 의미
– any – 지정한 도메인의 모든 정보를 의미
– mx – 지정한 도메인의 메일서버 정보를 의미
– ns – 네임서버를 의미
– soa – soa 정보를 의미
– hihfo – HINFO 레코드에 대한 정보를 의미

3. query-class : 확인하고자 하는 도메인

4. DIG는 쿼리에 대한 결과를 ANSWER SECTION에, 해당 도메인의 인증을 갖는 네임서버 정보를 AUTHORITY SECTION에, 그리고, 글루레코드 등이 있을 경우 그에대한 정보를 ADDITIONAL SECTION에 출력하여 준다.

출처 : http://sasuke.tistory.com/162?srchid=BR1http%3A%2F%2Fsasuke.tistory.com%2F162

'Works > CentOS & RockyLinux' 카테고리의 다른 글

CentOS7 Locale설정  (0) 2018.05.29
SFTP log 설정  (0) 2018.02.22
크론테이블에 등록 : crontab -e  (0) 2017.09.22
centos7 고정 ip 설정  (0) 2017.09.13
리눅스에서 tcpdump 명령어의 옵션 정리  (0) 2017.06.20


<권한설정>

grant all privileges on 디비명.테이블명 to 사용자@'접속지 주소' identified by '암호' (with grant option);

grant all privileges on *.* to  root@'%' identified by '암호with grant option;
grant all privileges on *.* to  root@'localhost' identified by '암호with grant option;

<권한 제거>
revoke all on 디비명.테이블명 from 사용자;

<권한 적용>
# 모든 명령 후에 항상 아래 명령을 실행해야 실제로 적용된다. 
flush privileges; 



<기타>
# '사용자'가 '암호'으로 111.222.333.0/24 에서 모든 디비와 테이블에 접속하도록 허용
grant all privileges on *.* to  사용자 @'111.222.333.%' identified by '암호';

# '사용자'가 '암호'으로 111.222.333.444 에서 db1 디비의 모든 테이블에 접속하도록 허용
grant all privileges on db1.* to 사용자@'111.222.333.444' identified by '암호';

# '사용자'가 '암호'으로  localhost 에서 db1 디비의 table1에 접속하도록 허용
grant all privileges on db1.table1 to 사용자@'localhost' identified by '암호';

[출처] http://ir.bagesoft.com/675


크론테이블에 등록 : crontab -e
■ cron

- 명령은 지정된 날짜와 시간에 일정 작업을 주기적으로 수행하기 위해 사용되며 각 사용자별로 /var/spool/cron/crontabs 디렉토리에 사용자 ID와 같은 이름의 crontab 화일을 만들어 cron job을 지정할 수 있다
- cron 명령은 시스템이 부팅되면서 /etc/rc2.d/S75cron 스크립트에 의해서 daemon 형태로 수행된다


■ 형식 : crontab -e

분  시  일  월  요일   실행할 명령

   분 : 0-59
   시 : 0-23
   일 : 1-31
   월 : 1-12
   요일 : 0-6( 0: 일요일)


■ 옵션

crontab -e : 작업할 내용 작성하기
crontab -l : 현재 설정되어 있는 작업내용 보기
crontab -r : 설정되어 있는 작업을 모두 삭제하기


■ 예제

ex1) 1일부터 15일 까지로 날짜를 지정하고 싶을 땐 다음과 같이 하이픈을 이용할 수 있다
0   1   1-15     *   *   [명령]
분, 시, 날, 달, 요일, 모두 적용할 수 있다

ex2) 1일과 7일 15일에 cron을 작동시킬 땐 콤마를 이용하면 된다
0   1  1,7,15    *   *   [명령]
분, 시, 날, 달, 요일, 모두 적용할 수 있다

ex3) 매 5일 마다 실행하고 싶을 땐 슬래쉬(/)를 이용한면 된다
0   1   /5   *   *   [명령]
분, 시, 날, 달, 요일, 모두 적용할 수 있다
/ 안해줘도 달이 *로 표현되어 있어서 매달 실행된다. 하지만 좋은 습관을 들이기 위해..


 

ex4) 매주 일요일 오전 3:15에 /var 디렉토리에 있는 core 화일을 지우는 작업
15 3 * * 0 find /var -name core 2>/dev/null |  xargs rm -f


ex5) 매월 1일 오후 6시에 시스템 down message 보내기
0 18 1 * * wall "System Will be down"


■ Access 제한

- /etc/cron.d/cron.allow 파일이나 /etc/cron.d/cron.deny 화일을 이용하여 시스템 관리자는 각 사용자별로 crontab 파일에 대한 Access 권한을 제한 할 수 있다
 * crontab을 access 할 수 있는 사용자

   - /etc/cron.d/cron.allow 화일이 존재하는 경우, 그 파일 안에 지정된 사용자
   - /etc/cron.d/cron.allow 화일이 없는 경우 : /etc/cron.d/cron.deny 파일 안에 지정되지 않은 사용자
       
 * crontab을 access 할 수 없는 사용자

   - /etc/cron.d/cron.allow 파일이 존재하는 경우 : 그 파일 않에 지정되지 않은 사용자
   - /etc/cron.d/cron.allow 파일이 없는 경우 : /etc/cron.d/cron.deny 파일에 지정된 사용자
   - /etc/cron.d/cron.allow와 /etc/cron.d/cron.deny 파일이 모두 없는 경우 : root를 제외한 모든 사용자
  
- OS가 설치되면 기본적으로 /etc/cron.d/cron.deny이 생성되고 그 안에 아래의 사용자들이 지정된다
daemon
bin
smtp
nuucp
listen
nobody
noaccess

/etc/cron.d/cron.allow와 /etc/cron.d/cron.deny 화일에 사용자를 지정할 때는 위와 같이 한줄에 한명씩 사용자를 지정한다.


0 4 1,10 * * 명령1

위 처럼 crontab을 편집하면 매월 1일과 10일 4시에 명령1을 실행한다는 의미이다. 또
0 4 1-10 * * 명령2

위처럼 crontab을 편집하면 매월 1일부터 10일동안 매일 명령2를 실행한다는 의미이다. 그리고

0 4 */5 * * 명령3

라고 편집하면 매 5일마다 실행한다는 것으로 1일, 6일, 11일 등과 같이 5일 간격으로 실행한다는 의미이다.
그리고 그 외에 root 권한으로 다른 사용자의 crontab 파일을 편집하기 위해서는 다음과 같이 명령하면 된다.

crontab -u user -e
[출처] Cron|작성자 지우개



출처: http://annehouse.tistory.com/390 [초록지붕의 앤]

'Works > CentOS & RockyLinux' 카테고리의 다른 글

SFTP log 설정  (0) 2018.02.22
dig 개념 및 사용법  (0) 2017.11.01
centos7 고정 ip 설정  (0) 2017.09.13
리눅스에서 tcpdump 명령어의 옵션 정리  (0) 2017.06.20
유용한 find 명령어 응용모음.  (0) 2017.06.09


 

centos 7 고정 ip 


/etc/sysconfig/network-scripts/ifcfg-xxxxx 파일

############# dhcp-config ############

#TYPE=Ethernet

#BOOTPROTO=dhcp

#DEFROUTE=yes

#PEERDNS=yes

#PEERROUTES=yes

#IPV4_FAILURE_FATAL=no

#IPV6INIT=yes

#IPV6_AUTOCONF=yes

#IPV6_DEFROUTE=yes

#IPV6_PEERDNS=yes

#IPV6_PEERROUTES=yes

#IPV6_FAILURE_FATAL=no

#NAME=eno16777736

#UUID=d41562bc-ed43-4426-b395-e519468318a1

#DEVICE=eno16777736

#ONBOOT=yes


############### static-config #######

TYPE=Ethernet

BOOTPROTO=static

DEFROUTE=yes

PEERDNS=yes

PEERROUTES=yes

NAME=eno16777736

UUID=xxxxxxxxxxxxxxxxxxxxxxxxxx

DEVICE=eno16777736

ONBOOT=yes

IPADDR=192.168.233.xxx

NETMASK=255.255.255.0

GATEWAY=xxx.xxx.xxx.x

DNS1=168.126.63.1

DNS2=8.8.8.8

USERCTL=no

NM_CONTROLLED=yes




HWADDR=xx:xx:xx:xx:xx:xx : 맥주소 입력

TYPE= Ethernet : 이더넷 인터페이스의 종류

BOOTPROTO=static : ip할당 방식

static : 고정 아이피 할당

dhcp : 유동 아이피 할당

bootp : dhcp 이전에 사용하던 방식

none : 사용안함

DEFROUTE=yes : 디폴트라우트 사용 여부

PEERDNS=yes : dhcp 서버의 dns정보를 /etc/resolv.conf에 저장 여부

PEERROUTES=yes : dhcp 서버의 라우터 정보를 /etc/sysconfig/network에 저장 여부

IPV4_FAILURE_FATAL=yes : 설정이 잘 안됬을 때 IPv6 사용 여부(yes면 사용하지 않고 no면 사용)

IPV6INIT=yes : IPv6 사용 여부

NAME=enp0s3 : GUI 네트워크 설정 때 보이는 NIC 이름

ONBOOT=yes : 부팅시 자동 활성화 여부

BROADCAST= : 브로드캐스트 주소

IPADDR= : 아이피주소

NETMASK= : 넷마스크 주소

NETWORK= : 네트워크 주소

GATEWAY= : 게이트웨이 주소

DNS1= : DNS주소

DNS2= : DNS주소

USERCTL=no : 일반 사용자가 수정 할 수 있는지에 대한 여부

NM_CONTROLLED=yes : 네트워크 관리도구사용 여부



출처: http://flyyunha.tistory.com/entry/centos7-고정-ip-설정 [Get your Dream]


PHP 에 GeoIP 를 사용할 경우 확장 모듈을 설치 하는 방법 입니다.

http://pecl.php.net/package/geoip

[root@yongbok ~]# cd /usr/local/src

[root@yongbok ~]# wget http://pecl.php.net/get/geoip-1.0.7.tgz

[root@yongbok ~]# wget http://pecl.php.net/get/geoip-1.1.1.tgz    (php7 이상일 경우) // 1.1.1 버전은 베타이긴 하나 작동에 이상은 없었다.

[root@yongbok ~]# tar xzvf geoip-1.0.7.tgz

[root@yongbok ~]# cd geoip-1.0.7

[root@yongbok ~]# /usr/local/php5/bin/phpize

[root@yongbok ~]# ./configure --with-php-config=/usr/local/php5/bin/php-config --with-geoip=/usr/local

[root@yongbok ~]# make ; make install

Installing shared extensions: /usr/local/php5/lib/php/extensions/no-debug-non-zts-20060613/

php.ini 파일에 GeoIP 구문 추가

[root@yongbok ~]# vi /usr/local/apache2/conf/php.ini
[GeoIP]
extension_dir=/usr/local/php5/lib/php/extensions/no-debug-non-zts-20060613/
extension = geoip.so
geoip.custom_directory=/usr/local/share/GeoIP (GeoIP.dat 파일의 경로 정의, 시스템마다 다를수 있음)

아파치 재시작
[root@yongbok ~]# /usr/local/apache2/bin/apachectl restart

phpinfo 로 확인
[root@yongbok ~]# echo '<?php phpinfo(); ?>'>/var/www/phpinfo.php


[출처] http://cy.cyworld.com/home/37141209/post/4BB719E61B15773CBD468401

[추가] php 에서 GeoIP 사용 샘플 (접속자 IP체크하여 국가코드 출력) // 2023. 1. 12 추가됨

<?php
geoip_setup_custom_directory('/home/your_account/');
$a = $_SERVER['REMOTE_ADDR'];
$country = geoip_country_code_by_name($a);
echo "Your IP : ".$a." [$country]";
?>

[설명] geoip_setup_custom_directory() 함수는 이미 php.ini 에 정의되어 있는데 소스코드에 별도로 정의하는 이유는

php.ini 에 정의된 geoip_setup_custom_directory 의 퍼미션이 other가 읽기권한이 없으면 국가코드가 NULL 로 

출력되는데 퍼미션 변경이 불가한 상황일 때 위 방법 (일반계정 내에 데이터 파일을 업로드 하고 경로 정의) 을

이용하면 문제 없이 국가코드가 출력된다.

'Works > 확장모듈설치매뉴얼' 카테고리의 다른 글

apache mod_proxy.so 컴파일 방법  (0) 2023.09.08
apache mod_unique_id module 추가  (0) 2023.04.20
Zend Guard Loader 설치  (0) 2017.05.17
APC 확장모듈 설치  (0) 2017.04.26
freetds 확장모듈 설치  (0) 2016.09.27