家庭透明网关的设置

14 min read

下载地址

https://github.com/Dreamacro/clash/releases/tag/premium

配置项

# HTTP端口
port: 7890
# SOCKS5端口
socks-port: 7891
# 透明代理端口
redir-port: 7892
#允许来自局域网的连接
allow-lan: true
日志级别
log-level: info
# 控制面板端口
external-controller: 0.0.0.0:9090
# 控制面板路径
external-ui: clash-ui
# 控制面板密码
secret: "123456"
# dns设置
dns:
  enable: true
  ipv6: false
  listen: 0.0.0.0:1053
  enhanced-mode: fake-ip
  fake-ip-range: 198.18.0.1/16
  nameserver:
    - 114.114.114.114
    - https://dns.alidns.com/dns-query
  fallback:
    - tls://8.8.4.4:853
    - https://dns.pub/dns-query
# tun模式设置
tun:
  enable: true
  stack: system # or gvisor
  dns-hijack:
    - any:53
  auto-detect-interface: true
# 域名劫持设置
hosts:
  #clash.dev: 192.168.1.1
  #'.dev': 127.0.0.1
    

开启流量转发

#!/bin/bash

# 启用ipv4 forward
sysctl -w net.ipv4.ip_forward=1

# 定义环境变量
proxy_port=7892                  #clash 代理端口
dns_port=1053                    #clash dns监听端口

# 启用tun
mkdir -p /dev/net
mknod /dev/net/tun c 10 200
chmod 600 /dev/net/tun


# 配置tcp透明代理
## 在nat表中新建clash规则链
iptables -t nat -N clash
## 排除环形地址与保留地址
iptables -t nat -A clash -d 0.0.0.0/8 -j RETURN
iptables -t nat -A clash -d 10.0.0.0/8 -j RETURN
iptables -t nat -A clash -d 127.0.0.0/8 -j RETURN
iptables -t nat -A clash -d 169.254.0.0/16 -j RETURN
iptables -t nat -A clash -d 172.16.0.0/12 -j RETURN
iptables -t nat -A clash -d 192.168.0.0/16 -j RETURN
iptables -t nat -A clash -d 224.0.0.0/4 -j RETURN
iptables -t nat -A clash -d 240.0.0.0/4 -j RETURN
## 重定向tcp流量到clash 代理端口
iptables -t nat -A clash -p tcp -j REDIRECT --to-port "$proxy_port"
## 拦截外部tcp数据并交给clash规则链处理
iptables -t nat -A PREROUTING -p tcp -j clash

# dns 相关配置
iptables -t nat -I PREROUTING -p udp --dport 53 -j REDIRECT --to-port 1053

保存和恢复iptables规则

首先,使用 iptables-save 命令可以将当前 iptables 规则保存到一个文件中。例如,可以将规则保存到名为 iptables 的文件中:

iptables-save > iptables

然后,可以使用 iptables-restore 命令从文件中恢复规则:

iptables-restore < iptables

在某些情况下,可以将规则保存到 /etc/sysconfig/iptables 文件中,这是许多 Linux 发行版默认使用的位置。在保存到此文件后,可以使用以下命令重启 iptables 服务以加载规则:

systemctl restart iptables

此外,如果希望系统在启动时自动加载规则,可以将规则保存到 /etc/sysconfig/iptables 文件中,并在系统启动时自动加载。一种方法是使用 iptables-restore 命令在 /etc/rc.local 脚本中加载规则。将以下命令添加到 /etc/rc.local 文件中:

iptables-restore < /etc/sysconfig/iptables

这将在系统启动时自动加载 /etc/sysconfig/iptables 文件中的规则。