본문 바로가기

Linux/systemd

systemd-networkd로 SIT 터널링 설정하기

앞으로 티스토리 대신 blog.stackframe.dev에서 블로깅을 합니다. 이 블로그는 남겨 둘 예정입니다.

이전 글로 터널브로커로 IPv6 터널링을 하는 방법을 설명했습니다.

 

tunnelbroker.net으로 공인 IPv6 할당받기

한국에서는 아직 개인 인터넷에 IPv6를 할당하는 ISP가 없습니다. 하지만 NAS나 서버를 집에서 운영하거나 실험적인 목적으로 IPv6를 할당받고 싶은 사람도 있습니다. 그런 분들을 위해 IPv4를 통해 IPv6 패킷을..

stackframe.tistory.com

저 글에서는 명령으로만 터널링을 설정한 관계로 리부팅하면 초기화된다는 단점이 있었습니다. 이번 글에서는 systemd-networkd를 통해 리부팅을 하여도 인터페이스가 유지되도록 설정하는 방법을 설명하겠습니다.

 

먼저 준비되어야 할 것은 systemd-networkd로 컴퓨터의 네트워크가 관리되고 있어야 한다는 점입니다.

 

systemd-networkd는 /etc/systemd/network/ 디렉토리에 사용자가 .netdev .network 설정 파일을 만들어서 네트워크 인터페이스를 추가, 관리할 수 있습니다.

 

SIT 터널링 인터페이스를 만들기 위해서 먼저 ipv6-tunnel.netdev 라는 파일을 추가합시다.

[NetDev]
Name=ipv6-tunnel
Kind=sit
MTUBytes=1480

[Tunnel]
Local=any
Remote=<서버 IPv4 주소>
TTL=255

원래는 Local에 자신의 IPv4 주소를 적어야 하지만 systemd-networkd에서 any 라는 값을 특수한 값도 지정할 수 있게 되어있습니다. any를 설정하면 컴퓨터의 IPv4 주소가 바뀌어도 설정 파일을 수정하지 않아도 됩니다.

 

다음은 위에서 만들었던 ipv6-tunnel 인터페이스 설정과 라우팅 추가를 위해 ipv6-tunnel.network 파일을 만듭니다.

[Match]
Name=ipv6-tunnel

[Network]
Address=<Client IPv6 Address>

[Route]
Destination=::/0

마지막으로 기존의 네트워크 인터페이스(이더넷이나 와이파이 등)의 .network 파일의 [Network] 섹션 밑에 Tunnel=ipv6-tunnel 을 추가하면 됩니다.

 

예)

[Match]
Name=eth*

[Network]
DHCP=yes
Tunnel=ipv6-tunnel

[DHCP]
Anonymize=yes
UseDNS=no
UseNTP=no

주의할 점은 이 .network 파일이 여러 개의 인터페이스에 사용된다면 터널링에 어떤 인터페이스가 사용될 지 예측할 수 없습니다. 위의 예는 eth 로 시작하는 모든 인터페이스에 대한 설정인데 제 컴퓨터는 eth0 만 존재하기 때문에 문제없지만 eth1,eth2 까지 있다면 어떤 인터페이스로 터널링 인터페이스가 만들어질지 모릅니다.

 

이제 리부팅을 하더라도 자동으로 터널이 만들어져서 IPv6를 계속 이용할 수 있게 됩니다.