fix: switch default network driver to slirp4netns (pasta TCP RST bug)

pasta's TCP proxy sends RST packets with wrong sequence numbers after
the first data packet, breaking TCP connections from Docker containers
to external hosts. slirp4netns doesn't have this bug.

Changes:
- Default gitea_runner_docker_rootless_net_driver changed to slirp4netns
- Port driver: 'implicit' for pasta, 'builtin' for slirp4netns
- daemon.json: DNS configured per driver (10.0.2.3 for pasta, 8.8.8.8 for slirp4netns)
- IPv6 only enabled for pasta (slirp4netns doesn't support IPv6)
- integration_test: retry service active check (handles slow startup)
This commit is contained in:
Emil Simeonov
2026-08-04 10:28:02 +02:00
parent d0d28657f5
commit 7cf6ce9afb
17 changed files with 192 additions and 77 deletions
@@ -182,14 +182,16 @@
group: "{{ gitea_runner_service_user }}"
when: gitea_runner_docker_rootless_setup
- name: Configure rootless Docker to use pasta with IPv6
- name: Configure rootless Docker network driver
ansible.builtin.copy:
dest: "{{ gitea_runner_home }}/.config/systemd/user/docker.service.d/override.conf"
content: |
[Service]
Environment="DOCKERD_ROOTLESS_ROOTLESSKIT_NET={{ gitea_runner_docker_rootless_net_driver }}"
Environment="DOCKERD_ROOTLESS_ROOTLESSKIT_PORT_DRIVER=implicit"
Environment="DOCKERD_ROOTLESS_ROOTLESSKIT_PORT_DRIVER={{ 'implicit' if gitea_runner_docker_rootless_net_driver == 'pasta' else 'builtin' }}"
{% if gitea_runner_docker_rootless_net_driver == 'pasta' %}
Environment="DOCKERD_ROOTLESS_ROOTLESSKIT_FLAGS=--ipv6"
{% endif %}
mode: "0644"
owner: "{{ gitea_runner_service_user }}"
group: "{{ gitea_runner_service_user }}"
@@ -207,14 +209,20 @@
- gitea_runner_docker_rootless_setup
- gitea_runner_docker_network_override is changed
- name: Configure rootless Docker daemon with IPv6 enabled
- name: Configure rootless Docker daemon
ansible.builtin.copy:
dest: "{{ gitea_runner_home }}/.config/docker/daemon.json"
content: |
{
{% if gitea_runner_docker_rootless_net_driver == 'pasta' %}
"ipv6": true,
"ip6tables": true,
"fixed-cidr-v6": "{{ gitea_runner_docker_ipv6_cidr }}"
"fixed-cidr-v6": "{{ gitea_runner_docker_ipv6_cidr }}",
"dns": ["10.0.2.3", "8.8.8.8"]
{% else %}
"ipv6": false,
"dns": ["8.8.8.8", "1.1.1.1"]
{% endif %}
}
mode: "0644"
owner: "{{ gitea_runner_service_user }}"