
이에 대해 많은 질문이 있다는 것을 알고 있지만 여전히 작동하도록 애쓰고 있습니다.
3개의 외부 IP가 있는 방화벽이 있습니다. (보안을 위해 IP는 무작위로 변경되었습니다.)
eth0 Link encap:Ethernet HWaddr 50:46:5d:64:ed:e4
inet addr:51.215.232.147 Bcast:51.215.232.159 Mask:255.255.255.240
inet6 addr: fe80::5246:5dff:fe64:ede4/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:70219084 errors:0 dropped:17443 overruns:0 frame:0
TX packets:63956103 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:51508818511 (51.5 GB) TX bytes:27933240304 (27.9 GB)
eth0:1 Link encap:Ethernet HWaddr 50:46:5d:64:ed:e4
inet addr:51.215.232.148 Bcast:51.215.232.159 Mask:255.255.255.240
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
eth0:2 Link encap:Ethernet HWaddr 50:46:5d:64:ed:e4
inet addr:51.215.232.150 Bcast:51.215.232.159 Mask:255.255.255.240
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
그리고 저는 다음과 같은 간단한 규칙을 가지고 있습니다.
# Generated by iptables-save v1.4.10 on Sat Mar 3 14:48:42 2012
*filter
:INPUT ACCEPT [13766:4986720]
:FORWARD ACCEPT [992:122980]
:OUTPUT ACCEPT [11894:5582822]
-A FORWARD -s 172.16.0.0/16 -o eth0 -j ACCEPT
-A FORWARD -d 172.16.0.0/16 -i eth0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
COMMIT
# Completed on Sat Mar 3 14:48:42 2012
# Generated by iptables-save v1.4.10 on Sat Mar 3 14:48:42 2012
*nat
:PREROUTING ACCEPT [77:8206]
:INPUT ACCEPT [48:6367]
:OUTPUT ACCEPT [55:3300]
:POSTROUTING ACCEPT [55:3300]
-A POSTROUTING -s 172.16.0.0/16 -o eth0 -j MASQUERADE
-A POSTROUTING -s 10.10.0.0/16 -o eth0 -j MASQUERADE
-A POSTROUTING -s 10.1.0.0/16 -o eth0 -j MASQUERADE
COMMIT
# Completed on Sat Mar 3 14:48:42 2012
그래서 51.215.232.150의 모든 것을 내부 IP 172.16.5.218로 전달하고 싶습니다.
그래서 나는 이것이 효과가 있을 것이라고 생각했습니다:
iptables -t nat -I PREROUTING -p tcp -d 51.215.232.150 -j DNAT --to 172.16.5.218
하지만 아쉽게도 그렇지 않습니다.
미리 감사드립니다. 에드워드
답변1
일반적으로 FILTER 테이블을 통한 트래픽을 실제로 허용하려면 해당 FORWARD 규칙이 필요하다고 말합니다.
iptables -A FORWARD -p tcp -d 172.16.5.218 -j ACCEPT
그러나 FORWARD 테이블의 정책은 이미 ACCEPT이고 REJECT 또는 DROP 규칙이 없으므로 OK를 거쳐야 합니다.
패킷이 어디로 가는지 확인하려면 TRACE 규칙을 추가해 보세요.
iptables -t raw -I PREROUTING -p tcp -d 51.215.232.150 -j TRACE
또, 어떻게 테스트하고 있나요? 실제로 상자에 도달하는 트래픽을 볼 수 있나요?
tcpdump -lnn -i eth0 host 51.215.232.150