假设我有一个设备通过 USB 通过 IP 连接到我的计算机(运行 Ubuntu),该设备连接到 10.0.0.1。我通过 USB 配置了 Ubuntu 的 Wifi,以便我的计算机在该连接上的 IP 为 10.0.0.1,但实际上我想将所有流量(在所有端口上)重定向到另一台服务器,并仅使用我的计算机作为代理。
我尝试了一些解决方案,但我对网络概念缺乏熟悉,这拖慢了我的速度(我花了太多时间查找东西,而且文档通常有点缺乏)。我什至不确定是否要设置代理、防火墙(我不这么认为)或使用路由表。我想做的事情听起来很简单(“将来自 USB 上的 IP 的任何内容重定向到那边的服务器”)。那么有没有标准的方法可以做到这一点? iptables?乌贼?乌沃夫?
答案1
您所要求的称为NAT
“网络地址转换”。有许多工具可以提供 NAT 功能,但在 IP 地址级别,使用 iptables 可能是最简单的:
iptables -t nat -I PREROUTING -d 10.0.0.1 --j DNAT --to 10.x.x.x
在 iptables 的特殊 nat 表中-t nat
,在 PREROUTING 链 ( -I PREROUTING
) 上的第一条规则处插入,提供目标 nat -j DNAT
,其中传入目标 IP 为 10.0.0.1 ( -d 10.0.0.1
) 到主机 10.xxx ( --to 10.x.x.x
)。
您可能还需要启用 IP 转发,以便您的主机充当网络路由器:
sysctl -w net.ipv4.ip_forward=1
应该就是这样! (就像你想象的那么简单!)
哦,这两个都需要以 root 用户身份运行,或者通过 sudo 运行(如果您有权通过 sudo 运行这些命令!)