家里网络设置了旁路由后, OpenVPN 连进来,可以 ping,但是无法正常连接何故?

2021-01-13 10:34:25 +08:00
 nozer

路由配置情况如图,我希望 PC1 也能够正常访问:

有没有懂的,指点指点,不知道如何下手。

11083 次点击
所在节点    程序员
51 条回复
WildCat
2021-05-09 09:54:57 +08:00
特别感谢 @huangya 的帮助,太重要了!

简单总结如下:

1. 旁路由上要建立对应的 iptables 规则:旁路由 <-> 主路由,注意 MASQURADING 必须启用。关于这个选项: https://superuser.com/a/935988
2. 旁路由上配置 OpenVPN 服务。需要注意的是 OpenWrt 的 web UI 不足以满足这个需求,建议 ssh 进去 vim 配置。参考配置如下(关键地方都加了注释): https://gist.github.com/imWildCat/f1b2e38215d967f365d86db6db900956
3. 主路由上配置端口转发(上一步注释里有写)
4. 主路由上配置 LAN static route,参考华硕: https://www.asus.com/uk/support/FAQ/1011706/ (这一步似乎可以省略,如果 (1) 奏效的话)

附图 (1):
yaow
2022-12-02 14:03:45 +08:00
@WildCat 你好,请教一下,我现在也是 ikuai 主+op 旁的组网,想通过 openvpn 连接并且流量过一下 op 网关,问下你最后是采用了楼主提供的方案 2 实现的吗
hs20073
251 天前
@huangya

iptables -t nat -I POSTROUTING 1 -d 10.8.0.0/24 -j ACCEPT

和楼主情况完全一样,做了这个策略,openvpn client 还是无法访问 PC1 ,请教还会是什么原因呢

其他策略如下
iptables -t nat -I POSTROUTING -o eth0 -j MASQUERADE
#iptables -t nat -A PREROUTING -p udp--dport 53 -j REDIRECT --to-ports 53
#iptables -t nat -A PREROUTING -p tcp--dport 53 -j REDIRECT --to-ports 53
# ip6tables -t nat -A PREROUTING -p udp --dport 53 -j REDIRECT --to-ports 53
# ip6tables -t nat -A PREROUTING -p tcp --dport 53 -j REDIRECT --to-ports 53
#iptables -I INPUT -p udp --destination-port 500 -j ACCEPT
#iptables -I INPUT -p udp --destination-port 4500 -j ACCEPT
#iptables -I INPUT -p udp --destination-port 1701 -j ACCEPT
#iptables -I INPUT -p udp --dport 1194 -j ACCEPT
#iptables -A INPUT -p udp -m udp --dport 500 -j ACCEPT
#iptables -A INPUT -p udp -m udp --dport 4500 -j ACCEPT
#iptables -A INPUT -p udp -m udp --dport 1701 -j ACCEPT
huangya
251 天前
@hs20073
执行 iptables -t nat -L -nv 把结果贴出来看看。
preach
220 天前
@huangya 挖坟感谢老哥,没想到一个快 3 年的帖子还在回复 攒
wyh260595711
128 天前
@huangya 我根据 41 楼大哥总结成功在旁路由上设置成功了。他的是 tun 模式,想请教一下如果想用 tap 模式,要如何修改呢?我请教了 GPT 但是根据它的方法,最后重启旁路由后旁路由都没法 ping 通了,只能重新刷旁路由的系统。。。
旁路由的 IP 是 192.168.2.11 。
首先我修改了/etc/config/openvpn 文件
config openvpn 'myvpn'
option port '1194'
option dev 'tap'
option server_bridge '192.168.2.11 255.255.255.0 192.168.2.100 192.168.2.150'
option comp_lzo 'adaptive'
option ca '/etc/openvpn/ca.crt'
option dh '/etc/openvpn/dh.pem'
option cert '/etc/openvpn/server.crt'
option key '/etc/openvpn/server.key'
option persist_key '1'
option persist_tun '1'
option user 'nobody'
option group 'nogroup'
option max_clients '10'
option keepalive '10 120'
option verb '3'
option status '/var/log/openvpn_status.log'
option script_security '2'
option log '/tmp/openvpn.log'
option proto 'udp4'
option ddns '[your_ddns_domain]' #已经填写自己的域名
option mssfix '1420'
option client_to_client '1'
option enabled '1'
list push 'dhcp-option DNS 192.168.2.11'
list push 'redirect-gateway def1'

然后创建 tap0 接口 ip tuntap add dev tap0 mode tap
将 tap0 接口加入到 br-lan 中 brctl addif br-lan tap0
将 tap0 接口配置为 LAN 的桥接接口的一部分,在/etc/config/network 中添加
config interface 'vpn'
option ifname 'tap0'
option proto 'none'
然后在/etc/config/network 中将 tap0 接口添加到 LAN 桥接接口中
config interface 'lan'
option type 'bridge'
option ifname 'eth0.1 tap0'
option proto 'static'
option ipaddr '192.168.2.11'
option netmask '255.255.255.0'
防火墙中原来对应的 iptables 规则 iptables -t nat -A POSTROUTING -o br-lan -j MASQUERADE 也去掉了
然后重启旁路由,然后 PING 不通了,,,
wyh260595711
126 天前
@huangya 大神有空的话指导一下呗,谢谢啦
huangya
126 天前
@wyh260595711 你的意思是内网 192.168.2.xx 的 PC 也 ping 不通旁路由的 192.168.2.11 吗?
huangya
126 天前
@wyh260595711 另外,你为什么要重刷旁路由的系统,reset button 没有或者不起作用是吧?也没有串口,是吧?
wyh260595711
125 天前
@huangya 是的我电脑 192.168.2.X 的网段也 PING 不通路由了,更别说登录 OpenWrt 的后台了,应该还是设置里面有些问题。然后我这个旁路由是 N1 刷的 OpenWrt ,没有 Reset ,可以直接读 USB 里的 openwrt 再写入机器 eMMC ,直接刷机比较方便。
huangya
125 天前
@wyh260595711 你这个要 debug 是要搭建一个环境的。另外最好是要在有串口的环境下 debug 。你应该只有这台 N1 吧?没有其他带串口的机器了吧?如果没有,先回答一下下面的问题:
1. >option ifname 'eth0.1 tap0'
不把 tap0 加入到 bridge 中,能通吗?
2. >防火墙中原来对应的 iptables 规则 iptables -t nat -A POSTROUTING -o br-lan -j MASQUERADE 也去掉了
删除这条规则之前,有哪些规则? 下列命令打出来看看
iptables -t nat -L -nv
iptables -L -nv
iptables -t mangle -L -nv

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/744450

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX