
새 웹 서버로 이동했으며 이제 다음을 사용하여 모든 트래픽을 새 서버로 리디렉션합니다.
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