Openwrt에서 VPN 터널을 통해 모든 LAN 트래픽을 라우팅하도록 openvpn 클라이언트 구성


1

Raspberry pi 2 위에서 OPENWRT 혼돈 진정기를 실행하고 있습니다. OPENVPN 클라이언트 및 클라이언트가 VPN 터널을 통해 트래픽을 라우팅하도록 구성했습니다. 그러나 pi LAN 인터페이스를 재부팅하면 짧은 시간 동안 WAN 인터페이스에 직접 연결하고 트래픽을 VPN 터널 외부로 라우팅합니다. 이것은 아주 작은 시간 동안 만 발생합니다. (VPN 클라이언트를 시작해야하는 시간). 그러나 나는 이것을 멈춰야한다. VPN 클라이언트를 통해 거의 모든 트래픽을 항상 라우팅해야하며 연결되지 않은 VPN 사용자가 인터넷에 액세스 할 수없는 경우. 이 설정으로 TINYPROXY라는 프록시 클라이언트를 구성했으며 문제가 발생할 수 있습니다. 그러나 나는 이것을 막는 방법을 모른다.

이것들은 내 설정입니다

/ etc / config / network

config interface 'loopback'
    option ifname 'lo'
    option proto 'static'
    option ipaddr '127.0.0.1'
    option netmask '255.0.0.0'

config interface 'lan'
    option ifname 'eth0'
    option proto 'static'
    option netmask '255.255.255.0'
    option ipaddr '192.168.2.1'
    option dns '8.8.8.8 8.8.4.4'

config interface 'wan'
    option ifname 'eth1'
    option proto 'dhcp'
    option peerdns '0'
    option dns '8.8.8.8 8.8.4.4'

config globals 'globals'
    option ula_prefix 'fd14:b495:5965::/48'

config interface 'vpn0'
    option ifname 'tun0'
    option proto 'none'
    option auto '1'
    option delegate '0'

/ etc / config / firewall

config defaults
    option syn_flood '1'
    option input 'ACCEPT'
    option output 'ACCEPT'
    option forward 'ACCEPT'

config zone
    option name 'lan'
    option input 'ACCEPT'
    option output 'ACCEPT'
    option forward 'ACCEPT'
    option network 'lan'

config zone
    option name 'wan'
    option output 'ACCEPT'
    option masq '1'
    option mtu_fix '1'
    option input 'ACCEPT'
    option forward 'ACCEPT'
    option network 'wan wan6 vpn0'

config rule
    option name 'Allow-DHCP-Renew'
    option src 'wan'
    option proto 'udp'
    option dest_port '68'
    option target 'ACCEPT'
    option family 'ipv4'

config rule
    option name 'Allow-Ping'
    option src 'wan'
    option proto 'icmp'
    option icmp_type 'echo-request'
    option family 'ipv4'
    option target 'ACCEPT'

config rule
    option name 'Allow-IGMP'
    option src 'wan'
    option proto 'igmp'
    option family 'ipv4'
    option target 'ACCEPT'

config include
    option path '/etc/firewall.user'

config redirect
#   option target 'DNAT'
#   option dest 'vpn'
    option name 'Transparent Proxy Redirect'
    option src 'lan'
    option proto 'tcp'
    option dest_port '8888'
    option src_dport '80'
    option src_dip '!192.168.2.1'
    option dest_ip '192.168.2.1'

config zone
    option name 'vpn'
    option masq '1'
    option input 'ACCEPT'
    option forward 'ACCEPT'
    option output 'ACCEPT'
    option network 'vpn0'

config forwarding
    option src 'vpn'
    option dest 'lan'

/ etc / config / tinyproxy

config tinyproxy
    option enabled '1'
    option User 'nobody'
    option Group 'nogroup'
    option Port '8888'
    option Timeout '600'
    option DefaultErrorFile '/usr/share/tinyproxy/default.html'
    option StatFile '/usr/share/tinyproxy/stats.html'
    option LogFile '/var/log/tinyproxy.log'
    option LogLevel 'Info'
    option MaxClients '100'
    option MinSpareServers '5'
    option MaxSpareServers '20'
    option StartServers '10'
    option MaxRequestsPerChild '0'
    option ViaProxyName 'tinyproxy'
    list Allow '127.0.0.1'
    list Allow '192.168.2.1/24'
    list ConnectPort '443'
    list ConnectPort '563'
    list ConnectPort '80'
    option Filter '/www/textui/tinyproxy/blocked.txt'

나는 이것을 정확하게 달성하고 싶다

사용자-> LAN-> TINYPROXY-> VPN-> WAN

TINYPROXY가 완벽하게 작동합니다. 다른 모든 구성은 정상적으로 작동합니다. PI 재부팅시 짧은 시간 동안 만 문제가 발생합니다.

누군가 나를 도울 수 있습니까?


OpenVPn을 설정하기 전에 어떤 종류의 트래픽이 발생합니까? DHCP 트래픽입니까?
MariusMatutiae

