PDA

View Full Version : Apache forwarding with proxy and mx mail records


lordshadow
13th June 2008, 17:08
Hi, I'm totally confused! :)

I am trying to setup a domain server for which was working untill I changed some settings and now everythings messed and mixed up.

Specifics: I want to create a system where I can access my main server through my domain server on the internet as it's running a different mail setup and monitoring for my network.

Outline: Internet WAN -> server1 -> server2 (where server1 is domain server and server2 is main server)

I found this thread for the proxy: http://www.howtoforge.com/forums/showthread.php?t=3116

of which I adapted to this on server1:
Virtual host setup--

OptiplexGX270T:/etc/apache2/sites-available# cat 192.168.1.51
<VirtualHost 192.168.1.51>
ServerName gx110.optiplex-networks.com
ServerAlias *.gx110.*
ProxyRequests Off
ProxyPreserveHost On
ProxyPass / http://192.168.1.51:80/
ProxyPassReverse / http://192.168.1.51:80/
</VirtualHost>


and modified proxy.conf to show:

OptiplexGX270T:/etc/apache2/mods-available# cat proxy.conf
<IfModule mod_proxy.c>
#turning ProxyRequests on and allowing proxying from all may allow
#spammers to use your proxy to send email.

ProxyRequests Off

<Proxy *>
AddDefaultCharset off
Order deny,allow
Deny from all
Allow from 192.168.1.51

# Define the character set for proxied FTP directory listings
ProxyFtpDirCharset UTF-8
</Proxy>

# Enable/disable the handling of HTTP/1.1 "Via:" headers.
# ("Full" adds the server version; "Block" removes all outgoing Via: headers)
# Set to one of: Off | On | Full | Block

ProxyVia On
</IfModule>


Now I have squirrelmail installed which I setup as a virtual host so that mail.mydomain.com will point to it and it works fine internally through the DNS server config in my Cisco router but when I try to access it through internet it used to work but now it says no gateway reply. I haven't modified the router in anyway since changing to the proxy setup.

Also I have mail.gx110.mydomain.com which is meant to access server2 squirrelmail system and courier-imap system.

However in my domain setup page, I have put 2 forwarders:

Hostname Address Record Type
mail myIPaddrss in A
mail.gx110 myIP in A

then mx mail records:

Hostname Address (e.g. mail.mymailserver.com) Pref
mail mydomain.com 10
mail.gx110 mydomain.com 10

But now even say in IMAP client mail.mydomain.com doesn't work, says "can't find server"??

I had it setup with MXE record first which was:

Hostname Address
mail myIPaddrss

Then squirrelmail worked at least on my domain server but now I am totally confused and I guess this should have been two seperate posts but I hope both problems will be covered in this one :)

Thanks

lordshadow
13th June 2008, 17:49
Now I have squirrelmail installed which I setup as a virtual host so that mail.mydomain.com will point to it and it works fine internally through the DNS server config in my Cisco router but when I try to access it through internet it used to work but now it says no gateway reply. I haven't modified the router in anyway since changing to the proxy setup.

Also I have mail.gx110.mydomain.com which is meant to access server2 squirrelmail system and courier-imap system.

However in my domain setup page, I have put 2 forwarders:

Hostname Address Record Type
mail myIPaddrss in A
mail.gx110 myIP in A

then mx mail records:

Hostname Address (e.g. mail.mymailserver.com) Pref
mail mydomain.com 10
mail.gx110 mydomain.com 10

But now even say in IMAP client mail.mydomain.com doesn't work, says "can't find server"??

I had it setup with MXE record first which was:

Hostname Address
mail myIPaddrss


The WAN stuff to my domain server (server1) seems to be ok now just checked it. It takes a while to kick in and was just me being impatient, but however I still can't access the other server (server2) so this is I think the starting point!

Thanks again in advance

falko
14th June 2008, 20:43
I still can't access the other server (server2) so this is I think the starting point!

Thanks again in advance

I'm sorry, but can you describe the problem in more detail?

lordshadow
14th June 2008, 22:07
I'm sorry if I didn't make sense! :)

Basically, what I would like is get into my main server from the internet.

Now normally this would be simple: open up port 80 on the NAT in the router and it automatically forwards the ports.

