I'm behind a firewall with incoming connections blocked on all ports. I'd like to run an Apache Web Server on my machine. Is it possible to configure a free public proxy server to forward the incoming connections to my local server through the firewall?
3 Answers
If outgoing connections are relatively open, you can ask ssh(1)
to create tunnels for you.
ssh -R *:8888:localhost:80 [email protected]
Now, connections to proxyserver.example.com:8888
should be forwarded to your local port 80. The details from the ssh(1)
manpage:
-R [bind_address:]port:host:hostport
Specifies that the given port on the remote (server) host
is to be forwarded to the given host and port on the
local side. This works by allocating a socket to listen
to port on the remote side, and whenever a connection is
made to this port, the connection is forwarded over the
secure channel, and a connection is made to host port
hostport from the local machine.
Port forwardings can also be specified in the
configuration file. Privileged ports can be forwarded
only when logging in as root on the remote machine. IPv6
addresses can be specified by enclosing the address in
square braces or using an alternative syntax:
[bind_address/]host/port/hostport.
By default, the listening socket on the server will be
bound to the loopback interface only. This may be
overridden by specifying a bind_address. An empty
bind_address, or the address ‘*’, indicates that the
remote socket should listen on all interfaces.
Specifying a remote bind_address will only succeed if the
server's GatewayPorts option is enabled (see
sshd_config(5)).
If the port argument is ‘0’, the listen port will be
dynamically allocated on the server and reported to the
client at run time.
You don't need a proxy outside of the firewall blocking your machine, because if no one else can connect to your machine how can the proxy? All you need to do is make an exception in the firewall to forward ports to your server. If you have access to the router that is acting as a firewall, log in and turn on port forwarding, forward port 80 from the router to your LAN address.
If you don't have access to whatever is acting as the firewall there is no way anyone outside your LAN can access your machine unless you connect to the outside world first. An example of this is SSH tunelling, which judging by your question might be too complex to implement.
You can use VPN service with port forwarding support for this. Here is example https://www.privateinternetaccess.com/pages/client-support/ although you can't enable it for 80 port but it will work with the port they provide.