...
- sudo apt-get install isc-dhcp-server
- Open file /etc/dhcp/dhcpd.conf and update as below
| Expand |
|---|
|
ddns-update-style none; default-lease-time 3600; max-lease-time 7200; authoritative; option custom-upstream-rate code 242 = unsigned integer 32; option custom-downstream-rate code 243 = unsigned integer 32; option domain-name "hsd.pa.crnrstn.comcast.net" ; subnet 10.42.0.0 netmask 255.255.255.0 { option routers 10.42.0.10; option broadcast-address 10.42.0.255; option domain-name-servers 1.1.1.1, 8.8.8.8; range 10.42.0.3 10.42.0.254; } |
- Open file /etc/radvd.conf
| Expand |
|---|
|
interface eth1 { AdvSendAdvert on; AdvManagedFlag on; AdvOtherConfigFlag on; prefix 2001:558:6013:100::/64 { AdvOnLink on; AdvAutonomous on; }; }; |
- Open file /etc/dhcp/dhcpd6.conf and update as below
| Expand |
|---|
|
ddns-update-style none; default-lease-time 3600; max-lease-time 7200; option dhcp-renewal-time 1800; option dhcp-rebinding-time 2880; option client-class-information code 97 = string; authoritative; option dhcp6.map-option code 95 = string; subnet6 2001:558:6013:0100::/64 { range6 2001:558:6013:0100::1000 2001:558:6013:0100::1fff; prefix6 2001:558:6013:0100:: 2001:558:6013:fe00:: /56; option dhcp6.map-option 00:59:00:16:00:08:18:c0:a8:14:00:30:20:01:05:58:60:13:00:5d:00:04:08:08:00:00:00:5b:00:09:40:00:64:ff:9b:00:00:00:00; option dhcp6.name-servers 2001:4860:4860::8888, 2001:4860:4860::8844; } |
- Once all changes are done, restart the dhcpd and radvd service.
sudo systemctl restart isc-dhcp-server
sudo systemctl restart isc-dhcp-server6
sudo systemctl restart radvd
| Code Block |
|---|
| title | isc-dhcp-server status |
|---|
| collapse | true |
|---|
|
● isc-dhcp-server.service - ISC DHCP IPv4 server
Loaded: loaded (/lib/systemd/system/isc-dhcp-server.service; disabled; vendor preset: enabled)
Active: active (running) since Mon 2026-04-06 15:22:33 IST; 135ms ago
Docs: man:dhcpd(8)
Main PID: 45322 (dhcpd)
Tasks: 4 (limit: 18942)
Memory: 4.6M
CPU: 24ms
CGroup: /system.slice/isc-dhcp-server.service
└─45322 dhcpd -user dhcpd -group dhcpd -f -4 -pf /run/dhcp-server/dhcpd.pid -cf /etc/dhcp/dhcpd.conf eth1
Apr 06 15:22:33 CHTSL00399 dhcpd[45322]: PID file: /run/dhcp-server/dhcpd.pid
Apr 06 15:22:33 CHTSL00399 dhcpd[45322]: Wrote 3 leases to leases file.
Apr 06 15:22:33 CHTSL00399 sh[45322]: Wrote 3 leases to leases file.
Apr 06 15:22:33 CHTSL00399 dhcpd[45322]: Listening on LPF/eth1/70:88:6b:81:04:e6/10.42.0.0/24
Apr 06 15:22:33 CHTSL00399 sh[45322]: Listening on LPF/eth1/70:88:6b:81:04:e6/10.42.0.0/24
Apr 06 15:22:33 CHTSL00399 sh[45322]: Sending on LPF/eth1/70:88:6b:81:04:e6/10.42.0.0/24
Apr 06 15:22:33 CHTSL00399 sh[45322]: Sending on Socket/fallback/fallback-net
Apr 06 15:22:33 CHTSL00399 dhcpd[45322]: Sending on LPF/eth1/70:88:6b:81:04:e6/10.42.0.0/24
Apr 06 15:22:33 CHTSL00399 dhcpd[45322]: Sending on Socket/fallback/fallback-net
Apr 06 15:22:33 CHTSL00399 dhcpd[45322]: Server starting service.
● isc-dhcp-server6.service - ISC DHCP IPv6 server
Loaded: loaded (/lib/systemd/system/isc-dhcp-server6.service; enabled; vendor preset: enabled)
Active: active (running) since Mon 2026-04-06 15:22:33 IST; 122ms ago
Docs: man:dhcpd(8)
Main PID: 45333 (dhcpd)
Tasks: 4 (limit: 18942)
Memory: 3.3M
CPU: 18ms
CGroup: /system.slice/isc-dhcp-server6.service
└─45333 dhcpd -user dhcpd -group dhcpd -f -6 -pf /run/dhcp-server/dhcpd6.pid -cf /etc/dhcp/dhcpd6.conf eth1
Apr 06 15:22:33 CHTSL00399 dhcpd[45333]: PID file: /run/dhcp-server/dhcpd6.pid
Apr 06 15:22:33 CHTSL00399 sh[45333]: Wrote 0 NA, 0 TA, 0 PD leases to lease file.
Apr 06 15:22:33 CHTSL00399 dhcpd[45333]: Wrote 0 NA, 0 TA, 0 PD leases to lease file.
Apr 06 15:22:33 CHTSL00399 dhcpd[45333]: Bound to *:547
Apr 06 15:22:33 CHTSL00399 sh[45333]: Bound to *:547
Apr 06 15:22:33 CHTSL00399 dhcpd[45333]: Listening on Socket/7/eth1/2001:558:6013:100::/64
Apr 06 15:22:33 CHTSL00399 sh[45333]: Listening on Socket/7/eth1/2001:558:6013:100::/64
Apr 06 15:22:33 CHTSL00399 sh[45333]: Sending on Socket/7/eth1/2001:558:6013:100::/64
Apr 06 15:22:33 CHTSL00399 dhcpd[45333]: Sending on Socket/7/eth1/2001:558:6013:100::/64
Apr 06 15:22:33 CHTSL00399 dhcpd[45333]: Server starting service.
● radvd.service - Router advertisement daemon for IPv6
Loaded: loaded (/lib/systemd/system/radvd.service; disabled; vendor preset: enabled)
Active: active (running) since Mon 2026-04-06 15:22:33 IST; 37ms ago
Docs: man:radvd(8)
Process: 45348 ExecStartPre=/usr/sbin/radvd --logmethod stderr_clean --configtest (code=exited, status=0/SUCCESS)
Process: 45349 ExecStart=/usr/sbin/radvd --logmethod stderr_clean (code=exited, status=0/SUCCESS)
Main PID: 45350 (radvd)
Tasks: 2 (limit: 18942)
Memory: 516.0K
CPU: 64ms
CGroup: /system.slice/radvd.service
├─45350 /usr/sbin/radvd --logmethod stderr_clean
└─45351 /usr/sbin/radvd --logmethod stderr_clean
Apr 06 15:22:33 CHTSL00399 systemd[1]: Starting Router advertisement daemon for IPv6...
Apr 06 15:22:33 CHTSL00399 radvd[45348]: config file, /etc/radvd.conf, syntax ok
Apr 06 15:22:33 CHTSL00399 radvd[45349]: version 2.18 started
Apr 06 15:22:33 CHTSL00399 systemd[1]: Started Router advertisement daemon for IPv6. |
Note: If using shared to other computers networkmanager will take care of sharing ipv4 and ipv6 internet. If using manual IP add required FORWARD rules in iptables.
To ping IPv6 add sudo ip6tables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE
Jool Installation
- Build the jool modules using below build instructions
| Code Block |
|---|
|
sudo apt update
sudo apt upgrade
sudo apt install build-essential pkg-config
sudo wget https://github.com/NICMx/Jool/releases/download/v4.2.0-rc2/jool-4.2.0.rc2.tar.gz
sudo tar -xzf jool-4.2.0.rc2.tar.gz
sudo /sbin/dkms install jool-4.2.0.rc2/
cd jool-4.2.0.rc2/
sudo ./configure
sudo make
sudo make install |
- Once build completed, below modules will be generated in respective paths, add those modules to kernel path
| Code Block |
|---|
|
ubuntu:~/jool-4.2.0~rc2$ find . -iname jool*ko
./src/mod/mapt/jool_mapt.ko
./src/mod/common/jool_common.ko
./src/mod/nat64/jool.ko
/src/mod/siit/jool_siit.ko |
| Code Block |
|---|
|
sudo modprobe jool_common
sudo modprobe jool_mapt
sudo modprobe jool
Enable below modules as well if not enabled
netfilter/nf_defrag_ipv4.ko
netfilter/nf_defrag_ipv6.ko |
- Once all modules are loaded and confirmed via lsmod
| Expand |
|---|
|
ubuntu:~/ lsmod | grep jool* jool_mapt 20480 0 jool_common 253952 1 jool_mapt nf_defrag_ipv6 24576 3 nf_conntrack,openvswitch,jool_mapt nf_defrag_ipv4 16384 2 nf_conntrack,jool_mapt x_tables 53248 9 xt_conntrack,nft_compat,xt_state,xt_tcpudp,xt_addrtype,xt_nat,ip_tables,xt_MASQUERADE,jool_mapt |
- Create an instance BR
| Code Block |
|---|
| title | BR instance creation |
|---|
|
sudo jool_mapt instance add "BR" --netfilter --dmr 64:ff9b::/64
sudo jool_mapt -i "BR" fmrt add 2001:558:6013::/48 192.168.20.0/24 8 8
sudo jool_mapt -i "BR" global update map-t-type BR |
View the created instance using:
| Code Block |
|---|
|
akhil@CHTSL00399:~$ sudo jool_mapt -i BR fmrt display
+---------------------------------------------+--------------------+----------------+----+
| IPv6 Prefix | IPv4 Prefix | EA-bits Length | a |
+---------------------------------------------+--------------------+----------------+----+
| 2001:558:6013::/48 | 192.168.20.0/24 | 16 | 6 |
+---------------------------------------------+--------------------+----------------+----+
akhil@CHTSL00399:~$ sudo jool_mapt instance display
+--------------------+-----------------+-----------+
| Namespace | Name | Framework |
+--------------------+-----------------+-----------+
| 89628c00 | BR | netfilter |
+--------------------+-----------------+-----------+
akhil@CHTSL00399:~$ |
Enable dubbing for jool using sudo jool_mapt -i BR global update logging-debug true
cat /var/log/syslog
- asas
...