我在这里尝试做的是连接到位于 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
最后,您不能对速度有太快的期望:数据包被重新路由、压缩、加密,反之亦然(解密、解压缩),因此这些过程会消耗一些时间。