使用nftables为指定Linux用户强制使用代理:修订间差异
来自md5.pw
更多语言
更多操作
无编辑摘要 |
修复语法高亮标签的语言参数 |
||
| 第2行: | 第2行: | ||
=== 1. 准备 === | === 1. 准备 === | ||
确保 nftables 已经安装, 且本地有透明代理端口 (比如Xray的<code>dokodemo-door</code>), 这里就不注重如何开设透明代理<syntaxhighlight> | 确保 nftables 已经安装, 且本地有透明代理端口 (比如Xray的<code>dokodemo-door</code>), 这里就不注重如何开设透明代理<syntaxhighlight lang="text"> | ||
nft --version | nft --version | ||
</syntaxhighlight>若没有安装, 以Debian13为例<syntaxhighlight>apt update | </syntaxhighlight>若没有安装, 以Debian13为例<syntaxhighlight lang="text">apt update | ||
apt install nftables | apt install nftables | ||
systemctl enable nftables</syntaxhighlight>拷贝原有的nftables配置, 到一个好找的目录里, 以 <code>/main/nftables</code> 为例, 再对原路径进行链接<syntaxhighlight>cp /etc/nftables.conf /main/nftables/ | systemctl enable nftables</syntaxhighlight>拷贝原有的nftables配置, 到一个好找的目录里, 以 <code>/main/nftables</code> 为例, 再对原路径进行链接<syntaxhighlight lang="text">cp /etc/nftables.conf /main/nftables/ | ||
ln -f /main/nftables/nftables.conf /etc/nftables.conf</syntaxhighlight>并准备好编辑 <code>/main/nftables/nftables.conf</code> | ln -f /main/nftables/nftables.conf /etc/nftables.conf</syntaxhighlight>并准备好编辑 <code>/main/nftables/nftables.conf</code> | ||
=== 2. 配置nftables === | === 2. 配置nftables === | ||
查看用户id<syntaxhighlight> | 查看用户id<syntaxhighlight lang="text"> | ||
cat /etc/passwd | cat /etc/passwd | ||
</syntaxhighlight>这里假设我在<code>10809</code>端口开设了Xray的<code>dokodemo-door</code>, 需要将<code>1000</code>与<code>1001</code>的用户id所建立的tcp连接使用代理 | </syntaxhighlight>这里假设我在<code>10809</code>端口开设了Xray的<code>dokodemo-door</code>, 需要将<code>1000</code>与<code>1001</code>的用户id所建立的tcp连接使用代理 | ||
请在合适位置添加或与其它的table进行合并<syntaxhighlight line="1"> | 请在合适位置添加或与其它的table进行合并<syntaxhighlight lang="text" line="1"> | ||
table inet proxy { | table inet proxy { | ||
| 第26行: | 第26行: | ||
} | } | ||
</syntaxhighlight>保存后并重启<syntaxhighlight> | </syntaxhighlight>保存后并重启<syntaxhighlight lang="text"> | ||
systemctl restart nftables.service | systemctl restart nftables.service | ||
</syntaxhighlight> | </syntaxhighlight> | ||
=== 3. 配置sysctl === | === 3. 配置sysctl === | ||
<code>sysctl</code> 中需要配置IP转发, 新建一个<code>forward.conf</code>并进行编辑<syntaxhighlight line="1"> | <code>sysctl</code> 中需要配置IP转发, 新建一个<code>forward.conf</code>并进行编辑<syntaxhighlight lang="text" line="1"> | ||
net.ipv4.ip_forward = 1 | net.ipv4.ip_forward = 1 | ||
net.ipv6.conf.all.forwarding = 1 | net.ipv6.conf.all.forwarding = 1 | ||
</syntaxhighlight>保存好后链接过去, 并让其生效<syntaxhighlight> | </syntaxhighlight>保存好后链接过去, 并让其生效<syntaxhighlight lang="text"> | ||
ln -f /main/nftables/forward.conf /etc/sysctl.d/ | ln -f /main/nftables/forward.conf /etc/sysctl.d/ | ||
sysctl --system | sysctl --system | ||
| 第40行: | 第40行: | ||
=== 4. 测试 === | === 4. 测试 === | ||
<syntaxhighlight> | <syntaxhighlight lang="text"> | ||
su 1000或1001用户名 | su 1000或1001用户名 | ||
curl https://ipinfo.io/ip | curl https://ipinfo.io/ip | ||
</syntaxhighlight> | </syntaxhighlight> | ||
[[Category:500 常见应用指南 — Application Guides]] | [[Category:500 常见应用指南 — Application Guides]] | ||
2026年9月18日 (五) 15:40的最新版本
1. 准备
确保 nftables 已经安装, 且本地有透明代理端口 (比如Xray的dokodemo-door), 这里就不注重如何开设透明代理
nft --version
若没有安装, 以Debian13为例
apt update
apt install nftables
systemctl enable nftables
拷贝原有的nftables配置, 到一个好找的目录里, 以 /main/nftables 为例, 再对原路径进行链接
cp /etc/nftables.conf /main/nftables/
ln -f /main/nftables/nftables.conf /etc/nftables.conf
并准备好编辑 /main/nftables/nftables.conf
2. 配置nftables
查看用户id
cat /etc/passwd
这里假设我在10809端口开设了Xray的dokodemo-door, 需要将1000与1001的用户id所建立的tcp连接使用代理
请在合适位置添加或与其它的table进行合并
table inet proxy {
chain output {
type nat hook output priority 10;
policy accept;
meta skuid { 1000, 1001 } ip protocol tcp dnat to 127.0.0.1:10809;
}
}
保存后并重启
systemctl restart nftables.service
3. 配置sysctl
sysctl 中需要配置IP转发, 新建一个forward.conf并进行编辑
net.ipv4.ip_forward = 1
net.ipv6.conf.all.forwarding = 1
保存好后链接过去, 并让其生效
ln -f /main/nftables/forward.conf /etc/sysctl.d/
sysctl --system
4. 测试
su 1000或1001用户名
curl https://ipinfo.io/ip