Static IP Wired Network Connection (How do I...)

Hi Genodians! (I am a power user who’s new to Genode/Sculpt coming from the Qubes/Linux world) :slight_smile:

I’m currently trying to get the pre-built Sculpt OS 25.04 up and running for the first time, and Sculpt boots successfully (x86_64 system), but I can’t figure out how to get my wired ethernet connection working. There seems to be no connection made or network address shown after clicking to enable the “Wired” network (in the upper right corner).

Can someone please hand-hold me on the exact steps and settings for this networking up?

  • My system has a wired ethernet NIC only (No Wifi adapter).

  • My LAN network supports static IPs only (No DHCP server).

Via my working Qubes/Linux install, here are my specific LAN network settings that should be used for this Sculpt PC:

  • IP Address: 192.168.1.101
  • Broadcast: 192.168.1.255
  • Netmask: 255.255.255.0
  • Gateway: 192.168.1.1
  • DNS: 1.1.1.1

I’m initially looking to get basic internet traffic flowing on the ports of

  • HTTP (TCP:80)
  • HTTPS (TCP:443)
  • DNS (UDP:53)

in order to download and play with new Genode/Sculpt components, do some basic web browsing, and learn how to work with this very interesting and powerful Genode/Sculpt system.

From some web searching, it seems Sculpt may presume DHCP dynamic network addressing by default (which my network doesn’t offer), and a static IP configuration may require a custom config edit of a file such as “/config/managed/nic_router”?

Not sure if that’s right, or how to custom configure such a file (unknown XML parameters to me), in order to configure a static IP network connection with my specific network settings.

Hoping someone could hold my hand on this, as I’m excited to start the adventure of diving much deeper into Genode/Sculpt!

P.S. I’ve looked at a fair amount of Genode/Sculpt content and have watched Norman’s Casual Walkthrough video, so I think I generally understand the concept of how to edit config files in Genode/Sculpt, however, I don’t know exactly what file(s) to edit and what exact settings/parameters/values to type in or remove, nor also how one could know/discover this stuff - even as a Qubes/Linux power user - as Genode/Sculpt seems to be based on its own custom config files that omit settings/parameters/values that aren’t presently running by default (inhibiting easy discovery of additional non-default configurations that Genode/Sculpt is capable of).

Anyway, happy to be here, happy to have found Genode/Sculpt, and looking forward to lots of fun sculpting to come! :slight_smile:

3 Likes

Hi and welcome to the Genode world,

as you correctly figured out, you have to manually edit the NIC router config since there is no GUI for static IP config. Be aware that all files in /config/managed/ are generated by the Sculpt-manager component, thus any manually made changes will be overwritten at some point. For manually managing the NIC router config, you best copy /config/managed/nic_router to /config/nic_router. This implicitly tells the Sculpt manager that you want to maintain the config yourself.

The XML nodes and attributes for the NIC router are documented in its README file. You basically need to add an interface and a gateway attribute to the <domain name=”uplink”> node. Moreover, you would also need to add a <dns-server> child node to the <dhcp-server> node of the “default” domain.

3 Likes

@jschlatow

Thanks for the welcome! Hoping to in-time make Genode/Sculpt become a full and superior daily driver replacement for Qubes OS. :slight_smile:

Been tinkering with the nic_router as prescribed, but am still not getting the wired network connection to work.

The nic_router is quite complex to grasp for simply getting a basic manual network connection setup, and I feel somewhat lost in looking through the README, but I’m at least glad to be getting exposed to some deeper configuration parts of Genode/Sculpt on my first day for future educational and skill purposes!

Static IP Troubleshooting:

I first generate a default /config/managed/nic_router file by clicking to enable the Network from Off to Wired. Then, after copying, editing, and saving (:wq) to the new /config/nic_router file within the ram fs component using vim, and then testing internet by trying to install nano3d from the Presets, I get the following network connection errors for the ‘nano3d’ install:

In lower left corner notification, I see:

Diagnostics
network needed for installation

In /report/log, I see:

tail -n 1 /report/log

[leitzentrale -> manager] genodelabs/pkg/sticks_blue_backdrop/2025-04-28 incomplete or missing

