extend archlinux doc with networking example

This commit is contained in:
Rick van de Loo 2017-05-07 15:12:06 +02:00 committed by Fabian
parent 9ba1f2f9a8
commit 069ea8e672

View file

@ -324,3 +324,46 @@ initial_state: {
```
If you refresh `http://localhost:8000/examples/arch.html` you will see that the state is restored instantly and all required files are loaded over the network on the fly.
### Networking
The emulator can emulate a network card. For more information [look at the networking documentation](https://github.com/copy/v86/blob/master/docs/networking.md). To set up networking in the VM, add the following item to the `V86Starter` array in the `examples/arch.html` file:
```sh
network_relay_url: "ws://localhost:8080/",
```
This will make the emulator try to connect to a [WebSockets proxy](https://github.com/benjamincburns/websockproxy). Running the proxy is very easy if you use the Docker container.
```sh
sudo docker run --privileged -p 8080:80 --name relay benjamincburns/jor1k-relay:latest
```
You can check if the relay is running correctly by going to `http://localhost:8080/` in your browser. There you should see a message that reads `Can "Upgrade" only to "Websocket".`.
Now you should be able to get network connectivity in the virtual machine. If you are restoring from a saved state, you might need to first run:
```sh
ip link set enp0s5 down
rmmod ne2k-pci
```
To bring the network up, run:
```sh
modprobe ne2k-pci
ip link set enp0s5 up
dhcpcd -w4 enp0s5
```
It might take a while for a carrier to become available on the interface. If the `dhcpcd` command fails shortly after booting, wait a bit and try again a bit later. If you are using the 9p network filesystem you can use the developer tools networking tab (in chrome) to get a sense of what is going on by looking at the files that are being downloaded.
When the network is up you should be able to curl a website. To check, run `curl icanhazip.com`. There you should see the public IP of the machine running the proxy.
You can't do inbound traffic into the VM with the websockproxy Docker container because it uses a basic NAT. To SSH into the VM running in the browser, you can create a reverse SSH tunnel to expose the SSH port of the sshd in the VM to the outside world.
```sh
# This will create a port 1122 on the example.com server
# which forwards to the SSH in the VM
ssh root@example.com -R 1122:localhost:22
```
Now on the `example.com` server you should be able to SSH into your browser tab by running `ssh root@localhost -p 1122`.