Linux 서버에 두 개의 IP 주소가 있는 경우 포트를 리디렉션하도록 ipable을 설정하는 방법 [닫기]

Linux 서버에 두 개의 IP 주소가 있는 경우 포트를 리디렉션하도록 ipable을 설정하는 방법 [닫기]

내 Glassfish 웹 서버가 두 개의 서로 다른 IP 주소에 웹 페이지를 제공하기를 원합니다. 내가 원하는 것은 포트를 변환하기 위해 iptable 규칙을 설정하는 것입니다.

IP#1의 경우

198.xxx.xxx.14:80   <-- redirected to --> port 8080
198.xxx.xxx.14:443  <-- redirected to --> port 8181

IP #2의 경우

199.xxx.xxx.185:80  <-- redirected to --> port 9090
199.xxx.xxx.185:443 <-- redirected to --> port 9191

그런 다음 Glassfish 서버에는 두 개의 가상 서버가 있습니다.

  • 하나는 모든 호스트의 포트 8080 및 8181에서 수신 대기합니다.
  • 다른 하나는 모든 호스트의 포트 9090 및 9191을 수신합니다.

IP 주소가 하나만 있는 Debian 서버에서 작동하는 iptables 규칙은 다음과 같습니다.

iptables -t nat -A OUTPUT -o lo -p tcp --dport 80 -j REDIRECT --to-port 8080
iptables -t nat -A OUTPUT -o lo -p tcp --dport 443 -j REDIRECT --to-port 8181
iptables -t nat -A PREROUTING -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 8080
iptables -t nat -A PREROUTING -p tcp -m tcp --dport 443 -j REDIRECT --to-ports 8181

/etc/hosts파일에는 두 개의 IP 주소가 포함되어 있습니다.

...
198.xxx.xxx.14 subdomain.mydomain1.com myservername1
127.0.0.1 localhost.localdomain localhost
# Auto-generated hostname. Please do not remove this comment.
199.xxx.xxx.185 mydomain2.org  myservername2

그리고 /etc/network/interfaces아래와 같이 네트워크 어댑터 바인딩이 이미 포함되어 있습니다.

...
auto venet0:0
iface venet0:0 inet static
    address 199.xxx.xxx.185
    netmask 255.255.255.255

auto venet0:6
iface venet0:6 inet static
    address 198.xxx.xxx.14
    netmask 255.255.255.255
...

답변1

iptables -t nat -A PREROUTING -p tcp -m tcp -d 198.xxx.xxx.14 --dport 80 -j REDIRECT --to-ports 8080
iptables -t nat -A PREROUTING -p tcp -m tcp -d 198.xxx.xxx.14 --dport 443 -j REDIRECT --to-ports 8181
iptables -t nat -A PREROUTING -p tcp -m tcp -d 198.xxx.xxx.185 --dport 80 -j REDIRECT --to-ports 9090
iptables -t nat -A PREROUTING -p tcp -m tcp -d 198.xxx.xxx.185 --dport 443 -j REDIRECT --to-ports 9191

이는 다른 호스트로부터 들어오는 트래픽을 처리합니다. 로컬 액세스의 경우 모호함을 피하기 위해 OUTPUT 규칙을 완전히 제거하고 실제 포트 번호를 사용하는 것이 좋습니다. 또는 127.0.0.1:80 또는 127.0.0.1:443에 연결할 때 액세스하려는 두 개의 포트를 선택하고 해당 포트에 대한 두 개의 출력 규칙을 설정하면 됩니다.

관련 정보