iptables: NAT 없이 패킷을 다른 IP로 리디렉션

iptables: NAT 없이 패킷을 다른 IP로 리디렉션

집 연결에 여러 공용 IP를 갖기 위해 여러 IP가 있는 VPS를 임대하고 openvpn 서버와 공용 IP가 필요한 집의 모든 서버를 설정하고 VPN 연결을 갖추고 DNAT/SNAT를 수행하고 있습니다. VPS에서 openvpn을 통해 특정 공용 IP로 향하는 트래픽을 내 홈 서버로 리디렉션합니다.

-A PREROUTING -d xxx.xxx.xxx.xxx/32 -j DNAT --to-destination 172.17.0.6
-A POSTROUTING -s 172.17.0.6/32 -j SNAT --to-source xxx.xxx.xxx.xxx

메일 서버/네트워크 등에서 1년 넘게 이런 식으로 작동해 왔는데... 꽤 멋지네요.

한 가지 문제가 있습니다. 내 서버로 들어오는 패킷이 VPN 서버 IP와 관련되어 있으므로 IP 기반 액세스 목록을 사용할 수 없으며 메일 서버에서 RBL을 사용할 수도 없습니다.

NAT 없이 트래픽을 리디렉션하도록 iptable에 지시하는 방법이 있습니까?

내 클라이언트에서 기본 게이트웨이는 VPN 서버이므로 어쨌든 패킷은 VPN으로 돌아갑니다.

감사해요

답변1

소스 대신 대상을 변경하려면 "SNAT" 규칙을 제거하면 됩니다.

질문을 주의깊게 읽지 못해 죄송합니다.

내 서버 yyyy가 xxxx를 핑하고 있고 내 VPN 서버에 나타나고 "대상 xxxx를 172.17.0.6으로 전송하고 내 홈 서버에서 소스가 172.17.0.1인 패킷을 수신합니다"라고 가정해 보겠습니다.

DNAT오직소스가 아닌 연결의 대상을 변경하십시오. 표시되는 소스가 172.17.0.1인 경우 패킷에 영향을 미치는 문제에 나열되지 않은 다른 SNAT 또는 MASQUERADE 규칙이 있어야 합니다. 홈 서버 연결에 영향을 주지 않도록 규칙을 제거하거나 해당 범위를 제한해야 합니다.

추가 지원이 필요한 경우 관련 있다고 생각되는 규칙뿐만 아니라 서버에 대한 전체 iptables 규칙 목록을 게시하세요.

내 VPN으로 돌아가서 다시 빼앗깁니다 yyyy

아니요, (의사) 연결의 첫 번째 패킷을 처리할 때 설정된 상태 추적을 사용하여 역변환을 수행합니다. iptables nat 테이블은 연결의 첫 번째 패킷만 처리합니다.

관련 정보