2016-11-29 8 views
0

우리는 Proxmox vitual environmenet 마녀의 가상 컴퓨터를 가지고 있습니다. 호스트 서버에는 여러 개의 외부 IP 주소가 있습니다. iptables를 사용하여 특정 외부 IP + 포트에 대한 연결을 선택한 가상 시스템에 전달합니다. 또한 VM에서 나가는 연결에 NAT를 사용합니다.iptables 뒤에있는 로컬 네트워크에서 외부 IP에 연결할 수 없습니다. NAT

지금까지 모든 것이 작동합니다. VM이 작동하지 않는 외부 IP 호스트에 연결하려고하면 문제가 발생합니다.

내가 아는 한은 머리핀 NAT (NAT 반영)입니다. 그러나 우리가 발견 한 지침에 따라 작동시킬 수는 없습니다.

우리의 iptables 규칙 :

# === FIREWALL === 
*filter 
:INPUT ACCEPT [3174:1555907] 
:FORWARD ACCEPT [2521:547542] 
:OUTPUT ACCEPT [2753:2039466] 
:fail2ban-ssh - [0:0] 

# allow returnig packets 
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT 
# drop all other 
-A INPUT -p tcp -d 1.2.3.4/32 -j DROP 

COMMIT 

# === NAT === 

*nat 
:PREROUTING ACCEPT [140854:7345476] 
:POSTROUTING ACCEPT [2635:170444] 
:OUTPUT ACCEPT [25596:1617170] 

# INCOMING 
-A PREROUTING -d 1.2.3.4/32 -p tcp -m tcp --dport 80 -j DNAT --to-destination 10.0.60.10:80 
-A PREROUTING -d 1.2.3.4/32 -p tcp -m tcp --dport 443 -j DNAT --to-destination 10.0.60.10:443 
-A PREROUTING -d 1.2.3.4/32 -p tcp -m tcp --dport 8080 -j DNAT --to-destination 10.0.60.20:80 

# OUTGOING 
-A POSTROUTING -d 10.0.60.10 -s 10.0.0.0/16 -p tcp --dport 80 -j SNAT --to 10.0.0.1 
-A POSTROUTING -o vmbr0 -j SNAT --to-source 1.2.3.4 

COMMIT 

1.2.3.4 - 호스트

10.0.60.10, 10.0.60.20의 외부 IP - VM을

의 내부 IP를

10.0.0.1 -의 내부 IP 호스트

답변

0
iptables -A POSTROUTING -t nat -s 10.0.0.0/16 -d 1.2.3.4 -j MASQUERADE 
+0

아무튼 '작업. 나는 이미 비슷한 규칙을 시도했다 (모든 가상 머신에 대해 -s 10.0.0.0/16 만 사용). –

+0

그런 다음'iptables -A PREROUTING -t nat -s 10.0.0.0/16 -d 1.2.3.4 -j DNAT - 10.0 .60.10' (실수로) –

+0

대체해야합니까? -A PREROUTING -d 1.2.3.4/32 -p tcp -m tcp -dport 80 -j DNAT - 목적지 10.0.60.10:80 –

0

해결했습니다! 나는 내 편이성이었다. 머리 핀의 자형 NAT에 대한

이 협력 솔루션 : 하나

# === FIREWALL === 
*filter 
:INPUT ACCEPT [3174:1555907] 
:FORWARD ACCEPT [2521:547542] 
:OUTPUT ACCEPT [2753:2039466] 
:fail2ban-ssh - [0:0] 

# allow returnig packets 
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT 
# drop all other 
-A INPUT -p tcp -d 1.2.3.4/32 -j DROP 

COMMIT 

# === NAT === 

*nat 
:PREROUTING ACCEPT [140854:7345476] 
:POSTROUTING ACCEPT [2635:170444] 
:OUTPUT ACCEPT [25596:1617170] 

# INCOMING 
-A PREROUTING -d 1.2.3.4/32 -p tcp -m tcp --dport 80 -j DNAT --to-destination 10.0.60.10:80 
-A PREROUTING -d 1.2.3.4/32 -p tcp -m tcp --dport 443 -j DNAT --to-destination 10.0.60.10:443 
-A PREROUTING -d 1.2.3.4/32 -p tcp -m tcp --dport 8080 -j DNAT --to-destination 10.0.60.20:80 

# OUTGOING 
-A POSTROUTING -s 10.0.0.0/16 -d 10.0.0.0/16 -p tcp -j SNAT --to-source 10.0.0.1 
-A POSTROUTING -o vmbr0 -j SNAT --to-source 1.2.3.4 

COMMIT