iptables를 사용하여 한 포트를 제외한 모든 것을 다른 서버로 다시 라우팅

iptables를 사용하여 한 포트를 제외한 모든 것을 다른 서버로 다시 라우팅

새 웹 서버로 이동했으며 이제 모든 트래픽을 새 서버로 리디렉션합니다.

echo "1" > /proc/sys/net/ipv4/ip_forward
#clear old rules:
iptables -F
iptables -t nat -F
#masquerade and redirect everything:
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
iptables -t nat -A PREROUTING -i eth0 -d 1.1.1.1 -j DNAT --to-destination 2.2.2.2

모든 DNS 항목이 널리 전파될 때까지는 제대로 작동합니다. 하지만 이제 더 이상 기존 컴퓨터에 로그인할 수 없습니다.

이전 서버 1.1.1.1에서 SSH 포트를 어떻게 열어두나요?

답변1

iptables에서는 첫 번째 일치 규칙이 우선합니다. 따라서 규칙의 올바른 순서가 중요합니다.

이 경우 포트 22의 트래픽을 처리하기 위한 규칙을 만들어야 합니다.앞으로"다른 모든 것"을 처리하는 방법을 지시하는 규칙입니다. 체인의 정책이 기본값과 동일하면 RETURN이 작동하지만 "정상 처리"의 동의어로 ACCEPT를 명시적으로 사용하는 것이 더 명확할 수 있습니다.

echo "1" > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
iptables -t nat -A PREROUTING -i eth0 -m tcp -p tcp --dport 22 -j ACCEPT
iptables -t nat -A PREROUTING -i eth0 -d 1.1.1.1 -j DNAT --to-destination 2.2.2.2

관련 정보