기본값으로 재설정하고 모든 것을 허용하도록 규칙을 변경하지 마십시오. 그런 다음 방화벽을 LAN에서 VPN으로 전달하도록 설정하십시오 .
qasdfdsaq

@MariusMatutiae ping 명령을 사용하여 확인합니다. 즉시 재부팅 몇 ICMP 패킷은 터널 외부 가서 (핑은 DNS를 8.8.8.8를 Google에)
gripenfighter

@qasdfdsaq 파이를 기본 공장 설정으로 재설정 하시겠습니까? 할 수는 있지만 모든 패키지를 다시 구성해야합니다. 이 문제를 해결하는 쉬운 방법이 있습니까? 재설정하지 않고?
gripenfighter

아니요. Openwrt의 방화벽을 기본값으로 재설정합니다.
qasdfdsaq

답변:


0

이것은 어려운 질문입니다. 부분 솔루션과 전체 솔루션을 테스트 할 아이디어를 제공 할 수 있습니다.

경우 이 일반 리눅스, 예를 들어 데비안처럼, 하나의 파일에 삽입 할 수 있었다 /etc/network/interfaces외부 인터페이스 (현실을 부르 자에 대한 스탠자에, wan), 다음 줄 :

  pre-up iptables -A OUTPUT -s 192.168.0.0/24 -o wan -j DROP

여기서 LAN이 192.168.0.0/24라고 가정했습니다. 우리가 사용한다는 사실 pre-upwan인터페이스가 시작될 때 방화벽 규칙이 유효하다는 것을 확실하게 만듭니다 . 규칙과 함께 :

 iptables -t nat -A POSTROUTING -o wan -j MASQUERADE 

tun0OpenVPN이 서버에 연결하기를 기다리는 동안 일부 패킷 이 삭제 되더라도 LAN의 패킷 만 통과 할 수 있습니다.

그러나 OpenWRT의 웹 페이지에서 pre-up위 의 조건에 대한 대체물을 찾을 수 없었습니다 . 따라서 위의 두 가지 규칙으로 방화벽을 설정하면 LAN의 패킷이 라우터를 OpenVPN 외부로 나가지 않을 것이 확실 하지만 네트워킹 전에 iptables 방화벽이 작동하는지는 확실하지 않습니다.

에서 이 OpenWRT 위키 페이지 , 다른 서비스의 실행 순서를 설명한다 :

rcS는 "start"옵션을 사용하여 /etc/rc.d/S##xxxxxx에있는 실제 시작 스크립트에 대한 심볼릭 링크를 실행합니다.

.....

S40network는 네트워크 서브 시스템을 시작합니다 (run / sbin / netifd, up interfaces and wifi)

S45firewall은 / etc / config / firewall에서 방화벽 규칙을 만들고 구현합니다.

두 서비스가 차례로 시작되어 패킷을 전달할 시간이 거의 없다는 것을 알 수 있습니다. 이것은 OpenVPN이 오기를 기다리는 것보다 확실히 좋습니다. 이것은 내 부분적인 해결책입니다 .LAN 패킷이 통과하는 시간을 단축했기 때문에 부분적이지만 이번에 는 만들지 않았습니다..=0

당신은 두 개의 서비스를 반전하려고 할 수 있습니다 즉, 그 이름을 변경 :

      S40firewall
      S45network    

이것이 작동하는지 확인하십시오. iptables/netfilter보호하려고하는 인터페이스가 존재하지 않을 때 무엇을하는지 확실 하지 않습니다. 내 데비안에서는 잘 작동했지만 OpenWRT가 없기 때문에 긍정적으로 생각할 수는 없습니다. 이것이 전체 솔루션에 대한 나의 제안입니다. 건배.


완전한 답변을 주셔서 감사합니다. 나는 이것을 시도하고 알려줄 것이다. Netfilter는 iptables를 사용하여 작업을 수행하지만 iptables를 직접 변경하려는 경우 netfilter가 구성한 규칙은 어떻게됩니까? 테스트를 위해 vbox에서 openwrt chaos calmer를 사용합니다. dropbox.com/s/gvefvvjm88hs3zp/…
gripenfighter

@charith iptables는 netfilter의 USERland 측입니다.
MariusMatutiae

0

문제는에서 패킷이 전송되지 않고 lan프록시를 실행하는 라우터 에서 전송된다는 것 입니다. 방화벽 에는 라우터 의 VPN 통해 나가는 트래픽을 강제로 적용하는 규칙이 없습니다 .

나는 이것을 시도하지 않았지만 ...

인터페이스 option output REJECT에서 설정 한 다음 wan인터페이스에서 나가는 트래픽 wan이 VPN이 시작되기 전에 라우터 (dhcp, OpenVPN)에 필요한 서버 및 포트로 나가는 트래픽을 허용하는 특정 규칙을 추가하십시오 . 이러한 규칙, 당신은해야 option output ALLOW하고 option dest wan있지만 설정하지 마십시오 src.

또는 영역에서 나가는 트래픽을 계속 허용하고 완에 대한 HTTP 트래픽을 차단하는 규칙을 만듭니다. 다시 설정하지 마십시오 src.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.