I made the following line changes/additions to the default /config/nic_router file:

<domain name="uplink" interface="192.168.1.101/24" gateway="192.168.1.1">

and

    <dhcp-server ip_first="10.0.1.2" ip_last="10.0.1.200" dns_config_from="uplink"/>
      <dns-server ip="1.1.1.1"/>
    </dhcp-server>

Here is a fully retyped copy of my edited/modified /config/nic_router file:

<config verbose_domain_state="yes">
  <report interval_sec="5" bytes="yes" config="yes" config_triggers="yes"/>
  <default-policy domain="default"/>
  <policy label_prefix="nic -> " domain="uplink"/>
  <domain name="uplink" interface="192.168.1.101/24" gateway="192.168.1.1">
    <nat domain="default" tcp-ports="1000" udp-ports="1000" icmp-ids="1000"/>
    <tcp-forward port="80" domain="http" to="10.0.80.2"/>
    <tcp-forward port="23" domain="telnet" to="10.0.23.2"/>
    <tcp-forward port="9999" domain="gdb" to="10.0.99.2"/>
    <tcp-forward port="5900" domain="vnc" to="10.0.59.2"/>
  </domain>
  <domain name="default" interface="10.0.1.1/24">
    <dhcp-server ip_first="10.0.1.2" ip_last="10.0.1.200" dns_config_from="uplink"/>
      <dns-server ip="1.1.1.1"/>
    </dhcp-server>
    <tcp dst="0.0.0.0/0">
      <permit-any domain="uplink"/>
    </tcp>
    <udp dst="0.0.0.0/0">
      <permit-any domain="uplink"/>
    </udp>
    <icmp dst="0.0.0.0/0" domain="uplink"/>
  </domain>
  <policy label="http" domain="http"/>
  <domain name="http" interface="10.0.80.1/24">
    <dhcp-server ip_first="10.0.80.2" ip_last="10.0.80.2" dns_config_form="uplink"/>
  </domain>
  <policy label="telnet" domain="telnet"/>
  <domain name="telnet" interface="10.0.23.1/24">
    <dhcp-server ip_first="10.0.23.2" ip_last="10.0.23.2" dns_config_form="uplink"/>
  </domain>
  <policy label="gdb" domain="gdb"/>
  <domain name="gdb" interface="10.0.99.1/24">
    <dhcp-server ip_first="10.0.99.2" ip_last="10.0.99.2" dns_config_form="uplink"/>
  </domain>
  <policy label="vnc" domain="vnc"/>
  <domain name="vnc" interface="10.0.59.1/24">
    <dhcp-server ip_first="10.0.59.2" ip_last="10.0.59.2" dns_config_form="uplink"/>
  </domain>
</config>

For reference, here is a fully retyped copy of my default/unmodified /config/managed/nic_router file:

View File
<config verbose_domain_state="yes">
  <report interval_sec="5" bytes="yes" config="yes" config_triggers="yes"/>
  <default-policy domain="default"/>
  <policy label_prefix="nic -> " domain="uplink"/>
  <domain name="uplink">
    <nat domain="default" tcp-ports="1000" udp-ports="1000" icmp-ids="1000"/>
    <tcp-forward port="80" domain="http" to="10.0.80.2"/>
    <tcp-forward port="23" domain="telnet" to="10.0.23.2"/>
    <tcp-forward port="9999" domain="gdb" to="10.0.99.2"/>
    <tcp-forward port="5900" domain="vnc" to="10.0.59.2"/>
  </domain>
  <domain name="default" interface="10.0.1.1/24">
    <dhcp-server ip_first="10.0.1.2" ip_last="10.0.1.200" dns_config_from="uplink"/>
    <tcp dst="0.0.0.0/0">
      <permit-any domain="uplink"/>
    </tcp>
    <udp dst="0.0.0.0/0">
      <permit-any domain="uplink"/>
    </udp>
    <icmp dst="0.0.0.0/0" domain="uplink"/>
  </domain>
  <policy label="http" domain="http"/>
  <domain name="http" interface="10.0.80.1/24">
    <dhcp-server ip_first="10.0.80.2" ip_last="10.0.80.2" dns_config_form="uplink"/>
  </domain>
  <policy label="telnet" domain="telnet"/>
  <domain name="telnet" interface="10.0.23.1/24">
    <dhcp-server ip_first="10.0.23.2" ip_last="10.0.23.2" dns_config_form="uplink"/>
  </domain>
  <policy label="gdb" domain="gdb"/>
  <domain name="gdb" interface="10.0.99.1/24">
    <dhcp-server ip_first="10.0.99.2" ip_last="10.0.99.2" dns_config_form="uplink"/>
  </domain>
  <policy label="vnc" domain="vnc"/>
  <domain name="vnc" interface="10.0.59.1/24">
    <dhcp-server ip_first="10.0.59.2" ip_last="10.0.59.2" dns_config_form="uplink"/>
  </domain>
