将 Xbox 360 连接到 Raspberry Pi 2 以使用 OpenVPN 连接

将 Xbox 360 连接到 Raspberry Pi 2 以使用 OpenVPN 连接

这是我的简要设置:

  • Xbox360
  • 运行 ArchLinuxARM 的 Raspberry PI 2(警报)
  • 树莓派的主以太网端口有一根电缆直接连接到我的主路由器
  • xbox 有一根交叉电缆连接到树莓派上的以太网转 USB
  • 我正在使用 openvpn systemd 服务(创建设备tun0

我购买了一个 VPN 帐户,并希望通过它路由我的 xbox 360 流量。之后正在做 研究,我能够使用我的树莓派作为路由器来获取我的 xbox。我的树莓派通过 连接到网络/互联网eth0,并且有一条交叉电缆通过 连接到我的 xbox eth1

eth0具有 的静态 IP 10.0.0.31eth1具有 的静态 IP 10.0.1.100,并且 xbox 具有 的静态 IP 10.0.1.101

这是我的 iptables 配置:

# Generated by iptables-save v1.4.21 on Mon Apr  6 00:37:36 2015
*filter
:INPUT ACCEPT [91:6512]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [45:4220]
-A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -i eth1 -o eth0 -j ACCEPT
-A FORWARD -d 10.0.1.101/32 -i eth0 -p tcp -m tcp --dport 3074 -j ACCEPT
-A FORWARD -d 10.0.1.101/32 -i eth0 -p udp -m multiport --dports 88,3074 -j ACCEPT
COMMIT
# Completed on Mon Apr  6 00:37:36 2015
# Generated by iptables-save v1.4.21 on Mon Apr  6 00:37:36 2015
*nat
:PREROUTING ACCEPT [8:3607]
:INPUT ACCEPT [2:144]
:OUTPUT ACCEPT [1:86]
:POSTROUTING ACCEPT [2:146]
-A PREROUTING -i eth0 -p tcp -m tcp --dport 3074 -j DNAT --to-destination 10.0.1.101
-A PREROUTING -i eth0 -p udp -m multiport --ports 88,3074 -j DNAT --to-destination 10.0.1.101
-A POSTROUTING -o eth0 -j MASQUERADE
COMMIT
# Completed on Mon Apr  6 00:37:36 2015

我的 xbox 配置是(顺便说一下,使用 google dns):

  • IP 设置:手动
  • IP地址:10.0.1.101
  • 子网掩码:255.255.255.0
  • 网关:10.0.1.100
  • DNS 设置:手动
  • 基本的:8.8.8.8
  • 次要的:8.8.4.4

当我的 VPN 连接关闭时,这可以完美运行。

当我打开 openvpn 服务时,xbox 将不再连接到互联网(显示 DNS 错误),但是,Raspberry Pi 仍然能够上网,并且我可以确认我已成功通过 VPN 路由。

当 VPN 关闭时,Xbox 可以正常连接到互联网并按预期工作。

我不太熟悉 IP 表和这个通用路由设置,不知道是否正在生成日志,问题出在我的 iptables 配置、xbox 还是其他什么。

有什么想法可以解决这个问题吗?

更新:

我已经将另一台 Linux 笔记本电脑(如果重要的话,它正在使用 NetworkManager)连接到eth1,配置如下:

  • IPv4 方法:手动
  • DNS 服务器:10.0.0.1
  • IP地址:10.0.1.101
  • 网络掩码:255.255.255.0
  • 网关:10.0.1.100

当 vpn 连接关闭时,我可以正常使用互联网。当 vpn 开启时,我可以正常访问 LAN(甚至可以使用其10.0.0.31IP 地址通过 ssh 进入 raspberry pi),但是 DNS 不起作用,我也无法 ping 外部地址。

我应该设置一组日志来准确了解正在发生的事情吗?

更新 #2:

我在用这个 arch linux 包对于 OpenVPN 配置文件,并配置一个文件用于自动登录。我注意到它会触发一个以某种方式修改 resolv.conf 的脚本,这可能正在做某事。

答案1

我最终发现另一位导游,针对我想要路由的各种服务稍微修改了 iptables。

最终生成的文件如下所示:

filter

# Allows all loopback (lo0) traffic and drop all traffic to 127/8 that doesn't use lo0
-A INPUT -i lo -j ACCEPT
-A INPUT ! -i lo -d 127.0.0.0/8 -j REJECT

# Accepts all established inbound connections
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

# Forward all data related to our requests
-A FORWARD -j ACCEPT -m state --state ESTABLISHED,RELATED

# Allows all outbound traffic
# You could modify this to only allow certain traffic
-A OUTPUT -j ACCEPT

# Allows HTTP and HTTPS connections from anywhere (the normal ports for websites)
-A INPUT -p tcp --dport 80 -j ACCEPT
-A INPUT -p tcp --dport 443 -j ACCEPT
-A INPUT -p tcp --dport 22 -j ACCEPT

# Allow Transmission daemon from anywhere, with default ports
-A INPUT -p tcp --dport 9091 -j ACCEPT
-A INPUT -p tcp --dport 51413 -j ACCEPT

# Allows SSH connections (change the port number if you need to)
-A INPUT -p tcp -m state --state NEW --dport 22 -j ACCEPT

# Allow ping
-A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT

# log iptables denied calls (access via 'dmesg' command)
-A INPUT -m limit --limit 5/min -j LOG --log-prefix "iptables denied: " --log-level 7

# Reject all other inbound - default deny unless explicitly allowed policy:
-A INPUT -j REJECT

COMMIT

*nat
:PREROUTING ACCEPT [1:148]
:INPUT ACCEPT [1:148]
:OUTPUT ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
-A POSTROUTING -o tun0 -j MASQUERADE

COMMIT

其中一些只是猜测,我相信它可以被优化/改进,但这对我来说是暂时有效的,并且更加通用(没有特定的 IP,等等)。

这确实稍微修改了我的设置;现在我通过 wifi 连接我的 xbox,并且可以手动将我的网关设置为 raspberry pi 的静态 ip;它对 xbox、我的笔记本电脑、手机等都很有用。只需添加新的网络配置文件,我就可以毫无困难地打开和关闭 vpn 连接。

相关内容