cat /sys/class/net/ens9f1/carrier
1代表网线已连接,0代表网线未连接
nmcli device status
ip route
route -a
apt download redsocks
在B主机运行ssh -D 1080 user@A主机IP,流量会通过 A 主机转发到公网 B
ssh -D 1080 user@A主机IP
curl --socks5-hostname 127.0.0.1:2000 https://ifconfig.me
这条命令:
sudo iptables -t nat -A POSTROUTING -s B主机的内网IP/32 -o eth0 -j MASQUERADE
✅ 应当在 A 主机上执行。
iptables -t nat -A POSTROUTING
-s B主机的内网IP/32
-o eth0
eth0
-j MASQUERADE
将 B 主机的流量伪装成 A 主机的流量从 A 主机上网(“共享上网”)。
sudo sysctl -w net.ipv4.ip_forward=1
开启 IP 转发,允许 A 主机转发来自 B 主机的网络包。
可加入 /etc/sysctl.conf 永久生效:
/etc/sysctl.conf
net.ipv4.ip_forward = 1
sudo ip route add default via A主机的内网IP
或者修改 /etc/netplan/*.yaml 或 /etc/network/interfaces(视你的网络管理方式而定)。
/etc/netplan/*.yaml
/etc/network/interfaces
如果你提供 B 主机的 IP 和 A 主机连接外网的网卡名称(如 eth0/ens33),我可以帮你写完整配置命令。
ens33
是的,可以把所有请求(主要是 TCP 流量)通过 iptables 全部转发到本地的 127.0.0.1:2000 端口,但这要依赖中间工具(如 redsocks 或 tun2socks)来处理协议兼容性问题。
iptables
127.0.0.1:2000
redsocks
tun2socks
你问的是:
能否将系统发出的所有网络请求(例如浏览器、curl、apt 等)都自动转发到 127.0.0.1:2000,让其代理出网?
✅ 答案是:可以!但方式取决于你这个 2000 端口是什么类型的代理服务(HTTP/SOCKS5/TUN)。
2000
TUN
你已经有一个在 127.0.0.1:2000 上监听的 HTTP 或 SOCKS5 代理程序(如:ssh -D 2000 ...,或 privoxy,或其他本地代理服务)
ssh -D 2000 ...
privoxy
sudo apt update sudo apt install redsocks -y
/etc/redsocks.conf
sudo nano /etc/redsocks.conf
示例:HTTP 代理
base { log_info = on; daemon = on; redirector = iptables; } redsocks { local_ip = 127.0.0.1; local_port = 12345; ip = 127.0.0.1; port = 2000; type = http-relay; }
示例:SOCKS5 代理(如 ssh -D)
type = socks5;
sudo redsocks -c /etc/redsocks.conf
# 创建 chain sudo iptables -t nat -N REDSOCKS # 忽略本地/私有网段 for net in 0.0.0.0/8 127.0.0.0/8 10.0.0.0/8 172.16.0.0/12 192.168.0.0/16 224.0.0.0/4 240.0.0.0/4; do sudo iptables -t nat -A REDSOCKS -d $net -j RETURN done # 所有 TCP 流量转发到 redsocks sudo iptables -t nat -A REDSOCKS -p tcp -j REDIRECT --to-ports 12345 # 应用 chain 到所有出站请求 sudo iptables -t nat -A OUTPUT -p tcp -j REDSOCKS sudo iptables -t nat -A PREROUTING -p tcp -j REDSOCKS
curl http://ipinfo.io
如果输出的是代理的公网 IP,说明成功。
# 查看OUTPUT 链中跳转的规则 sudo iptables -t nat -L OUTPUT -n -v # 删除 OUTPUT 链中跳转到 REDSOCKS 的规则 sudo iptables -t nat -D OUTPUT -p tcp -j REDSOCKS 2>/dev/null # 删除 PREROUTING 链中跳转到 REDSOCKS 的规则 sudo iptables -t nat -D PREROUTING -p tcp -j REDSOCKS 2>/dev/null # 清空 REDSOCKS 链中所有规则 sudo iptables -t nat -F REDSOCKS 2>/dev/null # 删除 REDSOCKS 链 sudo iptables -t nat -X REDSOCKS 2>/dev/null
sudo iptables -t nat -F sudo iptables -t nat -X REDSOCKS
dnscrypt-proxy
pdnsd
/etc/resolv.conf
curl
apt
可以把所有请求都转发到 127.0.0.1:2000,只要你用 redsocks + iptables 配置正确。
redsocks + iptables
你只需告诉我:
我可以为你生成完整配置并打包成 .sh 脚本运行。
.sh