经过长达近一个星期的折腾,Open×××客户端终于可以和Server内网的客户端进行通信,其中防火墙占用了大部分时间,主要还是不太熟悉Iptables的各种设置方式以及规则(对CentOS7的Firewalld更熟悉),简单写一下Server配置文件以及客户端的配置文件,重点是防火墙!同时感谢 https://wanglu.info/1306.html 这篇文章的作者配置,成功连通了内网。
硬件:Linksys WRT-1900ACS V2
系统:LEDE 17.01.4
本人是想在自己路由器上搭建一个Open×××服务,用来随时访问自己的一些资料,之前有在CentOS7系统及Firewalld.service防火墙下成功搭建过,结果在Openwrt的Iptables栽了很大的跟头,并且主要问题就是自己iptables的防火墙不熟,导致简单的问题查找起来很伤脑筋- -!。
原作者使用的是udp的方式,本人使用的是tcp方式,因为公司宽带很不给力(长宽企业用户,无公网ip),udp方式出不去,所以切换成tcp方式 ,经过测试,如果用udp连接的话请按照原作者的方法可以实现
Server的配置 配置文件在/etc/config/open***
config open*** 'home'
option dev 'tun'
option comp_lzo 'yes'
option keepalive '10 60'
option verb '3'
option server '10.8.0.0 255.255.255.0'
option client_to_client '1'
option port '1194'
option dev_type 'tun'
option proto 'tcp'
option ca '/etc/easy-rsa/keys/ca.crt'
option dh '/etc/easy-rsa/keys/dh2048.pem'
option cert '/etc/easy-rsa/keys/server.crt'
option key '/etc/easy-rsa/keys/server.key'
option enabled '1'
list push 'redirect-gateway def1'
list route "10.8.0.0 255.255.255.0"
#option topology subnet
原作者加了topology subnet ,经过本人测试不加该参数也能够正常使用,不过list push 'redirect-gateway def1' 这个参数如果不加的话,经测试是无法ping通内网,该命令是为了将所有流量通过×××网络进行传输。
Client端的配置
client
dev tun
proto tcp
remote taoyeno1.oicp.net 1194
resolv-retry infinite
nobind
persist-key
persist-tun
ca "C:\\Program Files\\Open×××\\config\\ca.crt"
cert "C:\\Program Files\\Open×××\\config\\taoye.crt"
key "C:\\Program Files\\Open×××\\config\\taoye.key"
ns-cert-type server
#tls-auth ta.key 1
comp-lzo
verb 3
auth-nocache
配置完成后如果防火墙不做配置的话,内网的网关是可以ping通的,但内网的客户端是无法ping通的,而且会提示“来自 10.8.0.1 的回复: 无法连到端口。”的提示。
经过测试,原文作者的文章配置是可以成功ping通内网的,而且可以更简单
直接在/etc/firewall.user下面添加四条规则即可
iptables -I INPUT -i tun+ -j ACCEPT
iptables -I FORWARD -i tun+ -j ACCEPT
iptables -I OUTPUT -o tun+ -j ACCEPT
iptables -I FORWARD -o tun+ -j ACCEPT
即允许外部的流量访问tun网卡,以及允许tun往外访问流量。
每个人的Openwrt配置都不太相同,本人加了这四条命令即可从***客户端访问内网的服务器了,原作者的防火墙规则以及iptables -A nat 均没有添加即可访问,所以还是需要根据情况具体对待。
原创作者地址:https://wanglu.info/1306.html 感谢原作者的辛勤付出!
转载于:https://blog.51cto.com/taoyeno1/2091926