SharedIT | 묻고 답하기(AMP)

Centos 7, NAT 서버 구축

안녕하세요.

리눅스 서버에서 NAT 서버 설정을 하고있습니다.


구성은

프라이빗 영역 - 퍼블릭 영역 - 인터넷

10.1.30.6           10.1.10.8

프라이빗 영역에 있는 서버들이 NAT서버를 통하여 아웃바운드는 가능하지만 외부에서 인바운드는 불가능하게 하려고 합니다.


NAT서버는 공인IP를 가지고 있고, 인터넷 통신이 가능한 상태입니다.

프라이빗 영역 서버와 퍼블릭 영역의 서버는 서로 핑 테스트가 가능한 상황이고

CENTOS7로 구성하고 있으며 iptables를 통하여 구성하고있습니다.

현재 NAT 설정

iptables -t nat -A POSTROUTING -j MASQUERADE


현재 10.1.30.6(프라이빗 영역)에서 1.1.1.1로 핑을 보낼시,

NAT 서버에서 tcpdump결과


13:50:28.836887 IP 10.1.30.6 > 1.1.1.1: ICMP echo request, id 16760, seq 5, length 64

13:50:28.836921 IP 10.1.10.8 > 1.1.1.1: ICMP echo request, id 16760, seq 5, length 64

13:50:29.836846 IP 10.1.30.6 > 1.1.1.1: ICMP echo request, id 16760, seq 6, length 64

13:50:29.836873 IP 10.1.10.8 > 1.1.1.1: ICMP echo request, id 16760, seq 6, length 64



13:50:28.838016 IP 1.1.1.1 > 10.1.10.8: ICMP echo reply, id 16760, seq 5, length 64

13:50:28.838022 IP 1.1.1.1 > 10.1.30.6: ICMP echo reply, id 16760, seq 5, length 64

13:50:29.837792 IP 1.1.1.1 > 10.1.10.8: ICMP echo reply, id 16760, seq 6, length 64

13:50:29.837809 IP 1.1.1.1 > 10.1.30.6: ICMP echo reply, id 16760, seq 6, length 64


이렇게 나오지만 핑이 돌아오지 않습니다.

퍼블릭영역의 서버가 reply 핑을 받았다가 안보내는 것인지

프라이빗 영역의 서버가 reply핑을 거절하거나 못받는 것인지 잘모르겠습니다. 

해결법을 아신다면 공유해 주실수 있을까요 ?


2개의 답변이 있습니다.

Genghis Khan
  0 추천 | 3년 이상 전

리눅스 서버 보다 앞단에 있는 방화벽 설정으로 해결 가능하겠네요. 우선 방화벽에서 icmp 비 활성화 시켜  중요 서버를 체크 못하게 하시구요

해당 nat서버에 대한 아웃바운드 정책을 세워주면 되겠네요

wansoo
  0 추천 | 3년 이상 전

traceroute ( tracert ) 명령으로 어떤 경로를 통해서 연결을 시도하는지 Test 한번해 보시고요.


cat /proc/sys/net/ipv4/ip_forward  명령을 실행해서

값이 1로  ipforward 설정이 되어 있는지도 확인해 보셔야 겠고요.

만약 0이 나온다면

echo 1 > /proc/sys/net/ipv4/ip_forward  명령을 싱행시켜서 ipforward되게 해 주시고요.


iptables -A FORWARD -o eth0 -j ACCEPT

명령을 실행시켜서 WAN port 쪽으로 forward 될 수 있게 해 주셔야 하겠고요.

  • eth0가 인터넷(공인 IP)에 연결된 네트워크일때 eth0이고, 어느 LAN 카드에 연결되어 있는지 확인해서 명령을 줘야 되겠고요.

iptables -t nat -A POSTROUTING -j MASQUERADE  명령도

iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE 와 같이 수행 시키는게 좋을 것 같네요.






wansoo | 3년 이상 전

내부 사설 IP를 가진 컴퓨터에서 tracert 1.1.1.1 을  수행 시켜서 어떤 경로를 통해서 접속 시도하고, 어디에서 막히는지를 먼저 확인해 보세요.

c0copine | 3년 이상 전

답변 감사드립니다!

현재 traceroute를 사용이 안되는 상황입니다.

traceroute 사용시 

1 * * *

2 * * * 

3 * * *

이렇게 나오고 있는 상황입니다. 그래서 nat 서버에서 dump를 이용하여 패킷 방향을 보고 있는 상황이며,  1.1.1.1까지 갔다가 nat서버로 되돌아오는 것으로 보이는데 뭐가 문제인지 잘 모르겠네요..

ipforward는 실행중에 있는 상황이며

FORWARD 구문은 인/아웃 전부 허용되어있습니다.

다른 방향을 말씀해주신다면 더 적용시켜 보겠습니다.