서버를 관리 할 때 매우 일반적인 것은 트래픽을 리디렉션하는 것입니다.
특정 서비스가 실행중인 서버가 있지만 어떤 이유로 든 해당 서비스 중 하나를 변경한다고 가정합니다 (잘 모르겠습니다. 예를 들어 포트 3 인 pop110)를 다른 서버로 전송합니다. 일반적이고 가장 빈번한 것은 DNS 레코드의 IP를 변경하는 것입니다. 그러나 누군가가 하위 도메인 대신 IP를 사용하는 경우 영향을받습니다.
무엇을해야합니까? ... 간단하게, 서버가 해당 포트를 통해 수신하는 트래픽을 동일한 포트를 가진 다른 서버로 리디렉션합니다.
트래픽 리디렉션을 어떻게 시작합니까?
첫 번째는 우리가 전송 이를 위해 서버에 다음을 넣습니다.
echo "1" > /proc/sys/net/ipv4/ip_forward
이전 명령이 작동하지 않는 경우이 다른 명령을 사용할 수도 있습니다 (CentOS에서 이런 일이 나에게 일어났습니다.):
sysctl net.ipv4.ip_forward=1
그런 다음 네트워크를 다시 시작합니다.
service networking restart
CentOS 및 기타와 같은 RPM 배포판에서는 다음과 같습니다.
service nertwork restart
이제 중요한 부분으로 넘어 가서 서버에 iptables에 리디렉션 할 항목 :
iptables -t nat -A PREROUTING -p tcp --dport <puerto receptor> -j DNAT --to-destination <ip final>:<puerto de ip final>
즉, 앞서 언급 한 예에 따라 서버가 110 번 포트를 통해 수신하는 모든 트래픽을 다른 서버로 리디렉션한다고 가정합니다 (예 : 10.10.0.2), 110 (동일한 서비스입니다):
iptables -t nat -A PREROUTING -p tcp --dport 110 -j DNAT --to-destination 10.10.0.2:110
10.10.0.2 서버는 모든 패킷 또는 요청이 클라이언트의 IP에서 오는 것을 볼 수 있습니다. 즉, 요청을 처리하려는 경우 즉, 두 번째 서버는 요청이 첫 번째 서버의 IP와 함께 도착하는 것을 확인합니다. 리디렉션을 적용합니다), 다음 두 번째 줄도 입력합니다.
iptables -t nat -A POSTROUTING -j MASQUERADE
몇 가지 질문과 답변
이 예에서는 동일한 포트를 두 번 (110) 사용했지만 문제없이 한 포트에서 다른 포트로 트래픽을 리디렉션 할 수 있습니다. 예를 들어 다른 서버의 포트 80에서 443으로 트래픽을 리디렉션한다고 가정합니다.이 경우 다음과 같습니다.
iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to-destination 10.10.0.2:443
이것은 iptables에, 그들은 우리가 알고있는 다른 모든 매개 변수를 사용할 수 있습니다. 예를 들어, 특정 IP의 트래픽 만 리디렉션하려는 경우 -s를 추가합니다. … 예를 들어 10.10.0.51에서 오는 트래픽 만 리디렉션합니다.
iptables -t nat -A PREROUTING -p tcp -s 10.10.0.51 --dport 80 -j DNAT --to-destination 10.10.0.2:443
또는 전체 네트워크 (/ 24) :
iptables -t nat -A PREROUTING -p tcp -s 10.10.0.0/24 --dport 80 -j DNAT --to-destination 10.10.0.2:443
-i로 네트워크 인터페이스를 지정할 수도 있습니다. :
iptables -t nat -A PREROUTING -p tcp -i eth1 --dport 80 -j DNAT --to-destination 10.10.0.2:443
끝!
이것은 이미 말했듯이 iptables입니다. 이미 알려진 내용을 적용하여 서버가 원하는 작업을 정확하게 수행하도록 할 수 있습니다.
안녕하십니까!