Port Forwarding de domain1.com:25565 para 40000 e de domain2.com:25565 para 30000

0

Eu tenho um servidor rodando na porta 30.000 e na porta 40.000 e se alguém acessa domain1.com:25565 ele deve se conectar à porta local 40.000 e se ele se conectar através de domain2.com:25565 ele deve se conectar com a porta local 30.000

domain1.com:25565 - > 37.120.174.183:25565 - > localhost: 40000

domain2.com:25565 - > 37.120.174.183:25565 - > localhost: 30000

    
por mkg20001 20.08.2015 / 08:18

3 respostas

0

Normalmente, os pacotes de entrada que tentam iniciar uma conexão não contêm o nome do domínio de destino, apenas o endereço IP de destino. Portanto, não há informações suficientes para criar regras de iptables para redirecionar os pacotes. Você não pode fazer o que está tentando fazer.

Agora, você pode estar ciente de que, com frequência, os servidores da Web podem lidar com muitos domínios diferentes, todos resolvendo um endereço IP. Isso é feito através da configuração do servidor da Web e não no nível do pacote de rede. Eventualmente, uma vez estabelecida a conexão de rede, o nome do domínio de destino é incluído e o servidor da Web pode decidir quais páginas reais o usuário está tentando acessar e responder de acordo.

    
por Doug Smythies 20.08.2015 / 09:01
0

Não é iptables solution mas funciona:)

A solução é usar apache modules mod_proxy.so e mod_proxy_http.so

Instale o mod_proxy e configure o proxy reverso no Apache Webserver

Instale o módulo

sudo apt-get install libapache2-mod-proxy-html

Instalando a dependência libxml2-dev

apt-get install libxml2-dev

Carregue o módulo

a2enmod proxy proxy_http

Crie o host virtual no arquivo de configuração do apache.

sudo nano /etc/apache2/sites-enabled/000-default

Listen 40000
Listen 30000
<VirtualHost *:25565>
        ServerName domain1.com
        ServerAlias www.domain1.com
        DocumentRoot /var/www/vhosts/domain1.com

        <Directory /var/www/vhosts/domain1.com>
                Options -Indexes FollowSymLinks -MultiViews
                AllowOverride All
                Order deny,allow
                Allow from all
        </Directory>
        CustomLog /var/log/httpd/domain1.com-access.log combined
        ErrorLog /var/log/httpd/domain1.com-error.log
        # Possible values include: debug, info, notice, warn, error, crit,
        # alert, emerg.
        LogLevel warn

        ProxyPass / http://domain1.com:40000/
        ProxyPassReverse / http://domain1.com:40000/
</VirtualHost>


<VirtualHost *:40000>
        ServerName domain1.com
        ServerAlias www.domain1.com
        #### This is where you put your files for that domain: /var/www/vhosts/domain1.com
        DocumentRoot /var/www/vhosts/domain1.com
</VirtualHost>



<VirtualHost *:25565>
            ServerName domain2.com
            ServerAlias www.domain2.com
            DocumentRoot /var/www/vhosts/domain1.com

            <Directory /var/www/vhosts/domain2.com>
                    Options -Indexes FollowSymLinks -MultiViews
                    AllowOverride All
                    Order deny,allow
                    Allow from all
            </Directory>
            CustomLog /var/log/httpd/domain2.com-access.log combined
            ErrorLog /var/log/httpd/domain2.com-error.log
            # Possible values include: debug, info, notice, warn, error, crit,
            # alert, emerg.
            LogLevel warn

            ProxyPass / http://domain2.com:30000/
            ProxyPassReverse / http://domain2.com:30000/
    </VirtualHost>


    <VirtualHost *:30000>
            ServerName domain2.com
            ServerAlias www.domain2.com
            #### This is where you put your files for that domain: /var/www/vhosts/domain2.com
            DocumentRoot /var/www/vhosts/domain2.com
    </VirtualHost>

Agora reinicie o apache

 /etc/init.d/apache2 restart

Só resta negar o acesso com iptables para a rede externa nas portas 30000 e 40000 porque apache use localhost .

    
por 2707974 20.08.2015 / 14:19
0

Embora mod-proxy do Apache possa funcionar, a melhor solução para o seu problema é usar um proxy reverso, como haproxy .

instale haproxy usando este comando:

sudo apt-get install haproxy

edite o arquivo de configuração da seguinte forma:

sudo nano /etc/haproxy.cfg

coloque essas linhas no arquivo de configuração

//Put this in the file
global
    daemon
    maxconn 4096

defaults
    mode http
    timeout connect 5000ms
    timeout client 50000ms
    timeout server 50000ms

frontend http-in
    bind *:25565
    acl is_site1 hdr_end(host) -i domain1.com
    acl is_site2 hdr_end(host) -i domain2.com

    use_backend site1 if is_site1
    use_backend site2 if is_site2

backend site1
    balance roundrobin
    option httpclose
    option forwardfor
    server s2 127.0.0.1:40000 maxconn 32

backend site2
    balance roundrobin
    option httpclose
    option forwardfor
    server s1 127.0.0.1:30000 maxconn 32

listen admin
    bind 127.0.0.1:8080
    stats enable

inicia / reinicia seu servidor usando:

sudo /usr/sbin/haproxy -f /etc/haproxy.cfg -D -p /var/run/haproxy.pid

source

    
por AliReza Mosajjal 20.08.2015 / 14:40