</config>

Here is a fully retyped copy of my /report/log file after editing/saving /config/nic_router and then re-connecting the network from Off to Wired again:

View Log
tail -n 50 /report/log

[runtime] child "nic_router"
[runtime]   RAM quota:  9992K
[runtime]   cap quota:  266
[runtime]   ELF binary: nic_router
[runtime]   priority:   2
[runtime]   provides service Nic
[runtime]   provides service Uplink
[runtime] child "nic"
[runtime]   RAM quota:  20232K
[runtime]   cap quota:  266
[runtime]   ELF binary: nic
[runtime]   priority:   2
[runtime -> nic_router] [uplink] dynamic IP config: none
[runtime -> nic_router] [uplink] NIC sessions: 0
[runtime -> nic_router] [default] static IP config: interface 10.0.1.1/24,  gateway 0.0.0.0, P2P 0
[runtime -> nic_router] [default] NIC sessions: 0
[runtime -> nic_router] [http] static IP config: interface 10.0.80.1/24, gateway 0.0.0.0, P2P 0
[runtime -> nic_router] [http] NIC sessions: 0
[runtime -> nic_router] [telnet] static IP config: interface 10.0.23.1/24, gateway 0.0.0.0, P2P 0
[runtime -> nic_router] [telnet] NIC sessions: 0
[runtime -> nic_router] [gdb] static IP config: interface 10.0.99.1/24, gateway 0.0.0.0, P2P 0
[runtime -> nic_router] [gdb] NIC sessions: 0
[runtime -> nic_router] [vnc] static IP config: interface 10.0.59.1/24, gateway 0.0.0.0, P2P 0
[runtime -> nic_router] [vnc] NIC sessions: 0
[runtime] child "nic_router" announces service "Nic"
[runtime] child "nic_router" announces service "Uplink"
[runtime -> nic] SLUB: HWalign=64, Order=0-1, MinObjects=0, CPUs=1, Nodes=1
[runtime -> nic] NR_IRQS: 4352, nr_irqs: 4352, preallocated irqs: 256
[runtime -> nic] clocksource: dde_counter: mask: 0xffffffffffffff max_cycles: 0x1d854df40, max_idle_ns: 3526361616960 ns
[runtime -> nic] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 7645041785100000 ns
[runtime -> nic] clocksource: Switched to clocksource dde_counter
[runtime -> nic] netdev: Intel(R) PRO/1000 Network Driver
[runtime -> nic] netdev: Copyright(c) 1999 - 2015 Intel Corporation.
[runtime -> nic] e1000e 00:19.0: Interrupt Throttling Rate (ints/sec) set to dynamic conservative mode
[runtime -> nic] e1000e 00:19.0 00:19.0 (uninitialized): Failed to initialize MSI interrupts.  Falling back to legacy interrupts.
[runtime -> nic] e1000e 00:19.0 eth0: (PCI Express:2.5GT/s:Width x1) [MAC ADDRESS REDACTED]
[runtime -> nic] e1000e 00:19.0 eth0: Intel(R) PRO/1000 Network Connection
[runtime -> nic] e1000e 00:19.0 eth0: MAC: 10, PHY: 11, PBA No: 1000FF-0FF
[runtime -> nic] e1000_main: Intel(R) PRO/1000 Network Driver
[runtime -> nic] e1000_main: Copyright (c) 1999-2006 Intel Corporation.
[runtime -> nic] sched_clock: Marking stable (358854000, 12268000)->(449441000, -78319000)
[runtime -> nic] e1000e 00:19.0 eth0: NIC Link is Up 1000 Mbps Full Duplex, Flow Control: None
[runtime -> nic] create uplink for net device eth0
[runtime -> nic_router] [uplink] NIC sessions: 1

