masquerading
은 Source NAT에 대한 장식적인(fancy) 용어. 다른 네트워크로 소통할 수 있게 해주는 것
NAT
: 내부 네트워크에서 외부 네트워크로 나갈 때 공인 IP를 붙여주는 것
snat
: ‘내부아이피 → 외부아이피’로 변경dnat
: ‘외부 → 내부’일 때, 내부 네트워크의 특정 컴퓨터의 포트로 보내주는 것masquerade
는 간단하게 머신으로 하여금 들어온 패킷을 출력 인터페이스로 포워딩하기 전에 출처 주소와 출처 포트를 재작성하게 하는 것POSTROUTING
확인firewall-cmd
는 특히 nat 테이블의 POSTROUTING 체인에 iptables
규칙을 추가iptables -t nat -nvL POSTROUTING
을 실행해보면 뭐가 실제로 이뤄지는지 볼 수 있다Chain POSTROUTING (policy ACCEPT 15197 packets, 934K bytes)
pkts bytes target prot opt in out source destination
0 0 MASQUERADE all -- * !docker0 172.17.0.0/16 0.0.0.0/0
iptalbes
로 MASQUERADE
추가할 경우 iptables -t nat -A POSTROUTING -o <인터페이스> -j MASQUERADE
-o <인터페이스>
)에 대해, 출처 주소(source address)를 <인터페이스>
의 주소로 변경하라는 것masquerade
된 연결에 대한 패킷들은 시스템을 통해 돌아올 때 원래 주소와 포트로 복원(reinstated)된다masquerade
가 서버를 라우터로 만드는 건 아니다.항목 | 내용 |
---|---|
ipv4 | 192.168.100.50 |
SM | 255.255.255.0 |
GW | 192.168.100.2 |
DNS | 8.8.8.8 |
항목 | 내용 |
---|---|
ipv4 | 192.168.200.2 |
SM | 255.255.255.0 |
항목 | 내용 |
---|---|
ipv4 | 192.168.200.100 |
SM | 255.255.255.0 |
GW | 192.168.200.2 |
DNS | 8.8.8.8 |
// 포워딩 허용
echo 1 > /proc/sys/net/ipv4/ip_forward
// 시스템 재부팅 후에도 자동 적용
sysctl -w net.ipv4.ip_forward=1
firewall
비활성화iptaables
모든 정책 DROP으로 변경iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP
# 결과
iptables -L -t nat
Chain PREROUTING (policy DROP)
target prot opt source destination
Chain POSTROUTING (policy DROP)
target prot opt source destination
Chain OUTPUT (policy DROP)
target prot opt source destination
FORWARD
정책에 인터페이스 입/출력 허용iptables -A FORWARD -i <내부 통신 인터페이스> -j ACCEPT // <내부 통신 인터페이스>의 입력 포워딩
iptables -A FORWARD -o <내부 통신 인터페이스> -j ACCEPT // <내부 통신 인터페이스>의 출력 포워딩
iptables -n nat -A POSTROUTING -o <외부 통신 인터페이스> -j MASQUERADE // <외부 통신 인터페이스>의 출력 패킷 MASQUERADE
service iptables save
service iptables restart
dnat
와 PREROUTING
snat
와 POSTROUTING
MASQUERADE
192.168.200.100
) ← <내부 통신="" 인터페이스="">(`192.168.200.2`)의 포워딩 ← <외부 통신="" 인터페이스="">(`192.168.200.50`)으로 `MASQUERADE`외부>내부>