feat: 默认子网改为 192.168.77.0/24,安装脚本授权 CAP_NET_ADMIN 与 iptables 配置

- 默认 VPN 子网由 192.168.3.0/24 改为 192.168.77.0/24(db seed、前端表单默认值与 placeholder 同步)
- install_linux.sh 顶部增加 VPN_SUBNET 可配置变量
- systemd unit 增加 AmbientCapabilities/CapabilityBoundingSet=CAP_NET_ADMIN CAP_NET_RAW,服务以 lmvpn 用户运行即可创建 TUN,无需 root
- 脚本自动开启 net.ipv4.ip_forward 并持久化到 /etc/sysctl.d/99-lmvpn.conf
- 脚本自动检测出口网卡,幂等配置 iptables NAT MASQUERADE 与 FORWARD 放行规则
- 优先 netfilter-persistent 持久化,回退 iptables-save 写 /etc/iptables/rules.v4
This commit is contained in:
2026-07-06 14:42:58 +08:00
parent c8b170d532
commit 6ccfb57c80
3 changed files with 56 additions and 4 deletions
+3 -3
View File
@@ -63,7 +63,7 @@ const saveMsg = ref('')
const form = ref<Settings>({
enabled: false,
subnet: '192.168.3.0/24',
subnet: '192.168.77.0/24',
mtu: 1420,
interface_name: '',
allow_client_to_client: false,
@@ -331,7 +331,7 @@ onMounted(() => {
</div>
<div>
<label class="block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1">子网 (CIDR)</label>
<input v-model="form.subnet" type="text" placeholder="192.168.3.0/24" class="w-full px-3 py-2 border border-gray-300 dark:border-gray-600 rounded-lg bg-white dark:bg-gray-700 text-gray-900 dark:text-white" />
<input v-model="form.subnet" type="text" placeholder="192.168.77.0/24" class="w-full px-3 py-2 border border-gray-300 dark:border-gray-600 rounded-lg bg-white dark:bg-gray-700 text-gray-900 dark:text-white" />
</div>
<div>
<label class="block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1">MTU</label>
@@ -437,7 +437,7 @@ onMounted(() => {
</div>
<div>
<label class="block text-sm font-medium text-gray-700 dark:text-gray-300 mb-1">IP 地址</label>
<input v-model="resvForm.ip_address" type="text" placeholder="192.168.3.10" class="w-full px-3 py-2 border border-gray-300 dark:border-gray-600 rounded-lg bg-white dark:bg-gray-700 text-gray-900 dark:text-white" />
<input v-model="resvForm.ip_address" type="text" placeholder="192.168.77.10" class="w-full px-3 py-2 border border-gray-300 dark:border-gray-600 rounded-lg bg-white dark:bg-gray-700 text-gray-900 dark:text-white" />
</div>
<p v-if="resvError" class="text-sm text-red-500">{{ resvError }}</p>
</div>