Potential troubleshooting thought:

Could there be a nic-client node that needs to be added?

Also tried, without success, adding the following line as a child node of <config verbose_domain_state="yes">:

<nic-client label="wired" domain="uplink"/>

Still not sure how to get this static IP network configuration working.

@Qnode

Thanks for your detailed report. I understand that the NIC router is quite complex to grasp. Unfortunately, this is kind of a necessity when, typically, every networked component has its own IP stack, which consequently requires NATing and routing.

I believe you might have an invalid XML. I notices that you forgot removing the /> when inserting the <dns-server ip=”…”/> into the <dns-server …>. You can also delete the dns_config_from attribute since this rendered uneffective when a <dns-server/> is present. You should end up with this:

<dhcp-server ip_first="10.0.1.2" ip_last="10.0.1.200">
  <dns-server ip="1.1.1.1"/>
</dhcp-server>

When the NIC router config is valid. You should see the configured IP address in Sculpt’s network dialog. Moreover, the other options (Disconnect and Wifi) will disappear from this dialog. Can you double-check that this is the case?

2 Likes

Also you may check if your configuration produces correct results by examing /report/runtime/nic_router/state in the Sculpt system shell. It should contain data comparable to the following (esp. <domain name=“uplink” … ipv4=“...”/> which is monitored by the sculpt manager).

<domain name="uplink" rx_bytes="161744115" tx_bytes="2724395674" ipv4="10.0.0.44/24" gw="10.0.0.1">
...
</domain>
2 Likes

@jschlatow

Correcting the XML syntax error worked and traffic is flowing now! Thanks! :slight_smile:

I should have caught that one, as I know better with XML tags.

I will follow up by posting a step-by-step solution for others to benefit from.

Thank you!

@chelmuth

Thanks for the additional tip and insight!

Genode/Sculpt is so interesting! :slight_smile:

Solution for Static IP Wired Network Connection (Tested with Sculpt 25.04):

Here is a step-by-step guide for how to use a Static IP Wired Network Connection…

Example Static IP Wired Network Settings (substitute your own network settings):

  • IP Address: 192.168.1.101
  • Subnet Mask: 24 (255.255.255.0)
  • Gateway: 192.168.1.1
  • DNS Server: 1.1.1.1

1. Network → Wired : Enables your Wired network and generate nic router component with a /config/managed/nic_router config file.

2. Components → ram fs → Inspect : Enables a terminal interface for accessing your filesystem.

3. Inspect : Switch from Components to Inspect to access the terminal which should show the inspect:/> prompt.

4. cp /config/managed/nic_router /config/nic_router : Copies the system managed nic_router config file where you can manage/edit your own to override the system’s nic_router config.

For reference, here is the contents of my default/unmodified nic_router config file in Sculpt 25.04:

