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와 PREROUTINGsnat와 POSTROUTINGMASQUERADE192.168.200.100) ← <내부 통신="" 인터페이스="">(`192.168.200.2`)의 포워딩 ← <외부 통신="" 인터페이스="">(`192.168.200.50`)으로 `MASQUERADE`외부>내부>