| (use-modules (gnu) (gnu packages networking) (gnu packages bittorrent) (gnu services vpn) (gnu packages screen) (gnu packages python))
|
| (use-service-modules networking)
|
|
|
| (operating-system
|
| (host-name "qBittorrent")
|
| (timezone "US")
|
| (file-systems (cons (file-system
|
| (device (file-system-label "does-not-matter"))
|
| (mount-point "/")
|
| (type "ext4"))
|
| %base-file-systems))
|
| (bootloader (bootloader-configuration
|
| (bootloader grub-bootloader)
|
| (targets '("/dev/sda"))))
|
| (packages (cons* screen libnatpmp qbittorrent-no-x python %base-packages))
|
| (services
|
| (cons* (service dhcpd-service-type)
|
| (service wireguard-service-type
|
| (wireguard-configuration
|
| (addresses '("10.2.0.2/32"))
|
| (dns '("10.2.0.1"))
|
| (peers
|
| (list
|
| (wireguard-peer
|
| (name "name")
|
| (endpoint "101.67.222.2:51820")
|
| (public-key "redacted")
|
| (allowed-ips '("0.0.0.0/0")))))))
|
| %base-services)))
|
| #!/bin/bash
|
| set -euo pipefail
|
|
|
| RED='\033[0;31m'
|
| NC='\033[0m'
|
|
|
| namespace=$1
|
| pid=$2
|
| host=$3
|
| client=$4
|
| GATEWAY=$(ip route show default | awk '{print $3}')
|
| #ip=$5
|
|
|
| [[ -z "$namespace" || -z "$pid" || -z "$host" || -z "$client" ]] && {
|
| echo -e "${RED}Error:${NC} Missing arguments. Usage: $0 <ns> <pid> <host> <client>"
|
| exit 1
|
| }
|
|
|
| ip netns attach "$namespace" "$pid"
|
| ip link add "$host" type veth peer name "$client"
|
| ip link set "$host" master br0
|
| ip link set "$client" netns "$namespace"
|
| ip link set "$host" up
|
|
|
| ip netns exec "$namespace" ip link set lo up
|
| ip netns exec "$namespace" ip link set "$client" up
|
| #ip netns exec "$namespace" ip addr add "$ip" dev "$client"
|
| ip netns exec "$namespace" ip route add default via "$GATEWAY"
|
|
|
| exit 0
|