View File
<config verbose_domain_state="yes">
  <report interval_sec="5" bytes="yes" config="yes" config_triggers="yes"/>
  <default-policy domain="default"/>
  <policy label_prefix="nic -> " domain="uplink"/>
  <domain name="uplink">
    <nat domain="default" tcp-ports="1000" udp-ports="1000" icmp-ids="1000"/>
    <tcp-forward port="80" domain="http" to="10.0.80.2"/>
    <tcp-forward port="23" domain="telnet" to="10.0.23.2"/>
    <tcp-forward port="9999" domain="gdb" to="10.0.99.2"/>
    <tcp-forward port="5900" domain="vnc" to="10.0.59.2"/>
  </domain>
  <domain name="default" interface="10.0.1.1/24">
    <dhcp-server ip_first="10.0.1.2" ip_last="10.0.1.200" dns_config_from="uplink"/>
    <tcp dst="0.0.0.0/0">
      <permit-any domain="uplink"/>
    </tcp>
    <udp dst="0.0.0.0/0">
      <permit-any domain="uplink"/>
    </udp>
    <icmp dst="0.0.0.0/0" domain="uplink"/>
  </domain>
  <policy label="http" domain="http"/>
  <domain name="http" interface="10.0.80.1/24">
    <dhcp-server ip_first="10.0.80.2" ip_last="10.0.80.2" dns_config_form="uplink"/>
  </domain>
  <policy label="telnet" domain="telnet"/>
  <domain name="telnet" interface="10.0.23.1/24">
    <dhcp-server ip_first="10.0.23.2" ip_last="10.0.23.2" dns_config_form="uplink"/>
  </domain>
  <policy label="gdb" domain="gdb"/>
  <domain name="gdb" interface="10.0.99.1/24">
    <dhcp-server ip_first="10.0.99.2" ip_last="10.0.99.2" dns_config_form="uplink"/>
  </domain>
  <policy label="vnc" domain="vnc"/>
  <domain name="vnc" interface="10.0.59.1/24">
    <dhcp-server ip_first="10.0.59.2" ip_last="10.0.59.2" dns_config_form="uplink"/>
  </domain>
</config>

5. vim /config/nic_router : Start editing your nic_router config file.

