当您想要在计算机上“绑定”eth 和 wlan 时,请使用ip_forwarding
设置为 1。
如何“路由/绑定”这样的配置来访问 VPN 服务器从 wlan
, 通过eth
?
anna 客户端 <-->wifi (wlan:13.37.42.1) [计算机] eth0 <-- VPN --> 服务器 3.1.170.110
目前它不起作用。发生了什么:Anna ping 并得到:
- ping 13.37.42.1 => 正常
- ping 3.1.170.110 => 正常
- ping 8.8.8.8 => 失败 (GoogleDNS)
- ping anydomain.any => 失败(确实,因为 DNS 无法访问)
- ping 任何其他IP=> 失败
____ VPN 时的路由在:
Destination Passerelle Genmask Indic Metric Ref Use Iface
default 10.8.0.77 128.0.0.0 UG 0 0 0 tun0
default 192.168.0.1 0.0.0.0 UG 0 0 0 eth0
10.8.0.1 10.8.0.77 255.255.255.255 UGH 0 0 0 tun0
10.8.0.77 * 255.255.255.255 UH 0 0 0 tun0
13.37.42.0 * 255.255.255.0 U 0 0 0 wlan0
ns350510.ip-3-1 192.168.0.1 255.255.255.255 UGH 0 0 0 eth0
128.0.0.0 10.8.0.77 128.0.0.0 UG 0 0 0 tun0
link-local * 255.255.0.0 U 1000 0 0 eth0
192.168.0.0 * 255.255.254.0 U 0 0 0 eth0
___ 路由(VPN 时)离开
Destination Passerelle Genmask Indic Metric Ref Use Iface
default 192.168.0.1 0.0.0.0 UG 0 0 0 eth0
13.37.42.0 * 255.255.255.0 U 0 0 0 wlan0
link-local * 255.255.0.0 U 1000 0 0 eth0
192.168.0.0 * 255.255.254.0 U 0 0 0 eth0
__ 计算机的IPtables(提供WIFI AP并链接到VPN服务器):
# Generated by iptables-save v1.4.21
*mangle
:PREROUTING ACCEPT [7471:1066114]
:INPUT ACCEPT [5960:830272]
:FORWARD ACCEPT [1339:216774]
:OUTPUT ACCEPT [717:92366]
:POSTROUTING ACCEPT [2116:318321]
:internet - [0:0]
-A PREROUTING -j internet
-A internet -m mac --mac-source 60:F8:4D:BE:43:AE -j RETURN
-A internet -j MARK --set-xmark 0x3e7/0xffffffff
COMMIT
# Completed
# Generated by iptables-save v1.4.21
*nat
:PREROUTING ACCEPT [1710:298954]
:INPUT ACCEPT [1480:280336]
:OUTPUT ACCEPT [28:4162]
:POSTROUTING ACCEPT [86:6162]
-A PREROUTING -i wlan0 -p tcp -m mark --mark 0x3e7 -m tcp --dport 80 -j DNAT --to-destination 13.37.42.1:80
-A PREROUTING -i wlan0 -p tcp -m mark --mark 0x3e7 -m tcp --dport 443 -m conntrack --ctstate NEW -j DNAT --to-destination 13.37.42.1:80
-A POSTROUTING -o eth0 -j MASQUERADE
-A POSTROUTING -o wlan0 -j MASQUERADE
COMMIT
# Completed
# Generated by iptables-save v1.4.21
*filter
:INPUT ACCEPT [6041:840617]
:FORWARD ACCEPT [380:110945]
:OUTPUT ACCEPT [753:102159]
-A FORWARD -i wlan0 -j ACCEPT
COMMIT
# Completed
答案1
你并不真正绑定bind
eth0
和 ,tun0
正如你不绑定wlan0
和一样tun0
。实际上,您可以通过设置 来允许数据包从一个接口传递到另一个接口,ip_forwarding=1
或者通过更改 永久地更改/etc/sysctl.conf
,或者通过 echo
-ing 1临时地设置/proc/sys/kernel/net/ipv4/ip_forward
。
唯一缺少的是数据包标头的更改:如果您只是让它们按原样通过,则数据包将携带发出计算机的原始 IP,而不是它们退出您的接口的 IP。系统(wlan0
在本例中为 )。所以你需要iptables
让他们看起来像是来自wlan0
,以便他们找到回家的路。iptables
自动记住哪个连接必须路由回tun0
,以及哪个连接不需要:
iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE
编辑:
您正在尝试使您的电脑与您的eth0
和保持同时连接wlan0
。我给你的说明假设你是仅有的通过wlan0
.连接。您应该断开与以太网的连接,重新启动 openvpn,并检查它们是否确实工作。
eth0
同时保持两者wlan0
连接,启动 OpenVPN 实例并通过 OpenVPNwlan0
路由 LAN 流量tun0
能可以完成,但需要不同的技术。我建议你对此提出一个不同的问题。