Go, Vantage point
가까운 곳을 걷지 않고 서는 먼 곳을 갈 수 없다.
Github | https://github.com/overnew/
Blog | https://everenew.tistory.com/
티스토리 뷰
이전글의 Web 3Tier 망에서 추가로 DNS와 DHCP를 적용시켜 보자.
네트워크 환경
기존에 Web Server로 사용하는 Ubuntu Server에 DNS와 DCHP를 추가로 설치하여,
더 이상 내부 망에서 IP를 사용하지 않고 DN로만 서로의 서비스에 접근할 수 있게 해 주자.
DHCP 설치 및 세팅
Ubnutu server에 DHCP를 설치와 세팅 법은 아래의 게시글을 참조하자.
[Virtual Box] Ubuntu server - DHCP server 설치 및 IP할당
Interface 세팅을 Enp0s3로 변경해 주자.
sudo vim /etc/default/isc-dhcp-server
sudo vim /etc/dhcp/dhcpd.conf
를 통해서 subnet을 명시해 주자.
#사용할 서브넷의 범위와 router 주소 등을 명시
subnet 192.168.46.0 netmask 255.255.255.0 {
option subnet-mask 255.255.255.0;
option routers 192.168.46.254;
option domain-name-servers 192.168.46.3;
range 192.168.46.4 192.168.46.250;
}
subnet 192.168.56.0 netmask 255.255.255.0 {
option subnet-mask 255.255.255.0;
option routers 192.168.56.254;
range 192.168.56.4 192.168.56.250;
}
subnet 192.168.66.0 netmask 255.255.255.0 {
option subnet-mask 255.255.255.0;
option routers 192.168.66.254;
range 192.168.66.4 192.168.66.250;
}
subnet 192.168.76.0 netmask 255.255.255.0 {
option subnet-mask 255.255.255.0;
option routers 192.168.76.254;
range 192.168.76.4 192.168.76.250;
}
subnet 192.168.10.0 netmask 255.255.255.0 {
option subnet-mask 255.255.255.0;
option routers 192.168.10.254;
option domain-name-servers 192.168.11.3;
range 192.168.10.3 192.168.10.250;
}
subnet 192.168.11.0 netmask 255.255.255.0 {
option subnet-mask 255.255.255.0;
option routers 192.168.11.254;
option domain-name-servers 192.168.11.3;
range 192.168.11.3 192.168.11.250;
}
Router Relay 적용
router 서버에서 서브넷 너머의 dhcp를 사용할 수 있도록 dchp relay가 필요하다.
Cisco router를 사용한다면, ip helper-address를 세팅해 주면 되지만 우리는 ubuntu server를 router로 사용하므로 다른 방식이 필요하다.
DHCP 서버와 클라이언트 사이에서 DHCP 메시지를 전달하는 중계 에이전트인 ISC DHCP Relay를 route 역할을 하는 server에 설치하자.
sudo apt-get install isc-dhcp-relay
/etc/default/isc-dhcp-relay
에 설정을 해주자.
Server에 dhcp 서버의 주소를, INTERFACE에는 브로드케스트 정보를 수신할 어댑터 dev들을 기입
세팅 후 재시작
sudo service isc-dhcp-relay restart
동작 확인
다른 서버가 이제 subnet너머의 dhcp 서버에서 ip를 에서 받아온다.
하지만 항상 서버의 IP가 달라지면 DNS 서비스를 매칭시키기가 곤란하다.
따라서 dhcp로 ip고정을 해보자.
DHCP로 서버 ip고정시키기
맥주소와 1:1 매칭되는 ip를 설정해 준다.
sudo nano /etc/dhcp/dhcpd.conf
(어댑터의 맥주소는 ifconfig로 확인)
host WEB_SERVER {
hardware ethernet 08:00:27:2c:42:8c; #어댑터 맥주소
fixed-address 192.168.46.3;
option domain-name-servers 192.168.46.3;
}
host WEB_SERVER_pub {
hardware ethernet 08:00:27:2b:c3:1e;
fixed-address 192.168.11.3;
option domain-name-servers 192.168.11.3;
}
host DB_SERVER {
hardware ethernet 08:00:27:87:00:e7;
fixed-address 192.168.56.3;
option domain-name-servers 192.168.46.3;
}
host WAS_SERVER {
hardware ethernet 08:00:27:5d:9b:21;
fixed-address 192.168.76.3;
option domain-name-servers 192.168.46.3;
}
host WAS_SERVER2 {
hardware ethernet 08:00:27:4B:D0:07;
fixed-address 192.168.76.4;
option domain-name-servers 192.168.46.3;
}
host Bastion_Host_pri {
hardware ethernet 08:00:27:66:2c:6b;
fixed-address 192.168.66.3;
option domain-name-servers 192.168.46.3;
}
host Bastion_Host_pub {
hardware ethernet 08:00:27:29:10:0d;
fixed-address 192.168.10.3;
option domain-name-servers 192.168.11.3;
}
이제 고정한 서버에서 다시 dhclient 명령어로 지정한 ip를 받아온다.
DNS 설치
Ubuntu server - DNS 서버 설치 및 구성
sudo apt update
sudo apt install bind9 bind9utils bind9-doc dnsutils //bind9 설치
ipv4로만 사용하기 위해 -4 추가
sudo nano /etc/default/named
sudo nano /etc/bind/named.conf.options
options에도 설정을 해주자.
//listen-on-v6 { any; }; # disable bind on IPv6
recursion yes; # enables resursive queries
allow-recursion { trusted; }; # allows recursive queries from "trusted" - referred to ACL
listen-on { 192.168.46.3; }; # DHCP IP address
allow-transfer { none; }; # disable zone transfers by default
forwarders {
8.8.8.8;
1.1.1.1;
};
option의 위에는 접속 가능하게 할 ACL ip 범위 설정
이후 아래 명령어가 에러메시지를 출력하지 않는다면 구문이 정상이다.
sudo named-checkconf /etc/bind/named.conf.options
이제 Zone 설정이다.
sudo nano /etc/bind/named.conf.local
zone " renegades.com" {
type master;
file "/etc/bind/zones/db.renegades.com"; # zone file path
};
zone "168.192.in-addr.arpa" { #역순 주소
type master;
file "/etc/bind/zones/db.192.168"; # subnet
}
영역 데이터 베이스를 만들어 주자.
sudo mkdir -p /etc/bind/zones/
sudo cp /etc/bind/db.local /etc/bind/zones/db.renegades.com #기존 템플릿 복제 생성
sudo nano /etc/bind/zones/db.renegades.com
$TTL 604800
@ IN SOA ns1.renegades.com. root.renegades.com. (
2022013101 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL
; Name servers
@ IN NS ns1.renegades.com.
; Define hosts in the domain
ns1.renegades.com. IN A 192.168.46.3
db.renegades.com. IN A 192.168.56.3
was.renegades.com. IN A 192.168.76.3
was2.renegades.com. IN A 192.168.76.4
bastion.renegades.com. IN A 192.168.66.3
역방향 영역 구성도 해주자.
(ip로 역으로 DN을 검색할 때 사용됨.)
sudo cp /etc/bind/db.127 /etc/bind/zones/db.192.168
sudo nano /etc/bind/zones/db.192.168
$TTL 604800
@ IN SOA ns1.renegades.com. root.renegades.com. (
3 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL
;
@ IN NS ns1.example.com.
3.46 IN PTR ns1.renegades.com #나머지 ip는 역방향으로 기입
3.56 IN PTR db.renegades.com.
3.66 IN PTR bastion.renegades.com.
3.76 IN PTR was.renegades.com.
4.76 IN PTR was2.renegades.com.
sudo named-checkconf
로 구문 오류를 확인하고, 아래의 명령어도 ok를 출력하는지 확인한다.
sudo named-checkzone renegades.com /etc/bind/zones/db.renegades.com
sudo named-checkzone 168.192.in-addr.arpa /etc/bind/zones/db.192.168
재시작해주자.
sudo systemctl restart named
이제 내부망의 서버에서는 nslookup으로 만들어준 주소 조회 가능 해졌다.
Nameserver가 설정이 안 된 곳이 있다면
sudo nano /etc/netplan/00-installer-config.yaml 에 nameserver를 지정해 주자.
sudo nano /etc/netplan/00-installer-config.yaml
network:
version: 2
ethernets:
enp0s3:
dhcp4: true
nameservers:
addresses: [192.168.46.3] #DHCP IP 설정
내부망의 서버들에서 동작한다.
통신이 잘 안 되면 데이터가 잘 도달되도록 routing 설정을 잘했는지 확인하자.
외부에서 DNS 사용해 접근
DNS 서버 주소를 설정해도 외부에서는 접근이 안되고 있다.
100.1.2.251은 192.168.11.3(WEB Server의 두 번째 어댑터 IP)으로 변환되어 들어간다.
하지만 DNS 서버는 192.168.46.3으로만 ip를 설정했기 때문에 192.168.11.3로는 DNS 서비스를 이용할 수 없었다.
따라서 외부와 연결된 router에 192.168.46.3(web server, DNS)으로 도달할 수 있는 경로를 추가해 주자.
sudo ip route add 192.168.46.0/24 via 192.168.11.3 dev enp0s9
이후 DNS 서버를 192.168.46.3로 바꿔주면 DNS 서버로 잘 전달이 된다.
이제 외부에서도 DNS 주소로 웹 접속이 가능해졌다.
'개발 > 네트워크 & Ubuntu' 카테고리의 다른 글
[GNS3] 라우터 간의 IPSec VPN & Tunneling 적용하기 (1) | 2024.02.12 |
---|---|
Apache2 Load Balancer 적용, Redis로 세션 불러오기 (1) | 2024.02.02 |
[On-premise] Ubuntu server로 구성하는 Web 3Tier 아키텍처 (0) | 2024.02.02 |
[Ubuntu server] 배스천 호스트로 DB server 접속하기 (0) | 2024.01.31 |
Ubuntu server MariaDB 설치 및 내외부접속 (1) | 2024.01.31 |