서로 다른 네트워크 연결하기(static-routing)

공유기 2대를 연결시 대부분 1대는 dhcp, firewall 등의 기능을 끄고 dumb ap를 만들어 같은 네트워크로 구성하는것이 일반적이라면 일반적인 케이스인데 격리, 분리 등의 이유로 각각의 공유기가 서로 다른 네트워크로 구성할 경우 routing 설정으로 서로 다른 네트워크를 연결하는 예시입니다.

예시

static routing example

그림설명

호스트네임 home인 라우터 lan 포트와 호스트네임 OpenWrt인 라우터 wan포트가 케이블로 연결되어 있으며, home의 ip는 10.1.1.1, 내부는 10.1.1.0/24, OpenWrt는 ip 192.168.1.1, 내부 네트워크 주소는 192.168.1.0/24 입니다. OpenWrt 라우터의 wan의 주소는 home의 dhcp에 의해 10.1.1.212로 할당받은 상태입니다.

이럴 경우 OpenWrt 라우터의 gateway는 home 라우터이므로 방화벽으로 차단하지 않는 이상 인터넷은 물론 home 라우터의 10.1.1.0/24로 접근이 가능하지만, 반대로 home 라우터에서 OpenWrt 라우터 내부 네트워크인 192.168.1.0/24로의 접근은 라우팅을 해주지 않은 이상 접근이 불가능 합니다.

사실 이럴려고 네트워크를 분리하는 건데....아무튼 연결이 필요한 경우도 있으니 라우팅 경로를 추가해 보겠습니다.

ip 명령어로 routing 경로 추가(임시)

ip 명령어는 ip주소, route 등의 설정 조회 및 설정을 할 수 있는 명령어로 라우팅 경로를 추가하는 방법은 다음과 같습니다.

문법 : ip route add <network_ip>/<cidr> via <gateway_ip> dev <output_device_name>

192.168.1.0/24 네트워크로 접근을 하기위해서는 home 라우터 lan 포트에 연결되어 10.1.1.212로 ip가 할당된 경로로 접근을 해야 겠죠. 위의 문법대로 적용하면 다음과 같이 될 겁니다.

ip route add 192.168.1.0/24 via 10.1.1.212 dev br-lan

[email protected]:~# ip route show
default via 58.xxx.xxx.1 dev eth0.2 proto static src 58.xxx.xxx.xxx
10.1.1.0/24 dev br-lan proto kernel scope link src 10.1.1.1
10.1.2.0/24 dev wg0 proto kernel scope link src 10.1.2.1
10.1.3.0/30 dev xfrm0 proto kernel scope link src 10.1.3.1
58.xxx.xxx.0/24 dev eth0.2 proto kernel scope link src 58.xxx.xxx.xxx
192.168.10.0/24 dev xfrm0 proto static scope link src 10.1.1.1
[email protected]:~#
[email protected]:~#
[email protected]:~# ping 192.168.1.1
PING 192.168.1.1 (192.168.1.1): 56 data bytes
^C
--- 192.168.1.1 ping statistics ---
3 packets transmitted, 0 packets received, 100% packet loss
[email protected]:~#
[email protected]:~#
[email protected]:~# cat /tmp/dhcp.leases | grep OpenWrt | cut -f3 -d" "
10.1.1.212
[email protected]:~# ip route add 192.168.1.0/24 via 10.1.1.212 dev br-lan
[email protected]:~# ip route show
default via 58.xxx.xxx.1 dev eth0.2 proto static src 58.xxx.xxx.xxx
10.1.1.0/24 dev br-lan proto kernel scope link src 10.1.1.1
10.1.2.0/24 dev wg0 proto kernel scope link src 10.1.2.1
10.1.3.0/30 dev xfrm0 proto kernel scope link src 10.1.3.1
58.xxx.xxx.0/24 dev eth0.2 proto kernel scope link src 58.xxx.xxx.xxx
192.168.1.0/24 via 10.1.1.212 dev br-lan
192.168.10.0/24 dev xfrm0 proto static scope link src 10.1.1.1
[email protected]:~#
[email protected]:~# ping 192.168.1.1
PING 192.168.1.1 (192.168.1.1): 56 data bytes
64 bytes from 192.168.1.1: seq=0 ttl=64 time=0.660 ms
64 bytes from 192.168.1.1: seq=1 ttl=64 time=0.443 ms
64 bytes from 192.168.1.1: seq=2 ttl=64 time=0.468 ms
^C
--- 192.168.1.1 ping statistics ---
3 packets transmitted, 3 packets received, 0% packet loss
round-trip min/avg/max = 0.443/0.523/0.660 ms
[email protected]:~#
  • ip route show : home 라우터에서 현재 설정된 라우팅 경로를 확인합니다.
  • ping 192.168.1.1 : home 라우터에서 OpenWrt 라우터로 핑을 때리니 핑이 도달할 수 없다고 나오네요. 당연히 라우팅 경로를 지정해 주지 않았으므로 현재 설정대로라면 192.168.1.1로 가는 경로는 default(0.0.0.0)에 해당되며 이것은 eth0.2를 통해 58.xxx.xxx.1로 가는데 사설 네트워크 주소인 192.168.1.1이 응답할리가 없습니다.
  • cat /tmp/dhcp.leases | grep OpenWrt | cut -f3 -d" " : OpenWrt 라우터에게 dhcp로 할당된 ip를 확인합니다. (OpenWrt 측에서 보면 10.1.1.212는 외부 ip)
  • ip route add 192.168.1.0/24 via 10.1.1.212 dev br-lan : 192.168.1.0/24로 가려면 br-lan 장치의 10.1.1.212로 가라고 라우팅 경로를 추가해 줍니다.
  • ip route show : 라우팅 경로가 추가됨을 확인
  • ping 192.168.1.1 : 핑을 날려봅니다. 경로를 지정해 주니 핑이 날아갑니다.

routing 경로 삭제

routing 경로를 삭제하는 방법은 add를 del로 바꿔주기만 하면 됩니다.(참고 : 커널에 의해 생성된 라우팅 경로는 삭제할 수 없습니다.)

문법 : ip route del <network_ip>/<cidr> via <gateway_ip> dev <output_device_name>

ip route del 192.168.1.0/24 via 10.1.1.212 dev br-lan

라우팅 경로 영구 저장

ip 명령어로 routing 경로를 지정시 시스템 재부팅하거나 network 데몬을 재시작 할 경우 routing 설정이 초기화 되므로 /etc/config/network에 다음과 같은 형식으로 저장하고 network를 재시작합니다. (이런식으로 영구저장 할 경우 OpenWrt의 ip를 dhcp할당 받은 주소가 아닌 ip를 고정해 주는 편이 좋겠죠. 고정 ip는 dhcp pool을 피해서요.)

...
config route
        option interface 'lan'
        option target '192.168.1.0/24'
        option gateway '10.1.1.212'

Comments

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

답글 남기기

이메일 주소는 공개되지 않습니다.

76  −  66  =