본문 바로가기
Server/Linux Server

[Linux Server] Linux firewall - NAT

by JINJINC 2023. 4. 7.
728x90
반응형

     NAT       

1. SNAT (Source Network Address Translation) : 사설 IP --> 공용

 

IP SNAT는 하나의 IP를 공유하여 여러 호스트들이 인터넷 통신을 가능하게 해주는 방식이다.

기본적으로 출발지 주소를 변경하는 방법으로 동작을 한다. SNAT는 nat 테이블에 있는 POSTROUTING chain 에서만 의미가 있다.

 

2. DNAT (Destination Network Address Translation) : 공용IP --> 사설IP

 

DNAT의 기능은 위에도 설명했다시피 목적지 주소를 변경하는 것이다. NAT 서버 뒤에 웹서버나 FTP, 메일 서버를 운영하여야 할때에는 SNAT를 사용해서는 접속을 할 수가 없다

DNAT는 nat테이블에 있는 PREROUTING 또는 OUTPUT 에서만 의미가 있다.

DNAT를 설정시 NAT 테이블 설정 -> filter 테이블의 FORWARD 설정 순으로 한다.

 

3. REDIRECT 타겟

특별한 DNAT의 예로서 SNAT나 DNAT와 달리 패킷을 다른 서버의 특정 포트로 포워딩 하지 않고 자기 자신(localhost)의 다른 포트로 포워딩 할때 사용한다.

REDIRECT는 nat 테이블에 있는 PREROUTING 또는 OUTPUT 에서만 의미가 있다

 

 

NAT( MASQUERADE)

SNAT  (외부 ---> 내부)

내부 ip들이 외부로 나갈때 하나의 ip주소를 공용으로 사용하게 함으로써 외부의 침입을 차단할 수 있습니다. 

firewall -Linux 에서 

# iptables -A POSTROUTING -t nat -s 192.168.10.0/24 -j MASQUERADE

# iptables -nL -t nat

 

# service iptables save

# service iptables stop

# service iptables start

 

 

 

라우터로 나가는 방향의 주소는 모두 192.168.10.0/24 대역대의 주소들인 모두 output 방향을 거쳐가면 그 포트의 ip로 통일 되어 나가게 됩니다. 

nat의 결과

 

 

 

NAT(PREROUTING) 

DNAT (내부 ---> 외부)

내부의 주소와 외부의 주소를 다르게 하여 나의 ip주소를 알려주지 않는 방법으로 해킹의 위험에서 벗어납니다.

 

<Linux Firewall >

위의 설정들은 지워주고 

 

cd /etc/sysconfig/network-scripts

cp ifcfg-eth0  ifcfg-eth0:0

cp ifcfg-eth0  ifcfg-eth0:1  => 내용 복사하기 

ifcfg-eth0:0
ifcfg-eth0:1

추가로 eth0:0-1 의 파일을따로 생성하여 줍니다. ifdown ifup 으로 활성화도 시켜줍니다.

 

 

# iptables -A PREROUTING -t nat -d 192.168.20.110 -p tcp --dport 80 -j DNAT --to-destination 192.168.10.1

=>  192.168.10.1은 외부에서 192.168.20.110의 주소를 사용하게됩니다.

# iptables -A PREROUTING -t nat -d 192.168.20.120 -p tcp --dport 23 -j DNAT --to-destination 192.168.10.2

=>  192.168.10.2은 외부에서 192.168.20.120의 주소를 사용하게됩니다.

 

외부에서 192.168.20.110 의 주소를 검색했을때, 192.168.10.1의 웹서버가 뜨는 것을 확인할 수 있습니다.

 

192.168.10.1에서 ss -a로 확인

192.168.10.1에서 ss -a 로 들어오는 것을 확인하였을때 30.1에서 검색은 192.168.20.110 으로 하였지만 목적지의 주소는 192.168.10.1 로 들어오는 것을 확인할 수 있습니다. 

 

192.168.30.1에서 telnet으로 192.168.20.120으로 접근하였을때

ip 주소를 192.168.20.120 으로 검색했지만, 192.168.10.2로 연결되어 접속된것을 확인할 수 있습니다.

 

 

SNAT + DNAT

 

더보기

iptable -P FORWARD DROP

iptable -P INPUT DROP

iptable -P OUTPUT DROP

iptable -A FORWARD -s 192.168.1.0/24 -j ACCEPT

iptable -A FORWARD -s 192.168.2.0/24 -j ACCEPT

iptable -A FORWARD -s 192.168.3.0/24 -j ACCEPT

iptable -A FORWARD -d 192.168.3.1 -j ACCEPT

 

iptables -A POSTROUTING -t nat -s 192.168.1.0/24 -j SNAT --to-source 211.255.25.10

iptables -A POSTROUTING -t nat -s 192.168.2.0/24 -j SNAT --to-source 211.255.25.20

iptables -A POSTROUTING -t nat -s 192.168.3.0/24 -j SNAT --to-source 211.255.25.30

iptables -A PREROUTING -t nat -d 211.255.25.40 -j DNAT --to-destination 192.168.3.1

 

# service iptables save

# service iptables stop

# service iptables  start

 

vi /etc/sysctl.conf

net.ipv4.ip_forward=1 --7행

 

# /sbin/sysctl -p 

 

 

eth 0:0~3의 포트를 생성하여 25.10~40 까지 추가해줍니다.

sr04 

 

wireshark 를 통하여 ip 를 확인할 수 있습니다. 

 

 

 

다음 시간에 계속.......

728x90
반응형

댓글