iptables를 사용한 NAT는 로그의 소스 IP를 다시 작성합니다.

iptables를 사용한 NAT는 로그의 소스 IP를 다시 작성합니다.

다음과 같은 인프라가 마련되어 있습니다.

인터넷 [81.xxx 외부] 라우터 [192.168.1.1 내부]
                                    | [네트워크 192.168.1.0/24]
                                    |
                                   메일 서버 [192.168.1.2]

iptables가 있는 라우터(DD-WRT)에서. 내 메일 서버가 외부 IP에 응답하도록 하기 위해 NAT를 활성화했습니다. 나는 다음과 같은 설정을 가지고 있습니다 :

iptables -t nat -I PREROUTING -d 81.x.x.x -j DNAT --to 192.168.1.2 
iptables -t nat -I POSTROUTING -s 192.168.1.2 -j SNAT --to 81.x.x.x 
iptables -I FORWARD -d 192.168.1.2 -p tcp --dport 25 -j ACCEPT

다른 열린 포트도 마찬가지입니다.

그러나 메일이 메일 서버 접미사에 도착하면 다음 메시지가 표시됩니다.

postfix/smtpd[6964]: connect from unknown[192.168.1.1]

외부에서 들어오는 모든 메일은 내부 IP 주소의 라우터를 통해 들어오는 것으로 보입니다. IP 내부의 라우터 대신 원래 IP 주소가 표시되도록 내가 무엇을 놓치고 있습니까?

답변1

처음 두 개의 iptables 규칙을 사용하여 1:1 NAT를 설정한 것으로 보이지만 그 다음에는 다소 흥미로운 세 번째 규칙을 추가했습니다.

iptables -I FORWARD -d 192.168.1.2 -p tcp --dport 25 -j ACCEPT

이러한 규칙은 1:1 NAT를 수행할 때 필요하지 않으며 실제로 유용한 작업도 수행하지 않습니다. 제공해 주신 정보 중 이것이 문제의 원인일 가능성이 가장 높은 것으로 보입니다. 간단히 제거하십시오.

iptables -D FORWARD -d 192.168.1.2 -p tcp --dport 25 -j ACCEPT

답변2

이전에도 이와 같은 ISTR의 이상한 점이 있었지만 말씀하신 대로 뭔가 빠졌습니다. 다음 정보는 라우터에서 유용할 수 있습니다.

iptables -t nat -L -n
iptables -L -n
ip route

메일 서버에서는 다음과 같습니다.

iptables -t nat -L -n
ip route
grep . /proc/sys/net/ipv4/conf/*/rp_filter

해당 정보가 없으면 기존 방화벽을 제거하고 좀 더 구체적인 조치를 취해야 할 것 같습니다.

iptables -t nat -F  # also on server
iptables -t nat -I PREROUTING -p tcp -d 81.x.x.x --dport 25 \
    -j DNAT --to 192.168.1.2:25

그리고 메일 로그에서 무슨 일이 일어나고 있는지 확인하세요. 발신 SMTP에 SNAT가 필요한 경우 다음과 같습니다.

iptables -t nat -I POSTROUTING -p tcp -s 192.168.1.2 --dport 25 \
    -m multiport --sports 1024:65535 -j SNAT --to 81.x.x.x:25

로컬 DNS 확인자가 부족한 경우:

iptables -t nat -I POSTROUTING -p udp -s 192.168.1.2 --dport 53 \
    -j SNAT --to 81.x.x.x

관련 정보