However I already have a domain server hosting web and mail, but what I would like to do is connect through my main server somehow without putting Apache of the main server on a different port as it would mean that I would have to do this for all my mail as well.

By reading the post above I thought that I could do this by using proxy forwarding method in Apache but I am not sure.

Basically if I desribe it by diagram: Internet (WAN) -> Router -> server1 -> server2

for mail and www ports.

Where server1 is domain server and server2 is main server.

Is this even possible??

falko
15th June 2008, 14:40
I'm not sure if this is possible for SMTP, but for HTTP, this link might give you the idea: http://www.howtoforge.com/apache_reverse_proxy_ispconfig :)

lordshadow
15th June 2008, 22:08
Thanks alot for the link it gave me alot of ideas :) unfortunately when I tried to implement they didn't work :(

Ok so the way I understand the link is that if you have machine1 and machine2 and you are trying to get into machine2 from machine1 you need to create a proxy in apache2 virtual host not the apache2.conf file.

Initially I added this config to machine2:


NameVirtualHost *
<VirtualHost *>
ServerAdmin root@localhost
ServerName gx110.optiplex-networks.com
ServerAlias *.gx110.*
DocumentRoot /var/www/
ProxyRequests Off

<Proxy *>
Order deny,allow
Allow from all
</Proxy>

#ProxyPass / http://gx110.optiplex-networks.com:80/
#ProxyPassReverse / http://gx110.optiplex-networks.com:80/
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>


However when the two lines were un-commented I got a proxy error which was caused by a loop since the URL's in the two lines point to themselves! (as we are on machine2 from above :) )

Anyway so I left the config as is above and I don't get any more errors although I probably don't need the proxy config.

Now for machine1 I made the following virtual host:


<VirtualHost gx110.optiplex-networks.com>
ServerName gx110.optiplex-networks.com
ServerAlias *.gx110.*
ProxyRequests Off
#ProxyPreserveHost On
<Proxy *>
Order deny,allow
Allow from optiplex-networks.com
</Proxy>

ProxyPass / http://192.168.1.51:80/
ProxyPassReverse / http://192.168.1.51:80/
</VirtualHost>


But however from internet it still doesn't pass the URL *.gx110.mydomain.com, it keeps resolving to the local host on machine1 when it's supposed to forward from machine1 to machine2.

I'm lost! I have no idea why it isn't working as I'm using the same config concept as in your link to ispconfig.

falko
16th June 2008, 15:26
You need the reverse proxy configuration only on machine 1.
Any errors in the Apache error log on machine 1?

lordshadow
16th June 2008, 16:22
Here is what is in the last part of my apache error.log:


[Sun Jun 15 21:52:10 2008] [error] [client 82.132.136.200] File does not exist: /usr/share/squirrelmail/favicon.ico
[Sun Jun 15 21:53:46 2008] [error] [client 82.132.136.200] File does not exist: /usr/share/squirrelmail/favicon.ico
[Sun Jun 15 21:56:45 2008] [error] [client 82.132.136.208] File does not exist: /usr/share/squirrelmail/favicon.ico
[Sun Jun 15 21:57:16 2008] [error] [client 82.132.136.208] File does not exist: /usr/share/squirrelmail/favicon.ico
[Sun Jun 15 23:17:00 2008] [error] [client 87.252.230.54] client sent HTTP/1.1 request without hostname (see RFC2616 section 14.23): *
[Sun Jun 15 23:17:01 2008] [error] [client 212.57.189.58] client sent HTTP/1.1 request without hostname (see RFC2616 section 14.23): *
[Sun Jun 15 23:17:02 2008] [error] [client 213.227.253.158] client sent HTTP/1.1 request without hostname (see RFC2616 section 14.23): *
[Sun Jun 15 23:17:02 2008] [error] [client 81.214.106.73] client sent HTTP/1.1 request without hostname (see RFC2616 section 14.23): *
[Sun Jun 15 23:17:05 2008] [error] [client 90.189.103.164] client sent HTTP/1.1 request without hostname (see RFC2616 section 14.23): *
[Sun Jun 15 23:17:07 2008] [error] [client 213.172.87.25] client sent HTTP/1.1 request without hostname (see RFC2616 section 14.23): *
[Sun Jun 15 23:24:41 2008] [error] [client 82.132.136.207] File does not exist: /usr/share/squirrelmail/favicon.ico
[Sun Jun 15 23:26:10 2008] [error] [client 82.132.136.207] File does not exist: /var/www/favicon.ico
[Sun Jun 15 23:26:52 2008] [error] [client 82.132.136.207] File does not exist: /var/www/cacti
[Sun Jun 15 23:26:52 2008] [error] [client 82.132.136.207] File does not exist: /var/www/favicon.ico
[Sun Jun 15 23:40:08 2008] [error] [client 82.132.136.207] File does not exist: /usr/share/squirrelmail/favicon.ico
[Sun Jun 15 23:40:34 2008] [error] [client 82.132.136.207] File does not exist: /usr/share/squirrelmail/favicon.ico
[Mon Jun 16 07:20:15 2008] [error] [client 74.6.18.222] File does not exist: /var/www/robots.txt
[Mon Jun 16 07:36:47 2008] [error] [client 74.6.18.222] File does not exist: /var/www/index_history.html
[Mon Jun 16 09:01:19 2008] [error] [client 64.238.113.82] client sent HTTP/1.1 request without hostname (see RFC2616 section 14.23): /w00tw00t.at.ISC.SANS.DFind:)
[Mon Jun 16 11:33:12 2008] [error] [client 74.6.18.222] File does not exist: /var/www/robots.txt
[Mon Jun 16 15:30:22 2008] [error] [client 89.169.74.56] client sent HTTP/1.1 request without hostname (see RFC2616 section 14.23): *


