最近实践了一下利用Openwrt路由部署Openvpn进行两地组网,目标是实现两个局域网互相访问。
配置:
1.Openvpn服务端(内部局域网段172.24.1.0/24):
首先/etc/config/network配置加一个interface:

config interface 'vpn1'
    option proto 'none'
    option ifname 'tun1'

/etc/config/openvpn文件增加内容:

 
config openvpn 'tun_router'
        option port '3377'
        option proto 'tcp'
        option dev 'tun1'
        option ca '/etc/openvpn/ca.crt'
        option cert '/etc/openvpn/server.crt'
        option key '/etc/openvpn/server.key'
        option dh '/etc/openvpn/dh2048.pem'
        option server '10.0.1.0 255.255.255.0'
        option client_config_dir '/etc/openvpn/ccd'
        option ccd_exclusive '1'
        option ifconfig_pool_persist '/tmp/ipp3.txt'
        option client_to_client '1'
        option keepalive '10 120'
        option compress 'lzo'
        option persist_key '1'
        option persist_tun '1'
        option status '/tmp/openvpn-status3.log'
        option verb '3'
        option enabled '1'
        option topology 'subnet'
        list push 'route 172.24.1.0 255.255.255.0'
        list route '172.24.8.0 255.255.255.0'

/etc/openvpn/ccd文件夹内增加一个文件,文件名为客户端证书的common name,例如tbjj,内容为:

ifconfig-push "10.0.1.6 255.255.255.0"
iroute 172.24.8.0 255.255.255.0

然后在防火墙自定义规则里面添加:

iptables -I INPUT 1 -p tcp --dport 3377 -j ACCEPT
iptables -I INPUT 1 -p udp --dport 3377 -j ACCEPT
iptables -A FORWARD -i tun1 -s 10.0.1.0/24 -d 172.24.1.0/24 -j ACCEPT
iptables -A FORWARD -i tun1 -s 172.24.8.0/24 -d 172.24.1.0/24 -j ACCEPT
iptables -I INPUT -i tun1 -s 172.24.8.0/24 -j ACCEPT
iptables -A FORWARD -o tun1 -s 172.24.1.0/24 -j ACCEPT

2.Openvpn客户端(内部局域网段172.24.8.0/24):
首先/etc/config/network配置加一个interface:

config interface 'vpn1'
    option proto 'none'
    option ifname 'tun1'

/etc/config/openvpn文件增加内容:

config openvpn 'vpn_client'
        option client '1'
        option dev 'tun1'
        option proto 'tcp'
        list remote '远端地址 3377'
        option remote_cert_tls 'server'
        option remote_random '1'
        option resolv_retry 'infinite'
        option persist_key '1'
        option persist_tun '1'
        option ca '/etc/openvpn/ca.crt'
        option cert '/etc/openvpn/tbjj.crt'
        option key '/etc/openvpn/tbjj.key'
        option compress 'lzo'
        option verb '3'
        option enabled '1'
        option nobind '1'
        option auth_nocache '1'

        

然后防火墙自定义规则添加:

iptables -I INPUT 1 -p tcp --dport 1195 -j ACCEPT
iptables -I INPUT 1 -p udp --dport 1195 -j ACCEPT
iptables -A FORWARD -i tun1 -s 172.24.1.0/24 -d 172.24.8.0/24 -j ACCEPT
iptables -I INPUT -i tun1 -s 172.24.1.0/24 -j ACCEPT
iptables -A FORWARD -i tun1 -s 10.0.1.0/24 -d 172.24.8.0/24 -j ACCEPT
iptables -A FORWARD -o tun1 -s 172.24.8.0/24 -j ACCEPT
 

3.最后重启两个路由,2个局域网就可以互相访问了。

参考资料:
1.http://blog.ltns.info/linux/connect_two_home_networks_using_openvpn_and_openwrt/