Пользовался и тем и другим способом. Использую дистрибутив Debian, в котором сеть управляется демоном networking, скрипты выполняющиеся при поднятии сети лежат в /etc/network/if-up.d. iptables-restore клал в if-up.d iptables-save — в if-down.d. Но после того как save-файл у меня пару раз был случайно затёрт перешёл на единый скрипт загрузки, который кладу в if-up.d.