Introduction
Introduction Statistics Contact Development Disclaimer Help
Title: Script NAT on Qubes OS
Author: Solène
Date: 06 March 2024
Tags: qubesos unix network
Description: In this article, I'm sharing a script I wrote to easily
expose a given network port of a qube to the local network
# Introduction
As a daily Qubes OS user, I often feel the need to expose a port of a
given qube to my local network. However, the process is quite painful
because it requires doing the NAT rules on each layer (usually net-vm
=> sys-firewall => qube), it's a lost of wasted time.
I wrote a simple script that should be used from dom0 that does all the
job: opening the ports on the qube, and for each NetVM, open and
redirect the ports.
Qubes OS Nat git repository
# Usage
It's quite simple to use, the hardest part will be to remember how to
copy it to dom0 (download it in a qube and use `qvm-run --pass-io` from
dom0 to retrieve it).
Make the script executable with `chmod +x nat.sh`, now if you want to
redirect the port 443 of a qube, you can run `./nat.sh qube 443 tcp`.
That's all.
Be careful, the changes ARE NOT persistent. This is on purpose, if you
want to always expose ports of a qube to your network, you should
script its netvm accordingly.
# Limitations
The script is not altering the firewall rules handled by
`qvm-firewall`, it only opens the ports and redirect them (this happens
at a different level). This can be cumbersome for some users, but I
decided to not touch rules that are hard-coded by users in order to not
break any expectations.
Running the script should not break anything. It works for me, but it
was only slightly tested though.
# Some useful ports
## Avahi daemon port
The avahi daemon uses the UDP port 5353. You need this port to
discover devices on a network. This can be particularly useful to find
network printers or scanners and use them in a dedicated qube.
# Evolutions
It could be possible to use this script in qubes-rpc, this would allow
any qube to ask for a port forwarding. I was going to write it this
way at first, but then I thought it may be a bad idea to allow a qube
to run a dom0 script as root that requires reading some untrusted
inputs, but your mileage may vary.
You are viewing proxied material from dataswamp.org. The copyright of proxied material belongs to its original authors. Any comments or complaints in relation to proxied material should be directed to the original authors of the content concerned. Please see the disclaimer for more details.