Настройки уже работающего ядра доступны через /proc и с помощью команды sysctl.
То, что находится в /proc, похоже на файлы и директории, но таковыми не является.
Читая из тех файлов, можно получать информацию о ядре (и работающих процессах), а записывая что-то в те файлы, можно, соответсвенно, кой-какие параметры менять.
В частности, переброс пакетов с одного сетевого интерфейса на другой включается записью 1 в /proc/sys/net/ipv4/ip_forward
echo 1 > /proc/sys/net/ipv4/ip_forward
Аналогично с таблицами маршрутов и IPTables, но там настройка параметров ядра осуществляется с помощью утилит route и iptables, соответственно.
Штатный файрволл ufw - не что иное, как более (или менее) удобная мордочка к iptables.
Таким образом, можно обойтись без перекомпиляции ядра, просто вставив в загрузочные скрипты команды включения маршрутизации и настройки маршрутов или NAT.
Перекомпилировать ядро для такого - стрельба из пушки по воробьям.
Однако, если преподу кажется, что для экзамена автоматом этого маловато или просто нужно заставить Вас потрахаться и отработать программу, следует раскопать в исходниках, где задаются значения по умолчанию, видные в /proc/net/route и /proc/sys/net... , и умолчальные правила iptables, и вписать туда нужные настройки.
Что касается мазохизма, то это тоже иллюзорно. Гражданин может просто оправдывать свое существование, ЧСВ опять же. Студенческая работа, выполненная под его руководством (а как же?! кто задачу ставил?! ОН-любимый!) в виде скрипта из 5 строк выглядит гораздо менее солидно, чем правки к исходникам ядра.