我有两台机器,ip 分别为 192.168.1.31 机器 A 、192.168.1.32 机器 B 。现在 A 可以连接网络,并且部署了代理服务,端口为 1234 。现在 B 也需要连接网络,使用 iptables 将 B 的全部流量转发至 A:1234,实现上网功能

sysctl -w net.ipv4.ip_forward=1

iptables -t nat -A PREROUTING -p tcp -s 192.168.1.32 -j DNAT --to-destination 192.168.1.31:1234


iptables -t nat -A POSTROUTING -p tcp -d 192.168.1.31 -j MASQUERADE

ip route add default via 192.168.1.31


上述配置完后,没有效果

从网上找了找又修改了

sysctl -w net.ipv4.ip_forward=1

iptables -t nat -N V2RAY
iptables -t nat -A V2RAY -d 192.168.0.0/16 -j RETURN
iptables -t nat -A V2RAY -p tcp -j DNAT --to-destination 192.168.1.31:1234
iptables -t nat -A PREROUTING -p tcp -j V2RAY
iptables -t nat -A OUTPUT -p tcp -j V2RAY


还是不生效

是我配置的有问题吗,还是有什么其他原因

最新回复 (5)
  • choury4月前
    引用2
    还是先看下 iptables 的原理吧
    你这第一条命令的效果是,把来源 ip 是 192.168.1.32 的 tcp 报文,目的地址改成 192.168.1.31:1234; 第二条命令的效果是,把所有发到 192.168.1.31 的报文,来源 ip 改成自己网卡的 ip 。
    先不论 A 在 1234 端口提供的是何种代理,按照你这个做法,A 拿到这个 tcp 报文之后,它怎么知道这个包的原始目标是什么?
  • pagxir4月前
    引用3
    你这个 1234 是什么端口,透明代理不应该是用 tproxy 或者 redirect 么。你在 b 上执行 nat ,A 压根不知道你要连接的目标,除非用流量探测
  • povsister4月前
    引用4
    哥们,v2ray 不能当路由用的亲.jpg
  • fngli楼主4月前
    引用5
    @choury 稍后我看看原理。我可以简单理解为:如果使用 iptables 配置代理,只能使用本机吗端口吗
  • kxuanobj4月前
    引用6
    “现在 A 可以连接网络,并且部署了代理服务,端口为 1234 。现在 B 也需要连接网络,使用 iptables 将 B 的全部流量转发至 A:1234,实现上网功能”

    为啥不直接在 B 上加一条路由,把默认网关设置到 A 上呢?
  • 回复请 登录 or 快速注册
返回