OpenWRT에서 OpenVPN 사용을 위한 방화벽 netfilter 허용 규칙
이전에 썼던 글에서, OpenWRT에서 OpenVPN 사용을 위한 방화벽 iptables 허용 규칙
방화벽 규칙을 iptables 가 아닌, netfilter로 사용하는 방법입니다. 두 방법에 차이는 없지만, 외국의 사용자들은 netfilter를 더 권장하는 것 같습니다.
/etc/firewall.user는 일종의 custom 룰로 사용하다보니, 좀 더 근본적인 네트워크 필터링?은 netfilter를 더 선호하는 것 같습니다.
/etc/firewall.user 파일에서 사용한 다음의 세 줄이 대상입니다.
###OPENVPN PASS-THROUGH ENABLE RULES###
iptables -I INPUT -p udp --dport 1194 -j ACCEPT
iptables -I FORWARD -i tun+ -j ACCEPT
iptables -I FORWARD -o tun+ -j ACCEPT
----------------------------------------------------------------------------------------------
먼저 위의 세 줄을 모두 주석처리합니다.
# vi /etc/firewall.user
...
###OPENVPN PASS-THROUGH ENABLE RULES###
#iptables -I INPUT -i eth+ -p udp --dport 1194 -j ACCEPT
#iptables -I FORWARD -i tun+ -j ACCEPT
#iptables -I FORWARD -o tun+ -j ACCEPT
...
/etc/config/network 파일에 다음을 추가합니다.
...
...
config interface 'vpn0'
option proto 'none'
option ifname 'tun0'
네트워크 인터페이스를 하나 생성하는 것입니다.
/etc/config/firewall 파일에 다음을 추가합니다.(중간쯤에 추가하면 좋습니다.)
config zone
option input ACCEPT
option output ACCEPT
option name openvpn_zone
option network 'vpn0'
option forward REJECT
config forwarding
option dest lan
option src openvpn_zone
config forwarding
option dest wan
option src openvpn_zone
config forwarding
option dest openvpn_zone
option src lan
config rule
option target ACCEPT
option src wan
option proto udp
option dest_port 1194
option family ipv4
option name 'openvpn2openwrt'
순서대로 설명하면,
먼저 vpn 영역의 zone을 생성해줍니다.
두번째로 포워딩을 정의합니다. 포워딩 룰은 모두 3개를 정의합니다.
vpn 영역에서 lan 영역으로, vpn 영역에서 wan 영역으로, 그리고, lan 영역에서 vpn 영역으로,
총 3개를 정의하면, vpn 상에서 lan 과 wan에 모두 연결이 됩니다.
마지막으로, openvpn 서비스가 사용하는 1194 포트에 대해서 udp 접속이 허가되도록 해줍니다.
이렇게 하고나서, 반드시 OpenWRT 장비를 리부팅해야 됩니다. zone 설정은 시스템이 재시작되어야만 적용되기 때문이라고 합니다.
# /etc/init.d/network restart
# /etc/init.d/firewall restart
만으로는 해결되지 않습니다.
반드시, OpenWRT 장비를 리부팅해야만 합니다.