Of machine1.


You need the reverse proxy configuration only on machine 1


Did I understand correctly that I need this line:

#ProxyPass / http://gx110.optiplex-networks.com:80/

but not this one:

#ProxyPassReverse / http://gx110.optiplex-networks.com:80/
on machine2, while machine1 stays as posted above??

lordshadow
19th June 2008, 01:19
Ok since I was still getting the same result I thought of using the exact same principle from the howto in the link given earlier.

I changed Apache's listening port to 81

My deafult file in apache2/sites-enabled now looks like this:


NameVirtualHost *
<VirtualHost *>
ServerAdmin root@localhost
ServerName gx110.optiplex-networks.com
ServerAlias gx110.*
DocumentRoot /var/www/
ProxyRequests Off

<Proxy *>
Order deny,allow
Allow from all
</Proxy>

ProxyPass / http://gx110.optiplex-networks.com:81/
ProxyPassReverse / http://gx110.optiplex-networks.com:81/
<Directory />
Options FollowSymLinks
AllowOverride All
</Directory>
<Directory /var/www/>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from All
# This directive allows us to have apache2's default start page
# in /apache2-default/, but still have / go to the right place
#RedirectMatch ^/$ /apache2-default/
</Directory>

ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory "/usr/lib/cgi-bin">
AllowOverride None
Options ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
</Directory>

ErrorLog /var/log/apache2/error.log

# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn

CustomLog /var/log/apache2/access.log combined
ServerSignature On

Alias /doc/ "/usr/share/doc/"
<Directory "/usr/share/doc/">
Options Indexes MultiViews FollowSymLinks
AllowOverride None
Order deny,allow
Deny from all
Allow from 127.0.0.0/255.0.0.0 ::1/128
</Directory>

#ServerName gx110.optiplex-networks.com
#ServerAlias *.gx110.*
#ProxyRequests On
#ProxyPreserveHost On
#ProxyPass / http://192.168.1.51/
#ProxyPassReverse / http://192.168.1.51/


</VirtualHost>


I also changed the mods-enabled/proxy.conf so that the begining now looks like:


<IfModule mod_proxy.c>
#turning ProxyRequests on and allowing proxying from all may allow
#spammers to use your proxy to send email.

ProxyRequests Off

<Proxy *>
AddDefaultCharset off
Order deny,allow
Deny from all
Allow from All


I'm sure I'm missing something as the proxy doesn't work either let alone externally from another machine which is what I tried to do in the begining.

Upon http://gx110.mydomain.com I get: Unable to connect

but if I input http://gx110.mydomain.com:81 I get:

Proxy Error
The proxy server received an invalid response from an upstream server.
The proxy server could not handle the request GET /.

Reason: Max-Forwards has reached zero - proxy loop?

What have I missed or messed up??? I really hope someone can help!