{"id":20021341,"url":"https://github.com/piotrpdev/virginhub-auto-firewall","last_synced_at":"2025-10-05T08:42:40.692Z","repository":{"id":216715540,"uuid":"741778253","full_name":"piotrpdev/virginhub-auto-firewall","owner":"piotrpdev","description":"Automatically allow traffic in firewall when global IPv6 address changes","archived":false,"fork":false,"pushed_at":"2024-05-13T10:39:26.000Z","size":35,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2024-05-13T11:49:27.536Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://hub.docker.com/r/piotrpdev/virgin-auto-firewall","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/piotrpdev.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-01-11T05:00:52.000Z","updated_at":"2024-06-19T10:51:59.802Z","dependencies_parsed_at":"2024-06-19T10:51:58.995Z","dependency_job_id":"0190a2be-fac0-48b4-9290-bb707cee7315","html_url":"https://github.com/piotrpdev/virginhub-auto-firewall","commit_stats":null,"previous_names":["piotrpdev/virgin-auto-firewall"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/piotrpdev%2Fvirginhub-auto-firewall","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/piotrpdev%2Fvirginhub-auto-firewall/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/piotrpdev%2Fvirginhub-auto-firewall/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/piotrpdev%2Fvirginhub-auto-firewall/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/piotrpdev","download_url":"https://codeload.github.com/piotrpdev/virginhub-auto-firewall/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":241455379,"owners_count":19965602,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-13T08:36:30.883Z","updated_at":"2025-10-05T08:42:35.656Z","avatar_url":"https://github.com/piotrpdev.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# VirginHub Auto Firewall\n\n```mermaid\nsequenceDiagram\n    box Purple Home Network\n    participant HomeDevice as Device\n    participant Router as Router\n    end\n    box Green Internet\n    participant DNS as piotrp.ddns.net\n    participant ExternalDevice as Internet User\n    participant IPCheckService as IP Check Service (ipify)\n    end\n\n    ExternalDevice--\u003e\u003eDNS: Tries to access piotrp.ddns.net\n    DNS --\u003e\u003eExternalDevice: Provides device's global IPv6 address\n    Note over HomeDevice: IPv6 Address Changes\n    ExternalDevice--xHomeDevice: Access attempt fails\n    alt VirginHub Auto Firewall\n    loop\n    HomeDevice-\u003e\u003e+IPCheckService: Asks for global IPv6 address\n    IPCheckService--\u003e\u003e-HomeDevice: Provides global IPv6 address\n    end\n    Note over HomeDevice: VAF Detects IPv6 change\n    HomeDevice-\u003e\u003eRouter: Updates IPv6 firewall rules\n    end\n    Note over HomeDevice: NOIP DUC Detects IPv6 change\n    HomeDevice-\u003e\u003eDNS: Updates to new IPv6 address\n    ExternalDevice--\u003e\u003eDNS: Tries to access piotrp.ddns.net\n    DNS --\u003e\u003eExternalDevice: Provides device's global IPv6 address\n    ExternalDevice-\u003e\u003eHomeDevice: Access attempt successful\n\n```\n\nI'm using the VirginHub Media Hub 6 router (`F3896LG-VMIE`) which, *at least in my area*,\ndoesn't allow IPv4 port forwarding. It *does* however allow setting IPv6 firewall\nrules, which means that you can still expose services on your home network to the internet.\n\nThis software keeps checking your device's global IPv6 address using [ipify](https://www.ipify.org/). When the IPv6 address inevitably changes, it updates the firewall rules on the router to allow incoming connections to the new address.\n\nThis is useful for residential internet users with dynamic IPv6 addresses\nthat want to host services on their home network. I use this in conjunction\nwith the [NO-IP DUC](https://www.noip.com/support/knowledgebase/automatic-ipv6-updates-linux-duc) to expose my Raspberry Pi 4B to the internet.\n\n\u003e [!WARNING]\n\u003e This software was specifically designed and only works with the VirginHub\n\u003e Media Hub 6 router (`F3896LG-VMIE` by *Sagemcom*).\n\n## Usage\n\nI recommend the following:\n\n```bash\nsudo docker run -d \\\n-v /var/log:/tmp \\\n--net=host \\\npiotrpdev/virginhub-auto-firewall:1.0.0-rspi \\\n-logPath=/tmp/vaf.log \\\n-routerPassword=abcde \\\n-debug=true \\\n-oldIP=aaaa:bbbb:cccc:dddd:aaaa:bbbb:cccc:dddd\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpiotrpdev%2Fvirginhub-auto-firewall","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpiotrpdev%2Fvirginhub-auto-firewall","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpiotrpdev%2Fvirginhub-auto-firewall/lists"}