linux网络运维

最后发布时间:2025-06-12 18:29:10 浏览量:

查看网线是否连接

cat /sys/class/net/ens9f1/carrier

1代表网线已连接,0代表网线未连接

查看网络状态

nmcli device status

nmtui可视化工具

生信小木屋

生信小木屋

生信小木屋

网关查看

ip route 
route -a

apt download redsocks

ssh 动态端口转发

在B主机运行ssh -D 1080 user@A主机IP,流量会通过 A 主机转发到公网 B

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添加一条 NAT 表的 POSTROUTING 规则(用于源地址伪装)
-s B主机的内网IP/32指定从 B 主机发出的流量(内网 IP)
-o eth0指定出接口为 eth0(A 主机通向公网的网卡)
-j MASQUERADE使用地址伪装(SNAT)把源 IP 改为 A 主机公网 IP

⚙️ 此命令的作用

将 B 主机的流量伪装成 A 主机的流量从 A 主机上网(“共享上网”)。

✅ 你还需要在 A 主机:

sudo sysctl -w net.ipv4.ip_forward=1

开启 IP 转发,允许 A 主机转发来自 B 主机的网络包。

可加入 /etc/sysctl.conf 永久生效:

net.ipv4.ip_forward = 1

✅ 你还需要在 B 主机:

  • 设置默认网关为 A 主机的 IP:
sudo ip route add default via A主机的内网IP

或者修改 /etc/netplan/*.yaml/etc/network/interfaces(视你的网络管理方式而定)。

如果你提供 B 主机的 IP 和 A 主机连接外网的网卡名称(如 eth0/ens33),我可以帮你写完整配置命令。

是的,可以把所有请求(主要是 TCP 流量)通过 iptables 全部转发到本地的 127.0.0.1:2000 端口,但这要依赖中间工具(如 redsockstun2socks)来处理协议兼容性问题。

✅ 目标理解:

你问的是:

能否将系统发出的所有网络请求(例如浏览器、curl、apt 等)都自动转发到 127.0.0.1:2000,让其代理出网?

答案是:可以!
但方式取决于你这个 2000 端口是什么类型的代理服务(HTTP/SOCKS5/TUN)。

🧭 方案一览:

类型代理形式是否支持 iptables 直接转发是否需工具推荐工具
HTTP 代理(127.0.0.1:2000)普通 Web 代理❌不支持直接转发✅需要redsocks
SOCKS5 代理如 ssh -D、本地代理❌不支持直接转发✅需要redsocks, tun2socks
透明代理 / VPN隧道支持 TUN 接口❌无需中间服务iptables + TUN

🔧 方法:用 redsocks 转发所有流量到 127.0.0.1:2000

✅ 条件:

你已经有一个在 127.0.0.1:2000 上监听的 HTTP 或 SOCKS5 代理程序(如:ssh -D 2000 ...,或 privoxy,或其他本地代理服务)

🧱 步骤详解:

1️⃣ 安装 redsocks

sudo apt update
sudo apt install redsocks -y

2️⃣ 配置 /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;

3️⃣ 启动 redsocks

sudo redsocks -c /etc/redsocks.conf

4️⃣ 设置 iptables,把所有流量重定向到 redsocks

# 创建 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

5️⃣ 验证效果

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

🚫 注意事项

  • redsocks 只能转发 TCP 流量,不支持 UDP(如 DNS 请求等)
  • DNS 建议配合 dnscrypt-proxypdnsd、或将 /etc/resolv.conf 指向外部
  • 适用于所有标准 TCP 流量:curlapt、浏览器等

✅ 总结

可以把所有请求都转发到 127.0.0.1:2000,只要你用 redsocks + iptables 配置正确。

你只需告诉我:

  • 你的 2000 端口是 HTTP 代理?SOCKS5?
  • 是否需要一键自动化脚本?

我可以为你生成完整配置并打包成 .sh 脚本运行。

类型代理形式是否支持 iptables 直接转发是否需工具推荐工具
HTTP 代理(127.0.0.1:2000)普通 Web 代理❌不支持直接转发✅需要redsocks
SOCKS5 代理如 ssh -D、本地代理❌不支持直接转发✅需要redsocks, tun2socks
透明代理 / VPN隧道支持 TUN 接口❌无需中间服务iptables + TUN