eth1에 추가 IP를 셋팅한다.

cat << EOF > /etc/sysconfig/network-scripts/ifcfg-eth1:1

DEVICE=eth1:1

GATEWAY=169.56.100.1

IPADDR=169.56.100.100

NETMASK=255.255.255.0

ONBOOT=yes

EOF


#Full NAT 설정

systemctl start firewalld

systemctl enable firewalld

systemctl restart NetworkManager


echo "net.ipv4.ip_forward = 1" > /etc/sysctl.d/ip_forward.conf

sysctl -p /etc/sysctl.d/ip_forward.conf



#Full NAT Setting

function fullnat() {

  local LOCAL_DEV=$1

  local LOCAL_IP=$2

  local DEST_DEV=$3

  local DEST_IP=$4

  firewall-cmd --direct --permanent --add-rule ipv4 nat PREROUTING 1 -i ${LOCAL_DEV} -d ${LOCAL_IP} -j DNAT --to-destination ${DEST_IP}

  firewall-cmd --direct --permanent --add-rule ipv4 nat POSTROUTING 0 -o ${DEST_DEV} -s ${DEST_IP} -j SNAT --to-source ${LOCAL_IP}

  firewall-cmd --direct --permanent --add-rule ipv4 filter FORWARD 0 -s ${LOCAL_IP} -j ACCEPT

  firewall-cmd --direct --permanent --add-rule ipv4 filter FORWARD 0 -d ${DEST_IP} -j ACCEPT

}


#Public -> Private

fullnat eth1 169.56.100.100 eth0 10.10.5.5

#Public -> Public 

fullnat eth1 169.56.100.100 eth1 13.125.100.100

#Private -> Private

fullnat eth0 10.100.10.10 eth0 10.10.5.5

#Private -> Public

fullnat eth0 10.10.5.5 eth1 169.56.100.100


#Bonded Private -> Private

fullnat bond0 10.100.10.10 bond0 10.10.5.5



'OS > Linux' 카테고리의 다른 글

CENTOS 7 , firewall-cmd Port forwarding  (0) 2019.04.05
nodejs 설치 in CentOS  (0) 2019.03.21
CentOS 7 Full NAT 설정, Secondary IP 추가  (0) 2018.11.05
pdnsd로 DNS Proxy 설정하기  (0) 2018.11.05
firewalld 설정  (0) 2018.11.04
SAMBA 설치 at CentOS 7  (0) 2018.08.29
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를 통해 업데이트를 하실 수 있습니다.


+ Recent posts