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 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
vimdiff 사용법  (0) 2018.04.21
Linux 에서 IP 추출  (0) 2018.04.21
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