6. Press Insert key : Enters into edit mode in the `vim’ editor.

7. Navigate by arrows and change the line with <domain name="uplink"> to <domain name="uplink" interface="192.168.1.101/24" gateway="192.168.1.1"> where you substitute in your own IP Address, Subnet Mask, and Gateway.

<domain name="uplink" interface="192.168.1.101/24" gateway="192.168.1.1">

8. Manual DNS Server : This step may be optional depending on your network’s DNS settings… If you have an explicitly defined DNS Server for your machine to use that is not automatically provided by your uplink network, then…

Navigate by arrows to the line under <domain name="default" with <dhcp-server ip_first="10.0.1.2" ip_last="10.0.1.200" dns_config_from="uplink"/> and change it into the following multiple lines:

  • If using a DNS Server IP Address, then:
<dhcp-server ip_first="10.0.1.2" ip_last="10.0.1.200">
  <dns-server ip="1.1.1.1"/>
</dhcp-server>
  • If using a DNS Server Domain Name, then:
<dhcp-server ip_first="10.0.1.2" ip_last="10.0.1.200">
  <dns-domain name="genodians.org"/>
</dhcp-server>

…where you substitute in your own provider’s DNS Server IP (ip=) or Domain (name=).

Note: In the first dhcp-server line, be sure to remove the ending slash-bracket /> and make it only a bracket > or else this will cause your XML configuration to be invalid.

9. Press Esc key : Exits out of edit mode in the vim editor.

10. Type :wq and press Enter into the vim editor’s command console at the bottom in order to write/save your file changes and quit the editor.

11. Network → Off → Wired : Turn Off and On and your Wired network to ensure use of your new network settings.

Check that the Sculpt Network dialog is showing your IP Address under the buttons, such as “192.168.1.101/24”, and that the only buttons showing are Off and Wired as the other buttons should have disappeared.

For reference, here is a full copy of my modified and working /config/nic_router config file:

View File
<config verbose_domain_state="yes">
  <report interval_sec="5" bytes="yes" config="yes" config_triggers="yes"/>
  <default-policy domain="default"/>
  <policy label_prefix="nic -> " domain="uplink"/>
  <domain name="uplink" interface="192.168.1.101/24" gateway="192.168.1.1">
    <nat domain="default" tcp-ports="1000" udp-ports="1000" icmp-ids="1000"/>
    <tcp-forward port="80" domain="http" to="10.0.80.2"/>
    <tcp-forward port="23" domain="telnet" to="10.0.23.2"/>
    <tcp-forward port="9999" domain="gdb" to="10.0.99.2"/>
    <tcp-forward port="5900" domain="vnc" to="10.0.59.2"/>
  </domain>
  <domain name="default" interface="10.0.1.1/24">
    <dhcp-server ip_first="10.0.1.2" ip_last="10.0.1.200" dns_config_from="uplink">
      <dns-server ip="1.1.1.1"/>
    </dhcp-server>
    <tcp dst="0.0.0.0/0">
      <permit-any domain="uplink"/>
    </tcp>
    <udp dst="0.0.0.0/0">
      <permit-any domain="uplink"/>
    </udp>
    <icmp dst="0.0.0.0/0" domain="uplink"/>
  </domain>
  <policy label="http" domain="http"/>
  <domain name="http" interface="10.0.80.1/24">
    <dhcp-server ip_first="10.0.80.2" ip_last="10.0.80.2" dns_config_form="uplink"/>
  </domain>
  <policy label="telnet" domain="telnet"/>
  <domain name="telnet" interface="10.0.23.1/24">
    <dhcp-server ip_first="10.0.23.2" ip_last="10.0.23.2" dns_config_form="uplink"/>
  </domain>
  <policy label="gdb" domain="gdb"/>
  <domain name="gdb" interface="10.0.99.1/24">
    <dhcp-server ip_first="10.0.99.2" ip_last="10.0.99.2" dns_config_form="uplink"/>
  </domain>
  <policy label="vnc" domain="vnc"/>
  <domain name="vnc" interface="10.0.59.1/24">
    <dhcp-server ip_first="10.0.59.2" ip_last="10.0.59.2" dns_config_form="uplink"/>
  </domain>
</config>

Enjoy! :slight_smile:

3 Likes

@Qnode Wow! Thanks for writing up such nice and polished instructions. I really appreciate that you take your time to improve documentation along your way of exploring Genode/Sculpt. If you ever feel like contributing to our community blog at genodians.org, you will be very welcome. You’ll find instructions at the corresponding repository at github.

2 Likes

You beat me to it - I was going to say exactly the same thing! This would be a great Genodians article!

1 Like

@jschlatow & @jjkarcher

Thank you both for the kind words! Happy to do it and to try to consider helping beginner-levels understand things too. :slight_smile:

After being a somewhat more advanced user with Qubes/Linux, but now here exploring and trying to build-up on Genode/Sculpt, I am enjoyably and humbly feeling like a total noob again, where simple tasks and concepts with the system seem to be somewhat-to-very challenging to figure out.

It kind of feels like being in a strange foreign land and struggling to learn a brand new language and set of customs, yet also knowing this new foreign land is meant to be my long-term home and there is something fundamentally beautiful and pure existing underneath here.


Also, after watching a video of Norman doing some live sculpting with a prior version of Sculpt OS, I realized/remembered that the Files feature (with built-in text editor) could be used to access and edit Sculpt’s config files, instead of using vim within Inspect. Therefore, I can further simplify my step-by-step instructions to be more concise and more user friendly. I will leave the prior posted instructions in-tact since that approach works too, but will also now post a follow up with a new, simplified, alternative step-by-step “how to” on this Static IP Wired Networking Connection topic.

I also found that doing “Components → ram fs → Use” is not necessary, and one can simply jump straight to doing “Components → ram fs → Inspect” without “Use” first, in order to access the filesystem by terminal. So I can remove that “Use” step from the instructions.


Genodians blog… Thanks, I’ve really enjoyed learning from the Genodians blog myself! I don’t have, and don’t plan to have a GitHub account, and am going by “Qnode” for now, but I am completely ok with someone else using/copying/refactoring/reuploading this or future step-by-step guides I make over to the Genodians blog. Feel free, as sharing knowledge further is a good thing!


Thanks for the truly innovative Genode/Sculpt system, and for also sculpting this little, mighty, amazing community that exists here! Happy to be here! :slight_smile:

1 Like

Note: This is an updated step-by-step approach to my prior instructions for a Static IP Wired Network Connection, which is a bit more concise and uses a more user-friendly method for editing config files.

Solution for Static IP Wired Network Connection (Tested with Sculpt 25.04):

Here is a step-by-step guide for how to use a Static IP Wired Network Connection…


Example Static IP Wired Network Settings (substitute your own network settings):

  • IP Address: 192.168.1.101
  • Subnet Mask: 24 (255.255.255.0)
  • Gateway: 192.168.1.1
  • DNS Server: 1.1.1.1

Steps:


1. Network → Wired : Enables your Wired network and generate nic router component with a /config/managed/nic_router config file.


2. Components → ram fs → Inspect : Enables a terminal interface for accessing your filesystem.


3. Inspect : Switch from Components to Inspect to access the terminal, which should show the inspect:/> prompt.


4. cp /config/managed/nic_router /config/nic_router : Copies the system managed nic_router config file where you can manage/edit your own to override the system’s nic_router config.

cp /config/managed/nic_router /config/nic_router

For reference, here is the contents of my default/unmodified nic_router config file in Sculpt 25.04:

View File
<config verbose_domain_state="yes">
  <report interval_sec="5" bytes="yes" config="yes" config_triggers="yes"/>
  <default-policy domain="default"/>
  <policy label_prefix="nic -> " domain="uplink"/>
  <domain name="uplink">
    <nat domain="default" tcp-ports="1000" udp-ports="1000" icmp-ids="1000"/>
    <tcp-forward port="80" domain="http" to="10.0.80.2"/>
    <tcp-forward port="23" domain="telnet" to="10.0.23.2"/>
    <tcp-forward port="9999" domain="gdb" to="10.0.99.2"/>
    <tcp-forward port="5900" domain="vnc" to="10.0.59.2"/>
  </domain>
  <domain name="default" interface="10.0.1.1/24">
    <dhcp-server ip_first="10.0.1.2" ip_last="10.0.1.200" dns_config_from="uplink"/>
    <tcp dst="0.0.0.0/0">
      <permit-any domain="uplink"/>
    </tcp>
    <udp dst="0.0.0.0/0">
      <permit-any domain="uplink"/>
    </udp>
    <icmp dst="0.0.0.0/0" domain="uplink"/>
  </domain>
  <policy label="http" domain="http"/>
  <domain name="http" interface="10.0.80.1/24">
    <dhcp-server ip_first="10.0.80.2" ip_last="10.0.80.2" dns_config_form="uplink"/>
  </domain>
  <policy label="telnet" domain="telnet"/>
  <domain name="telnet" interface="10.0.23.1/24">
    <dhcp-server ip_first="10.0.23.2" ip_last="10.0.23.2" dns_config_form="uplink"/>
  </domain>
  <policy label="gdb" domain="gdb"/>
  <domain name="gdb" interface="10.0.99.1/24">
    <dhcp-server ip_first="10.0.99.2" ip_last="10.0.99.2" dns_config_form="uplink"/>
  </domain>
  <policy label="vnc" domain="vnc"/>
  <domain name="vnc" interface="10.0.59.1/24">
    <dhcp-server ip_first="10.0.59.2" ip_last="10.0.59.2" dns_config_form="uplink"/>
  </domain>
</config>

5. Files → config → nic_router → Edit : Starts editing your /config/nic_router file.


6. Find and change the line with <domain name="uplink"> to <domain name="uplink" interface="192.168.1.101/24" gateway="192.168.1.1"> where you substitute in your own IP Address, Subnet Mask, and Gateway.

<domain name="uplink" interface="192.168.1.101/24" gateway="192.168.1.1">

7. Manual DNS Server : This step may be optional depending on your network’s DNS settings… If you have an explicitly defined DNS Server for your machine to use that is not automatically provided by your uplink network, then…

Find the line under <domain name="default" with <dhcp-server ip_first="10.0.1.2" ip_last="10.0.1.200" dns_config_from="uplink"/> and change it into the following multiple lines:

  • If using a DNS Server IP Address, then:
<dhcp-server ip_first="10.0.1.2" ip_last="10.0.1.200">
  <dns-server ip="1.1.1.1"/>
</dhcp-server>
  • If using a DNS Server Domain Name, then:
<dhcp-server ip_first="10.0.1.2" ip_last="10.0.1.200">
  <dns-domain name="genodians.org"/>
</dhcp-server>

…where you substitute in your own provider’s DNS Server IP (ip=) or Domain (name=).

Note: In the first dhcp-server line, be sure to remove the ending slash-bracket /> and make it only a bracket > or else this will cause your XML configuration to be invalid.


8. Press Save button : Saves and enables your new configuration.


9. Network → Off → Wired : Turn Off and On and your Wired network to ensure use of your new network settings.

Check that the Sculpt Network dialog is showing your IP Address under the buttons, such as “192.168.1.101/24”, and that the only buttons showing are Off and Wired as the other buttons should have disappeared.


For reference, here is a full copy of my modified and working /config/nic_router config file:

View File
<config verbose_domain_state="yes">
  <report interval_sec="5" bytes="yes" config="yes" config_triggers="yes"/>
  <default-policy domain="default"/>
  <policy label_prefix="nic -> " domain="uplink"/>
  <domain name="uplink" interface="192.168.1.101/24" gateway="192.168.1.1">
    <nat domain="default" tcp-ports="1000" udp-ports="1000" icmp-ids="1000"/>
    <tcp-forward port="80" domain="http" to="10.0.80.2"/>
    <tcp-forward port="23" domain="telnet" to="10.0.23.2"/>
    <tcp-forward port="9999" domain="gdb" to="10.0.99.2"/>
    <tcp-forward port="5900" domain="vnc" to="10.0.59.2"/>
  </domain>
  <domain name="default" interface="10.0.1.1/24">
    <dhcp-server ip_first="10.0.1.2" ip_last="10.0.1.200" dns_config_from="uplink">
      <dns-server ip="1.1.1.1"/>
    </dhcp-server>
    <tcp dst="0.0.0.0/0">
      <permit-any domain="uplink"/>
    </tcp>
    <udp dst="0.0.0.0/0">
      <permit-any domain="uplink"/>
    </udp>
    <icmp dst="0.0.0.0/0" domain="uplink"/>
  </domain>
  <policy label="http" domain="http"/>
  <domain name="http" interface="10.0.80.1/24">
    <dhcp-server ip_first="10.0.80.2" ip_last="10.0.80.2" dns_config_form="uplink"/>
  </domain>
  <policy label="telnet" domain="telnet"/>
  <domain name="telnet" interface="10.0.23.1/24">
    <dhcp-server ip_first="10.0.23.2" ip_last="10.0.23.2" dns_config_form="uplink"/>
  </domain>
  <policy label="gdb" domain="gdb"/>
  <domain name="gdb" interface="10.0.99.1/24">
    <dhcp-server ip_first="10.0.99.2" ip_last="10.0.99.2" dns_config_form="uplink"/>
  </domain>
  <policy label="vnc" domain="vnc"/>
  <domain name="vnc" interface="10.0.59.1/24">
    <dhcp-server ip_first="10.0.59.2" ip_last="10.0.59.2" dns_config_form="uplink"/>
  </domain>
</config>

Enjoy! :slight_smile:

1 Like

It’s been a while since I’ve looked at this (so the Genode guys can correct me if I’m wrong), but I don’t think there is any requirement to use GitHub. At the recommendation from several people in this forum, I created an account at Codeberg.org to house my personal projects and (when the glorious day arrives that I have something valuable to contribute) my Genodians repo. (Many of us here have similar concerns in this area.)

For what it’s worth…

Correct. The only requirement is that the content is downloadable as a zip archive.

1 Like

@jjkarcher & @jschlatow

Thank you both for your encouragement to post onto the Genodians blog! If it can be made feasible, then I’d be happy to do so.

I did originally see in the README of the genodians.org repository that states GitHub is preferred but not required…

"Each author maintains his/her own content, preferably in a public git repository. You may take a look at [https://github.com/nfeske/genodian] as an example."

Further Issues:

However, it was the mention of these 2 policies that made me turn away…

"Please open an issue at [https://github.com/genodelabs/genodians.org] and provide the following information:"
  • I presume that this step of opening a new GitHub issue would require a GitHub account? Although, I’d reasonably presume an alternative means of messaging the right person could likely be acceptable to initiating a valid blog post.
* Your real name. It will be displayed aside your articles. Pseudonyms are not accepted.
  • This absolute statement that articles cannot be published with psedonyms, and would be rejected, is the strongest barrier. As I’m going by the name “Qnode” for now, this is the primary issue.

I’m still happy if others would like to refactor my present or future step-by-step guides into Genodians blog posts.

Thanks! :slight_smile:

2 Likes