블로그 이미지
훅크선장

카테고리

분류 전체보기 (362)
사진이야기 (23)
펭귄컴퓨팅 (121)
컴퓨터보안 (84)
절름발이 프로그래머 (59)
하드웨어개조 (23)
멀알려줄까 (35)
홈베이킹&홈쿠킹 (2)
잡다한것들 (15)
Total
Today
Yesterday

달력

« » 2024.4
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30

공지사항

태그목록

최근에 올라온 글

OpenWrt Chaos Calmer 15.05 에서 테스트된 내용으로,

OpenVPN 클라이언트가 OpenWRT의 OpenVPN 서비스로 접속하여, 인터넷을 하기 위한 iptables 규칙을 설명합니다. (클라이언트의 패킷들이 OpenWRT 공유기를 통하여, 인터넷으로 Forwarding 되기 위한 조건)


/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


앞의 첫째 줄,

iptables -I INPUT -p udp --dport 1194 -j ACCEPT

이것들은 1194 포트(OpenVPN의 디폴트 Listen 포트번호)로 들어오는 udp 패킷을 받아들이는 것입니다.

이 라인이 없으면, OpenVPN 서비스 접속 자체가 불가능합니다.

만약 특정 네트워크 인터페이스에서만, OpenVPN 서비스를 사용한다면, 다음과 같이 인터페이스를 지정할 수 있습니다.

iptables -I INPUT -i eth0 -p udp --dport 1194 -j ACCEPT


eth0는 예로 든 것입니다. 일반적으로는 ifconfig  명령을 실행한 다음, 인터넷과 연결된 WAN 인터페이스를 찾아야 합니다. 경험상으로 eth0 또는 eth1이 주로 WAN 인터페이스입니다만, 어느쪽이 될지는 OpenWRT가 설치된 장비에 따라 틀립니다. 반드시 확인하시기 바랍니다.


만약 OpenVPN을 tcp 모드로 사용한다면,  다음과 같이 수정해서 사용하여야 한다. (OpenVPN은 udp 모드로 사용해야 좋습니다. udp 모드가 tcp 모드에 비해 속도가 빠르다고 합니다.)

iptables -I INPUT -p tcp --dport 1194 -j ACCEPT

--dport 뒤에 쓰여진 1194 라는 번호도 역시 디폴트 OpenVPN 포트번호이므로, 혹시 다른 포트를 사용하기로 설정했다면, 여기도 수정해서 사용해야 한다.


그 뒤의 두 줄,

iptables -I FORWARD -i tun+ -j ACCEPT

iptables -I FORWARD -o tun+ -j ACCEPT

이것들은 OpenVPN으로 연결된(tun 디바이스명을 가진) 네트워크 어댑터들의 패킷들이 다른 네트워크 디바이스 쪽으로 서로 왕래할 수 있도록 합니다.


-i tun+ 가 있는 줄은 tun 디바이스 명을 가진 네트워크 어댑터에서 출발한 패킷들이 다른 네트워크 어댑터, 즉 OpenWRT 공유기의 LAN 영역이나 WAN 영역으로 전달될 수 있도록 하는 것입니다.

-o tun+ 가 있는 줄은 OpenWRT 공유기의 LAN 영역이나 WAN 영역에서 출발한 패킷들이(아마도 대부분은 윗 줄의 패킷들에 대한 응답들이 많은) tun 디바이스명을 가진 네트워크 어댑터쪽으로 다시 들어올 수 있도록 하는 것입니다.


------------------------------------------

대부분의 OpenWRT의  OpenVPN 서비스가 사용할 빈도가 적겠지만,

만약 OpenVPN 서비스에 접속한 외부의 클라이언트들이 OpenWRT 내부의 LAN 영역에만 접근가능하도록 하고, 인터넷을 사용하지 못하게 하려면, (ex. 회사내의 서버만을 연결하는 경우)


위에서 설명한 FORWARD 규칙 두 줄을 다음과 같이 수정하면 됩니다.

iptables -I FORWARD -i tun+ -d 192.168.1.0/24 -j ACCEPT

iptables -I FORWARD -o tun+ -s 192.168.1.0/24 -j ACCEPT


여기서, 192.168.1.0 네트워크는 OpenWRT의 내부 LAN  IP 대역을 지칭하는 것입니다. 여러분의 환경에 맞게 확인하시고 입력하시면 됩니다.


 -d 192.168.1.0/24 를 -o br-lan 으로,  -s 192.168.1.0/24 를 -i br-lan  으로 바꾸어 쓸 수 없습니다. (br-lan은 OpenWRT의 내부 LAN 영역을 지칭하는 디바이스명입니다.) 이유는 확실하지 않지만, 일단 br-lan 영역에 패킷이 들어오면, 공유기의 기본 기능으로 인하여, 패킷이 인터넷으로 포워딩되는 것 같습니다.

개인적으로는 'br-lan' 이라는 이름보다는 IP 주소를 명시적으로 사용하는 것이 직관적이라고 생각됩니다.

Posted by 훅크선장
, |