[firewall예제] Forward wireguard to ipsec/ikev2 tunnel

이전 글에서 방화벽 정책을 이해했으니 이번에는 routeA의 wg0 네트워크 인터페이스에 접속한 wireguard client를 xfrm0 네트워크 인터페이스를 사용하는 ipsec/ikev2 site-to-site vpn에 forward해서 routerB 내부 클라이언트에 접속해 보겠습니다.

관련글

구성

그림1

해결방법

routerA에서 wg0와 xfrm0를 연결해야 하는데 방화벽 정책 관련 글 내용에서 본 것 같지 않나요?

  1. wg0 인터페이스에서 들어오는 목적지 주소 192.168.10.0/2인 패킷을 xfrm0 인터페이스로 전달하는 것을 ACCEPT
  2. xfrm0 인터페이스에는 출발지 주소(wg0의 ip주소)를 xfrm0 외부 인터페이스 주소로 변환해주기 위해 MASQURADE

이렇게 하면 되겠네요.

iptables 명령어로 표현하면 다음과 같습니다.

iptables -I FORWARD 6 -i wg0 -o xfrm0 -d 192.168.10.0/24 -j ACCEPT
iptables -t nat -A POSTROUTING -o xfrm0 -j MASQUERADE

적용

위의 iptables 명령어를 luci 방화벽 정책에서 나타내면 다음과 같이 됩니다.

(wg0 네트워크 인터페이스는 vpn0존에 해당하며 xfrm0 네트워크 인터페이스는 vpn1존에 해당)

/etc/config/firewall

config defaults
        option input 'REJECT'
        option output 'REJECT'
        option forward 'REJECT'
        option synflood_protect '1'
        option flow_offloading '1'

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

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

config zone
        option name 'vpn0'
        option input 'ACCEPT'
        option output 'ACCEPT'
        option forward 'REJECT'
        option mtu_fix '1'
        list network 'wg0'

config zone
        option name 'vpn1'
        option input 'ACCEPT'
        option output 'ACCEPT'
        option forward 'REJECT'
        option masq '1'
        option mtu_fix '1'
        list network 'xfrm0'
        list subnet '10.1.0.0/21'
        list subnet '192.168.10.0/24'

config forwarding
        option src 'lan'
        option dest 'wan'

config forwarding
        option src 'lan'
        option dest 'vpn1'

config forwarding
        option src 'vpn0'
        option dest 'lan'

config forwarding
        option src 'vpn0'
        option dest 'wan'

config forwarding
        option src 'vpn0'
        option dest 'vpn1'

config forwarding
        option src 'vpn1'
        option dest 'lan'
...

해당 인터페이스가 있으면 이런식으로 방화벽 설정을 할 수 있습니다.

Comments

No comments yet. Why don’t you start the discussion?

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다