NAT

기본 권장 아키텍처는

일반적으로 서버는 모두 사설 IP 대역에 두고,

서비스가 필요한 부분은 Cloud LB를 통해서 외부와 연결 하기를 권장합니다.

꼭 Public IP가 필요한 경우는, Public IP를 부여해도 되고, NAT 서버에서 Secondary IP를 할당 해서 1:1 NAT를 해주면 됩니다. 


본 글은 일반적인 NAT 서버 구성방법과, 서버내에 기본 라우팅을 바꾸는 법을 설명합니다. (간단합니다)

서버는 NAT 서버, 일반 서버 두대로 가정합니다.
[NAT 서버] PublicIP: 169.56.100.5 PrivateIP: 10.178.100.10

NAT 서버를 먼저 설정해 봅니다.

# 1. NAT 서비스를 해줄 방화벽 서비스를 활성화 하고
systemctl enable firewalld
systemctl start firewalld

# 2. 커널에서 IP 패킷 포워딩을 허용 해 줍니다.
echo "net.ipv4.ip_forward = 1" > /etc/sysctl.d/ip_forward.conf
sysctl -p /etc/sysctl.d/ip_forward.conf

# 3. 방화벽에서 NAT MASQUERADE 설정을 할고, 설정을 반영합니다.
firewall-cmd --permanent --direct --add-rule ipv4 nat POSTROUTING 0 -o eth1 -j MASQUERADE
firewall-cmd --permanent --direct --add-rule ipv4 filter FORWARD 0 -i eth0 -o eth1 -j ACCEPT
firewall-cmd --permanent --direct --add-rule ipv4 filter FORWARD 0 -i eth1 -o eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT
firewall-cmd --reload

[일반 사설 IP만 있는 서버] PrivateIP:10.178.100.20
디폴트 라우팅만 NAT서버로 바꾸어 주면 됩니다. (AWS의 경우 라우팅 테이블을 바꾸면 되므로, 이런 걸 해 줄 필요가 없죠.)
다만 사전에 10.0.0.0/8은 원래 Default Gateway를 잘 바라보고 있는지 확인합니다. (없으면 추가 필요)

#변경 전 
[root@tf-vm ~]# ip route
default via 10.178.100.1 dev eth0
10.0.0.0/8 via 10.178.100.1 dev eth0
10.178.100.0/25 dev eth0 proto kernel scope link src 10.178.100.20
161.26.0.0/16 via 10.178.100.1 dev eth0
169.254.0.0/16 dev eth0 scope link metric 1002

#변경 후
[root@tf-vm ~]# ip route change default via 10.178.100.10
[root@tf-vm ~]# ip route
default via 10.178.100.10 dev eth0
10.0.0.0/8 via 10.178.100.1 dev eth0
10.178.100.0/25 dev eth0 proto kernel scope link src 10.178.100.20
161.26.0.0/16 via 10.178.100.1 dev eth0
169.254.0.0/16 dev eth0 scope link metric 1002

# 외부 접속이 가능한지, 그리고 외부로 나갈때 사용되는 IP를 확인해보면, NAT서버의 PublicIP를 사용함을 확인 할 수 있습니다.
[root@tf-vm ~]# curl whatismyip.akamai.com
169.56.100.5

이제 사설 IP만 있는 서버에서도 외부 Repo를 통해 업데이트를 하실 수 있습니다.


https 디버깅할려니 필요해서..

출처: https://manuals.gfi.com/en/kerio/connect/content/server-configuration/ssl-certificates/adding-trusted-root-certificates-to-the-server-1605.html

Adding trusted root certificates to the server

If you want to send or receive messages signed by root authorities and these authorities are not installed on the server, you must add a trusted root certificatemanually.

Use the following steps to add or remove trusted root certificates to/from a server.

Mac OS X

FunctionMethod
Add

Use command:

sudo security add-trusted-cert -d -r trustRoot -k /Library/Keychains/System.keychain ~/new-root-certificate.crt

Remove

Use command:

sudo security delete-certificate -c "<name of existing certificate>"

Windows

FunctionMethod
Add

Use command:

certutil -addstore -f "ROOT" new-root-certificate.crt

Remove

Use command:

certutil -delstore "ROOT" serial-number-hex

Linux (Ubuntu, Debian)

FunctionMethod
Add
  1. Copy your CA to dir /usr/local/share/ca-certificates/
  2. Use command: sudo cp foo.crt /usr/local/share/ca-certificates/foo.crt
  3. Update the CA store: sudo update-ca-certificates
Remove
  1. Remove your CA.
  2. Update the CA store: sudo update-ca-certificates --fresh

NOTE

Restart Kerio Connect to reload the certificates in the 32-bit versions or Debian 7.

Linux (CentOs 6)

FunctionMethod
Add
  1. Install the ca-certificates package: yum install ca-certificates
  2. Enable the dynamic CA configuration feature: update-ca-trust force-enable
  3. Add it as a new file to /etc/pki/ca-trust/source/anchors/: cp foo.crt /etc/pki/ca-trust/source/anchors/
  4. Use command: update-ca-trust extract

NOTE

Restart Kerio Connect to reload the certificates in the 32-bit version.

Linux (CentOs 5)

FunctionMethod
Add

Append your trusted certificate to file /etc/pki/tls/certs/ca-bundle.crt

cat foo.crt >>/etc/pki/tls/certs/ca-bundle.crt

NOTE

Restart Kerio Connect to reload the certificates in the 32-bit version.



IBM은 2017 회복하려 했으나... 완전 추락..

2018은 구글이 재도약, 

알리바바, IBM, Oracle Niche로 밀려남.


Leaders : AWS, MS, Google 그냥 3강체계

Niche : IBM , Oracle , Alibaba Cloud 


Magic Quadrant for Cloud Infrastructure as a Service, Worldwide


'Cloud' 카테고리의 다른 글

Terraform에서 user_data를 파일로 지정하고 싶을 때  (0) 2018.06.14
cloud-init example  (0) 2018.06.13
Magic Quadrant for IaaS, Worldwide  (0) 2018.05.29

+ Recent posts