我如何在本地网络上将 10.0.0.116 IP 伪装成 192.168.1.*

我如何在本地网络上将 10.0.0.116 IP 伪装成 192.168.1.*

我在这里尝试做的是连接到位于 VPN 后面远程的 PS3 媒体服务器。

这就是我的网络的样子

PS3 媒体服务器:IP:10.0.0.116

PlayStation 3:IP 192.168.1.116

我正在使用 Drytek vigor 2920N 连接到远程网络。站点到站点(LAN 到 LAN)。我的实验室是这样的

这里的问题不是我无法连接到 PS3 媒体服务器。问题是 PlayStation 3 无法在“VPN 网络”上找到 PS3 媒体服务器,因为它位于其他 IP 范围内。看来 Play Station 只在自己的网络范围内寻找媒体服务器。

我可以 ping 10.0.0.116,并使用 ssh 从 192.168.1.0/24 网络上的另一台计算机连接到它。

我的问题是:

我如何在本地网络上将 10.0.0.116 IP 伪装成 192.168.1.*。或者如果有人知道如何让 PS3 在其他网络范围内寻找媒体服务器,这对我来说也是一个同样好的解决方案。

答案1

是的,如果您在 192.168.1.0/24 网络上有一台 *Nix 电脑,则可以完成此操作。Unix 和 Linux 上都可以完成此操作,但我只针对 Linux 电脑提供详细信息。

基本策略是在 Linux PC 上构建一个虚拟接口(它将充当中介),我们将从该接口将所有流量重新路由到 PS3 服务器。我们使用虚拟接口,这样常规 NIC 上的所有端口都处于空闲状态。

首先,您必须允许 IPv4 转发,并禁止反向路径过滤:

  echo 1 > /proc/sys/net/ipv4/ip_forward
  echo 0 > /proc/sys/net/ipv4/conf/default/rp_filter 
  echo 0 > /proc/sys/net/ipv4/conf/all/rp_filter 

您可以通过取消注释并将文件 /etc/sysctl.conf 中的相应项目设置为所需值,然后运行来获得相同的结果:

  sysctl -p

请注意,这种效果是永久性的,而回声的效果在重启后消失。

现在我们创建虚拟接口

  ip link add link eth0 mac0 address 56:61:4f:7c:77:db type macvlan
  ip link set mac0 up
  dhclient mac0 

然后我们存储新创建的虚拟接口的 IP 地址mac0在 shell 变量中:

 IPMAC0=$(ifconfig | grep -A 1 mac0 | grep inet | awk '{print $2}' | awk -F ":" '{print $2}')

现在我们设置策略路由:

 ip route add default via Your_Gateway_Address dev mac0 table 200
 ip route add Your_LAN_net dev mac0 src $IPMAC0 table 200
 ip route del Your_LAN_net dev mac0 table main
 ip rule add from $IPMAC0 table 200

现在我们使用 iptables 将所有流量重定向到 PS3

 iptables -t nat -A PREROUTING  -d $IPMAC0  -j DNAT --to-destination 10.0.0.116
 iptables -t nat -A POSTROUTING  -d 10.0.0.116 -j MASQUERADE

最后,您不能对速度有太快的期望:数据包被重新路由、压缩、加密,反之亦然(解密、解压缩),因此这些过程会消耗一些时间。

相关内容