← The board

C2 VPN verification

Area
C — Trust & correctness
Audience
operator
Kind
feature
Status
accepted
Maturity
shipped
Shipped in
0.6.0
Labels
vpn, network, verification
Requires
B5
Relates to
A3B8C1

The feature in the specification · Read at

Requirements

  1. C2-R1acceptedMUST

    Verification MUST compare public IP observed from inside the download client's namespace against the VPN container's.

    locked by
    0.6.0 met
    recorded done
    lemonfibercrates/lemonfiber-core/src/doctor/vpn.rs
    cited by
    lemonfiber@4ccc9f6bf1lemonfiber@fb11824654
  2. C2-R2acceptedMUST

    A mismatch between the download client's egress and the tunnel MUST be reported as leaking at critical severity.

    locked by
    0.6.0 met
    recorded done
    lemonfibercrates/lemonfiber-core/src/doctor/vpn.rs
    cited by
    lemonfiber@4ccc9f6bf1
  3. C2-R3acceptedMUST

    Inability to reach an IP-echo source MUST report unverified, never pass.

    locked by
    0.6.0 met
    recorded done
    lemonfibercrates/lemonfiber-core/src/doctor/vpn.rs
    cited by
    lemonfiber@88253a6514lemonfiber@4ccc9f6bf1
  4. C2-R4acceptedMUST

    Forwarded-port assignment, client configuration, reachability and post-reconnect match MUST each be checked separately.

    locked by
    0.6.0 met
    recorded done
    lemonfibercrates/lemonfiber-core/src/doctor/vpn/forwarding.rscrates/lemonfiber-core/src/app/forwarding.rs
    cited by
    lemonfiber@057649344c
  5. C2-R5acceptedMUST

    A forwarded port that changed MUST be re-pushed to the download client automatically and the change recorded.

    locked by
    0.6.0 met
    recorded done
    lemonfibercrates/lemonfiber-core/src/doctor/vpn/forwarding.rscrates/lemonfiber-core/src/app/forwarding.rs
    cited by
    lemonfiber@514edfa781lemonfiber@057649344c
  6. C2-R6acceptedMUST

    When the tunnel is up but no port was granted on a port-forwarding-capable provider, that provider's known trap MUST be named as the first candidate cause.

    locked by
    0.6.0 met
    recorded done
    lemonfibercrates/lemonfiber-core/src/doctor/vpn/port_forward.rs
    cited by
    lemonfiber@05e0b8951f
  7. C2-R7acceptedMUST

    Killswitch verification MUST be opt-in and MUST report unverified until it has been run.

    locked by
    0.6.0 met
    recorded done
    lemonfibercrates/lemonfiber-core/src/doctor/vpn/killswitch.rs
    cited by
    lemonfiber@b00845f85dlemonfiber@8fbe3c67fflemonfiber@4ccc9f6bf1
  8. C2-R8acceptedMUST

    Killswitch verification MUST restore the prior state and MUST verify restoration before reporting.

    locked by
    0.6.0 met
    recorded done
    lemonfibercrates/lemonfiber-core/src/doctor/vpn/killswitch.rs
    cited by
    lemonfiber@8fbe3c67ff
  9. C2-R9acceptedMUST

    Egress matching MUST be re-checked periodically while torrent transfers are active.

    locked by
    0.6.0 met
    recorded done
    lemonfibercrates/lemonfiber-core/src/dashboard/run.rscrates/lemonfiber-core/src/notify/run.rs
    cited by
    lemonfiber@5e0545dd16lemonfiber@2e4198bf6e
  10. C2-R10acceptedMUST

    A leak detected after startup MUST notify immediately at critical severity.

    locked by
    0.6.0 met
    recorded done
    lemonfibercrates/lemonfiber-core/src/dashboard/run.rscrates/lemonfiber-core/src/notify/run.rs
    cited by
    lemonfiber@2e4198bf6e
  11. C2-R11acceptedMUST

    The VPN exit country MUST be reported.

    locked by
    0.6.0 met
    recorded done
    lemonfibercrates/lemonfiber-core/src/doctor/vpn.rs
    cited by
    lemonfiber@4ccc9f6bf1
  12. C2-R12acceptedMUST

    A download client not sharing the VPN's network namespace MUST be reported as leaking, naming the network mode.

    locked by
    0.6.0 met
    recorded done
    lemonfibercrates/lemonfiber-core/src/doctor/vpn.rs
    cited by
    lemonfiber@4ccc9f6bf1
  13. C2-R13acceptedMUST

    Where the VPN is unconfigured by acknowledged choice, lemonfiber MUST NOT repeat the warning on every run.

    locked by
    0.6.0 met
    recorded done
    lemonfibercrates/lemonfiber-core/src/doctor/acknowledged.rscrates/lemonfiber-core/src/app/accepted.rscrates/lemonfiber-core/src/app/unforwarded.rs
    cited by
    lemonfiber@e67fd6abc4
  14. C2-R14acceptedMUST

    Disagreement between IP-echo sources MUST be reported rather than resolved arbitrarily.

    locked by
    0.6.0 met
    recorded done
    lemonfibercrates/lemonfiber-core/src/doctor/vpn.rs
    cited by
    lemonfiber@88253a6514lemonfiber@b6160c1e7clemonfiber@4ccc9f6bf1
  15. C2-R15acceptedMUST

    Providers MUST be modelled by capability, not by name; support MUST NOT be limited to an enumerated provider list.

    locked by
    0.6.0 met
    recorded done
    lemonfibercrates/lemonfiber-core/src/doctor/vpn.rs
    cited by
    lemonfiber@4ccc9f6bf1
  16. C2-R16acceptedMUST

    Where the provider does not support port forwarding, port checks MUST report not-applicable and MUST NOT report as failed or degraded.

    locked by
    0.6.0 met
    recorded done
    lemonfibercrates/lemonfiber-core/src/doctor/vpn/port_forward.rs
    cited by
    lemonfiber@05e0b8951f
  17. C2-R17acceptedMUST

    The consequence of running without a forwarded port — reduced peer connectivity and seeding — MUST be stated once at setup, and MUST NOT be repeated as a recurring warning.

    locked by
    0.6.0 met
    recorded done
    lemonfibercrates/lemonfiber-core/src/doctor/acknowledged.rscrates/lemonfiber-core/src/app/accepted.rscrates/lemonfiber-core/src/app/unforwarded.rs
    cited by
    lemonfiber@e67fd6abc4
  18. C2-R18acceptedMUST

    Where a provider's capability is unknown, port checks MUST report unverified rather than assuming presence or absence.

    locked by
    0.6.0 met
    recorded done
    lemonfibercrates/lemonfiber-core/src/doctor/vpn/port_forward.rs
    cited by
    lemonfiber@05e0b8951f
  19. C2-R19acceptedMUST

    Both the port-acquire and port-release paths MUST be wired, so the client re-acquires correctly after a tunnel drop.

    locked by
    0.6.0 met
    recorded done
    lemonfibercrates/lemonfiber-core/src/doctor/vpn/forwarding.rscrates/lemonfiber-core/src/app/forwarding.rs
    cited by
    lemonfiber@057649344c
  20. C2-R20acceptedMUST

    Changing to a provider without port forwarding MUST state the resulting loss of seeding performance.

    locked by
    0.6.0 met
    recorded done
    lemonfibercrates/lemonfiber-core/src/doctor/acknowledged.rscrates/lemonfiber-core/src/app/accepted.rscrates/lemonfiber-core/src/app/unforwarded.rs
    cited by
    lemonfiber@e67fd6abc4