NAT GW 구축할떄 리눅스의 firewall cmd이용
NAT GW 이용해서 private subnet이 외부와 통신할수 잇도록
dhcp로 내부에 ip 부여
db만들고 사용자랑 비번만들고 권환주기
ISP(Internet Service Provider: KT, SKB, LGU+, Dreamline ...)
DNS
# yum -y install bind bind-chroot bind-utils
ggdG
# cp /etc/named.conf /etc/named.conf.bak # 백업하고 작업
# vi /etc/named.conf
options {
listen-on port 53 { 127.0.0.1; 192.168.0/24; 172.31.0/24; };
listen-on-v6 port 53 { ::1; };
directory "/var/named";
dump-file "/var/named/data/cache_dump.db";
statistics-file "/var/named/data/named_stats.txt";
memstatistics-file "/var/named/data/named_mem_stats.txt";
recursing-file "/var/named/data/named.recursing";
secroots-file "/var/named/data/named.secroots";
allow-query { localhost; 192.168.0/24; 172.31.0/24; };
forwarders { 8.8.8.8; 8.8.4.4; }; # 구글이 제공하는 DNS server
recursion yes;
dnssec-enable yes;
dnssec-validation yes;
/* Path to ISC DLV key */
bindkeys-file "/etc/named.iscdlv.key";
managed-keys-directory "/var/named/dynamic";
pid-file "/run/named/named.pid";
session-keyfile "/run/named/session.key";
};
logging {
channel default_debug {
file "data/named.run";
severity dynamic;
};
};
view "internal" {
zone "." IN {
type hint;
file "named.ca";
};
include "/etc/named.rfc1912.zones";
include "/var/named/bonghyeon.shop.zones"; # 호스팅 영역 생성
};
vi /var/named/bonghyeon.shop.zones
zone "bonghyeon.shop" IN {
type master; # DNS server가 죽으면 slave가 하게 할수잇다.우리는 하나만함
file "bonghyeon.shop.db";
allow-update { none; }; # 도메인 IP를 주기적으로 확인, DDNS 기능
};
zone "0.31.172.in-addr.arpa" IN { # IP를 반대로 도메인으로 바꿔주는 기능(리버스)
type master;
file "0.31.172.in-addr.arpa.db";
allow-update { none; };
};
vi /var/named/bonghyeon.shop.db
$TTL 86400 # time to live 캐시정보가 이 시간만큼 정보를 가지고 잇다가 리프레시하는시간
@ IN SOA bonghyeon.shop. root.bonghyeon.shop.(
2022041401 ; Serial
3h ; Refresh
1h ; Retry
1w ; Expire
1h ) ; Minimum
IN NS ns.bonghyeon.shop.
IN MX 10 ns.bonghyeon.shop. # 메일서버
ns IN A 172.31.0.102 # 102 보통 dns
web01 IN A 172.31.0.100
web02 IN A 172.31.0.101
* IP LIST
WEB01_SAMBA 172.31.0.101
WEB02_NFS 172.31.0.100
DNS_DATABASE 172.31.0.102
# vi /var/named/0.31.172.in-addr.arpa.db
$TTL 86400
@ IN SOA bonghyeon.shop. root.bonghyeon.shop.(
2022041401 ; Serial
3h ; Refresh
1h ; Retry
1w ; Expire
1h ) ; Minimum
IN NS ns.bonghyeon.shop.
102 IN PTR ns.bonghyeon.shop.
# systemctl start named && systemctl enable named
# systemctl enable --now named
# firewall-cmd --permanent --add-service=dns
# firewall-cmd --reload
# systemctl restart NetworkManager
# NAT-GW 가서
# vi /etc/dhcp/dhcpd.conf
# multil-execution 눌러서 무언가를 동시에 하게 할수잇음
# vi /etc/sysconfig/network-scripts/ifcfg-enp0s3
# cat /etc/resolv.conf
web01가서
yum install -y bind-utils
dig A web01.bonghyeon.shop # 도메인 확인
dig -x 172.31.0.102 # 역으로 도메인 확인
NAT GW 가서
# yum install -y haproxy
# cp /etc/haproxy/haproxy.cfg /etc/haproxy/haproxy.cfg.bak
# vi /etc/haproxy/haproxy.cfg
# ggdg 로 다지우고
global
daemon
defaults
mode http
frontend http-in
bind *:80
acl firefox hdr_sub(User-Agent) Firefox
acl chrome hdr_sub(User-Agent) Chrome
default_backend backend_servers # 위에 두줄의 조건이 아니면 default로
use_backend bk_firefox if firefox # firefox 조건이 맞으면 firefox백엔드로
use_backend bk_trident if chrome
backend backend_servers
balance roundrobin # 로드벨런서 알고리즘 roundrobin은 순차적으로.. web01, web02, web01, web02.. 이런식
# cookie SVID insert indirect nocache maxlife 10s
server web01 172.31.0.100:80 cookie w1 check
server web02 172.31.0.101:80 cookie w2 check
# server web03 172.31.0.103:80 cookie w3 check
backend bk_firefox
server web01 172.31.0.100:80
backend bk_chrome
server web02 172.31.0.101:80
# firewall-cmd --list-all
# firewall-cmd --list-all --zone=external
# systemctl start haproxy
# systemctl enable haproxy
# systemctl enable --now haproxy
# firewall-cmd --permanent --add-port=80/tcp --zone=external
VMware가 NAT기능이 훨씬 편리하다
edit -> 오른쪽아래 changesettings
create a new virtual machine 클릭
poweron 하고 centos7 설치
교재 81
공인IP = Public IP
사설IP = Private IP
10.0.0.0 ~ 10.255.255.255
172.16.0.0 ~ 172.31.255.255
192.168.0.0 ~ 192.168.255.255
create a full clone 선택
이제 이걸로 다음꺼 clone함
똑같이 하고 이름 이렇게 만듬
똑같이 DNS_DB로 클론해서 NAT-GW_DHCP_HAproxy 라고 이름 설정해서 만듬
mobxterm 켜서
home에서 키 복사
10.0.0.129 들가서 vi /etc/ssh/sshd_config 들가서
# vi /etc/ssh/sshd_config
PasswordAuthentication no
systemctl restart sshd
systemctl status sshd
sestatus
yum install -y httpd
hostnamectl set-hostname web01
systemctl enable --now httpd
yum install -y bash-completion # 자동완성깔기
exit
다시들가고
firewall-cmd --permanent --add-service=http
firewall-cmd --reload
firewall-cmd --list-all
![](https://velog.velcdn.com/images/eeapbh/post/461d8c97-1204-429d-a99d-8709fe28835e/image.png)
- 서비스에 http 들어간거 확인
- yum install -y wget
- cd /var/www/html
- mkdir images && cd $_
- wget http://192.168.0.3/files/two-rabbit.jpg
- cd ~ 해서 root로감
- yum install -y samba
- mkdir -p /var/samba/share # 중간에 samba라는 폴더 만들면서 share 까지 만듬 유용함 (-p)
- chmod 777 /var/samba/share
- adduser kosa
- passwd kosa
- 비밀번호 등록함
- smbpasswd -a kosa # samba에서 사용할 kosa사용자에 passwd 설정하기
- vi /etc/samba/smb.conf
- o키 누르고 엔터 한칸치고 아래꺼 복사함
workgroup = hali
[share]
comment = Share Directory
path = /var/samba/share
browserable = yes
writable = yes
valid users = kosa
create mask = 0777
directory mask = 0777
# systemctl enable --now smb
# systemctl enable --now nmb
# systemctl restart smb
# systemctl restart nmb
# systemctl status smb nmb
![](https://velog.velcdn.com/images/eeapbh/post/65d7e775-bf4b-429d-a285-e382c0c6b975/image.png)
둘다 active 된거 확인
# firewall-cmd --permanent --add-service=samba
# firewall-cmd --reload
# firewall-cmd --list-all // 꼭다하고 확인하는 습관
\\10.0.0.129 들어가서 aws.tar 복사해줌 그럼 samba는 끝
![](https://velog.velcdn.com/images/eeapbh/post/85e8cabf-59c2-4e58-8803-7d320dd336e1/image.png)
# hostnamectl set-hostname web02
# yum install -y bash-completion
# yum install -y httpd (웹서버 설치)
# cd /var/www/html
# ls 해보면 암것도없음
# mkdir images && cd $_ (mkdir로 imager 폴더 만들고 $_뜻은 방금 직전에 만드는 폴더)
# yum install -y wget
# vi index.html
# wget http://192.168.0.3/files/two-rabbit.jpg
<!DOCTYPE html>
Sample Deployment
For next steps, read the AWS Management Console.