0

On our router (which has WiFi), we have one ethernet port which is currently being used by my laptop. I need my raspberry pi model B rev. 2 connected to the network as well, but it doesn't use WiFi. (My laptop can, but i prefer ethernet.) I don't want to purchase a network switch, so what I've been doing is sharing our family Macbook Pro's WiFi connection using internet sharing, and connecting the pi to the Macbook over ethernet. The pi now has internet, but here's the catch: I want to run a web server on the pi, and be able to access it from my laptop. Is there a way to port forward over internet sharing?

P.S. If it helps, the web server will be running on port 8080.

To visualize the setup:

 Home Router --+-- WiFi  -- MBP* -- Ether -- Pi
               |
               +-- Ether -- Laptop


 * Internet Sharing 
9
  • Unfortunately, I won't be able to x11forward ssh into the mac and type in the pi's ip, because i haven't installed a browser that uses x11, and i dont want to. – Lennon McLean Jul 20 '20 at 1:35
  • I think i found my answer at this link. however, im not certain it will work so help is still appreciated. apple.stackexchange.com/questions/156847/… Edit: Nvm, natd does not exsist any more :( – Lennon McLean Jul 20 '20 at 2:06
  • If I understand you config correctly, you have a double NAT issue which causes all sorts of problems. There's a a NAT behind your router and and one one behind your Mac so the Pi is double NAT’ed. Get an inexpensive switch - port forwarding will be problematic at best – Allan Jul 20 '20 at 11:54
  • there is no nat in the macbook. if you could tell me how to forward port 8080 on the raspberry pi so that all tue other computers in my network (namely my laptop) can access it, that would be great. if you cant, then this question isn't for you. – Lennon McLean Jul 20 '20 at 11:58
  • You simply can’t have internet saring without a NAT network. What’s the IP addresses of all your interfaces including the Pi? – Allan Jul 20 '20 at 12:20
1

I got it! I wrote a node.js script, like so, to redirect requests on port 8080 of the macbook to port 8080 of the raspberry pi. the pi's ip is 192.168.2.7.
the script:

var net = require('net');
net.createServer(function(socket) {
  var raspberrypi = net.connect(8080, '192.168.2.7');
  raspberrypi.on('connect', function() {
    raspberrypi.on('data', function(data) {
      socket.write(data);
    });
    socket.on('data', function(data) {
      raspberrypi.write(data);
    });
  });
}).listen(8080);
1
  • The reason I accepted this answer is because it answers the question of internet sharing, not of fixing my wifi. – Lennon McLean Jul 26 '20 at 13:43
0

The reason I had to connect to the network via ethernet was because I lost the WiFi USB adapter for the pi. I found it and fixed it, and also got WiFi working on my laptop, so I'm very happy right now.

Also, I'm pretty sure someone will close this question for being too specific.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .