linux advanced routing & traffic control howto (1)

43
Linux Advanced Routing & Traffic Control HOWTO (1) 2006. 5.30 성 성 성 iceboy98@hufs.ac.kr

Upload: betsy

Post on 28-Jan-2016

128 views

Category:

Documents


0 download

DESCRIPTION

Linux Advanced Routing & Traffic Control HOWTO (1). 2006. 5.30 성 백 동 iceboy98 @hufs.ac.kr. Contents. Introduction Exploring your current configuration Rules-routing policy database GRE and other tunnels IPSEC : secure IP over the Internet Multicast routing. introduction. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Linux Advanced Routing & Traffic  Control HOWTO (1)

Linux Advanced Routing & Traffic Control HOWTO (1)

2006. 5.30성 백 동

[email protected]

Page 2: Linux Advanced Routing & Traffic  Control HOWTO (1)

2

Contents

Introduction Exploring your current configuration Rules-routing policy database GRE and other tunnels IPSEC : secure IP over the Internet Multicast routing

Page 3: Linux Advanced Routing & Traffic  Control HOWTO (1)

3

introduction

리눅스 2.2/2.4 기반 리눅스 , 유닉스 시스템은 arp, ifconfig,route 명령어를

사용 커널 2.2 이후 리눅스에서는 의도하지 않은 동작을 보인다 .

GRE 터널은 라우팅을 구성하는 한 부부이지만 완벽히 다른 도구를 필요로 한다 .

Iproute2 리눅스는 트래픽 제어라 부르는 매우 정교한 대역폭 시스템을

가짐 대역폭 분류 , 우선권 제공 , 분배 , 트래픽 제한이 가능

Page 4: Linux Advanced Routing & Traffic  Control HOWTO (1)

4

테스트 환경

eth0192.168.4.3

eth0192.168.4.2

eth0192.168.4.1

eth1220.67.124.144 eth0

192.168.4.4

Page 5: Linux Advanced Routing & Traffic  Control HOWTO (1)

5

Exploring your current configuration

Ip shows us our links Link – network device

ip shows us our IP addresses

Page 6: Linux Advanced Routing & Traffic  Control HOWTO (1)

6

Exploring your current configuration

ip shows us our routes

Page 7: Linux Advanced Routing & Traffic  Control HOWTO (1)

7

Exploring your current configuration

ARP(Address Resolution Protocol) 주소결정 프로토콜 네트워크에 연결된 컴퓨터가 같은 지역 네트워크에 존재하는

다른 컴퓨터의 하드웨어 위치 / 주소를 알아내는데 사용

ARP cache entry

Page 8: Linux Advanced Routing & Traffic  Control HOWTO (1)

8

Chap 4. Rules-routing policy database

IP RULE rule in routing policy database. Control the route selection algorithm. Classic rouing algorithm 은 패킷 의 destination address 을

기반으로 라우팅을 결정 . 다양한 방법으로 라우팅을 결정할 수 있도록 하기 위해서

Policy routing rule 은 selector 와 action predicate 로 구성 . 각 selector 는 source address, destination address, incoming

interface, tos, fwmark 를 적용한다 . Selector 에 맞는 패킷이 있다면 해당하는 action 을 수행한다 .

Default rule

priority selector action

Lookup routing table local

reserved

The normal routing table containing all non-policy routes.

Page 9: Linux Advanced Routing & Traffic  Control HOWTO (1)

9

Simple source policy routing

local table

Main table

새로운 Rule 생성

Page 10: Linux Advanced Routing & Traffic  Control HOWTO (1)

10

Routing for multiple uplinks/providers

지역 네트워크를 인터넷에 연결하는데 사업자가 두개 일 때 사용되는 설정 Split access Load balancing

Content Provider

Content Provider

지역망 인터넷

Page 11: Linux Advanced Routing & Traffic  Control HOWTO (1)

11

Split Access

특정 서비스 제공자를 통해서 패킷이 온 경우 같은 서비스 제공자를 통해 응답해야 한다 .

경로 설정 예제(IF – 인터페이스 , IP- IF 에 할당된 IP 주소 , P – Provider 의 gateway IP address , P-NET – P 에 있는 IP 네트워크 , T – routing table)

ip route add $P1_NET dev $IF1 src $IP1 table T1 ip route add default via $P1 table T1 ip route add $P2_NET dev $IF2 src $IP2 table T2 ip route add default via $P2 table T2

Gateway 로 가는 경로를 하나 만들고 gateway 를 통해 기본 경로를 설정한다 .

Page 12: Linux Advanced Routing & Traffic  Control HOWTO (1)

12

Split Access

Main routing table 설정 인터페이스에 연결된 이웃에게 직접 라우팅 ‘src’ 인수 사용 나가는 IP 주소 지정

ip route add $P1_NET dev $IF1 src $IP1 ip route add $P2_NET dev $IF2 src $IP2

기본 라우팅 경로 설정 Ip route add default via $P1

Routing rule 설정 ip rule add from $IP1 table T1 ip rule add from $IP2 table T2

Page 13: Linux Advanced Routing & Traffic  Control HOWTO (1)

13

Load balancing

두 서비스 제공자를 통해 나가는 흐름의 양을 조절하는 방법 하나를 기본 경로로 설정하는 대신 기본 경로를 다중 경로로

지정 Ip route add default scpe global nexthop via $P1 dev $IF1 weight

nexthop via $P2 dev $IF2 weight 1 Weight 인수는 선호하는 provider 로 조정 가능 Load balancing 은 route 를 기반으로 하고 route 들이 캐시되기

때문에 불완전하다 . 만약 자주 방문하는 사이트는 항상 같은 provider 를 통해서만 연결 될 수도 있다 .

Page 14: Linux Advanced Routing & Traffic  Control HOWTO (1)

14

Chap 5. GRE and other tunnels

리눅스 터널 IP in IP 터널링 GRE 터널링 커널 외부의 터널 (PPTP[point-to-point tunneling protocol] 와 유

사 )

터널링의 특징 간접 비용 증가

IP 헤더가 추가 – 패킷당 20 바이트 MTU 가 1500 바이트일때 터널을 통과할 수 있는 패킷은 1480

바이트가 한계 터널을 만드는데 가장 빠른 방법은 양쪽을 파면 된다 .

Page 15: Linux Advanced Routing & Traffic  Control HOWTO (1)

15

IP in IP tunneling

리눅스에서 오래전 부터 지원 커널 모듈 필요

Ipip.o, new_tunnel.o

IP-in-IP 터널을 통해서 IPv6 나 broadcast 트래픽을 포워딩할 수 없다 .

리눅스의 IP-in-IP 터널링은 다른 운영체제나 라우터와 같이 사용할 수 없다 .

Page 16: Linux Advanced Routing & Traffic  Control HOWTO (1)

16

IP in IP tunneling

테스트 환경

네트워크 C 에 대해서는 네트워크 A 와 B 의 패킷들을 서로간에 전달해준다 .

네트워크 B

Network 10.0.1.0

Netmask 255.255.255.0

Router 10.0.1.1

Network 10.0.2.0

Netmask 255.255.255.0

Router 10.0.2.1172.16.17.18 172.19.20.21

네트워크 A 네트워크 C

10.0.1.1

10.0.2.1

Page 17: Linux Advanced Routing & Traffic  Control HOWTO (1)

17

IP in IP tunneling

모듈 설치Insmod ipip.o ipip.ko

Insmod new_tunnel.o ----- fedora4 에서는 없는 모듈 .

네트워크 A 의 라우터Ifconfig tun10 10.0.1.1 pointopoint 172.19.20.21

Route add –net 10.0.2.0 netmask 255.255.255.0 dev tun10

네트워크 B 의 라우터Ifconfig tun10 10.0.2.1 pointopoint 172.16.17.18

Route add –net 10.0.1.0 netmask 255.255.255.0 dev tun 10

터널을 끝내려면Ifconfig tun10 down

Page 18: Linux Advanced Routing & Traffic  Control HOWTO (1)

18

GRE tunneling

Cisco 에서 개발한 터널링 프로토콜

멀티캐스트나 IPv6 처리 가능 모듈 필요

ip_gre.o IPv4 터널링

네트워크 B

Network 10.0.1.0

Netmask 255.255.255.0

Router 10.0.1.1

Network 10.0.2.0

Netmask 255.255.255.0

Router 10.0.2.1172.16.17.18 172.19.20.21

neta netb

네트워크 A 네트워크 C

10.0.1.1

10.0.2.1

Page 19: Linux Advanced Routing & Traffic  Control HOWTO (1)

19

IPv4 터널링

네트워크 A 의 라우터 설정

Netb 라는 터널 장치 추가 , GRE 프로토콜을 사용 , 원격지 주소 172.19.20.21 , 터널을 지나는 패킷이 172.16.17.18 에서 출발

장치 활성화 새로운 netb 에 주소를 10.0.1.1 로 지정

터널링 장치를 위해 다른 IP 대역을 사용하는 것을 생각해 볼 수 있다 .

네트워크 B 로 가는 경로 지정

Page 20: Linux Advanced Routing & Traffic  Control HOWTO (1)

20

IPv4 터널링

네트워크 B 의 라우터 설정

라우터 A 에서 터널을 없앨 때

Page 21: Linux Advanced Routing & Traffic  Control HOWTO (1)

21

IPv4 터널링

Page 22: Linux Advanced Routing & Traffic  Control HOWTO (1)

22

IPv6 Tunneling

다음과 같은 IPv6 newtork 이 있고 , 6bone 에 연결하려면 ??

네트워크의 IPv4 주소는 172.16.17.18 이고 , 6bone 라우터의 IPv4 주소는 172.22.23.24

IPv4

IPv6

Page 23: Linux Advanced Routing & Traffic  Control HOWTO (1)

23

Chap 6. IPv4 tunneling with Cisco and/or 6bone

IPv6 Tunneling IPv6 address have Some rules

처음에 오는 0 을 쓰지 않는다 . 16 비트 or 두 바이트를 나우기 위해 콜론 사용 연속적인 0 을 가지면 :: 을 쓸 수 있다 . 주소에서 오직 한번만 쓰고 , 적어도 16 비트 이상이 되어야 한다 .

2002:836b:9820:0000:0000:0000:836b:9886

2002:836b:9820::836b:9886

IPv6 네트워크은 이미 있는 IPv4 인프라를 통해 IPv6 프로토콜을 IPv4 패킷에 싸서 보내는 식으로 연결한다 .

Page 24: Linux Advanced Routing & Traffic  Control HOWTO (1)

24

IPv6 Tunneling

IPv4 address – 144.100.24.181 6bone 라우터 IPv4 address – 145.100.1.5

IP forwaring 을 위해서

IPv6 를 위한 router advertisement daemon

Page 25: Linux Advanced Routing & Traffic  Control HOWTO (1)

25

IPSEC : secure IP over the Internet

IPSec(IP Security) IP 레이어에서의 패킷 교환이 안전하게 이루어 질 수 있도록

하기 위하여 IETF 에서 개발한 프로토콜 가상적인 전용회선을 구축 사용자 측 단말기에 탑재 , 인터넷을 거쳐 특정 클라이언트와

서버만이 IPSec 으로 데이터를 주고 받을 수 있다 IPSec 의 주요 장점

Transparency IPSec 은 network layer 에서 동작하므로 , application 과는 무관하게

동작 Network Topology 의존성이 없다

TCP/IP 프로토콜을 사용하므로 Ethernet, TokenRing, PPP 등 모든 network topology 에 사용 가능 .

표준화 표준화된 tunneling, authentication, encryption 방법을 사용한다 .

Multiprotocol IPSec 은 tunneling mode 를 사용할 경우 여러 프로토콜과도 동작할 수

있다 .

Page 26: Linux Advanced Routing & Traffic  Control HOWTO (1)

26

IPSEC : secure IP over the Internet

IPSec operation mode 전송모드

IP payload 만 encrypt. IP Header 는 보전되므로 public network 상의 모든 장비가 해당

패킷의 최종 destination 을 알 수 있다 . Clear 한 상태의 IP Header 로 인해 attacker 의 트래픽 분석 가능 각 endpoint 가 IPSec 를 이해

터널모드 모든 초기의 datagram 이 encrypt, 새로운 IP packet 의 header 가

만들어짐 라우터와 같은 장비가 IPSec Proxy 로 동작 가능 Source 의 라우터가 IPSec tunnel 을 통해서 패킷을 encrypt 하여

forward Destination 라우터는 초기 IP 패킷을 decrypt 해서 최종 목적지로

forward

전체 패킷을 encript. 실질적인 source 와 destination 은 노출되지 않음

Page 27: Linux Advanced Routing & Traffic  Control HOWTO (1)

27

IPSEC : secure IP over the Internet

IPSec components IPSec 은 2 개의 protocol – AH, ESP 로 구성

AH – authentication 과 data integrity 를 위해 동작 ESP – confidentiality 를 위해 서비스

Database 에 저장되어 있는 policy – SPD(Security Policy Database)

System manager 에 의해 변경 가능 IKE 프로토콜은 암호화 키의 관리에 사용

Page 28: Linux Advanced Routing & Traffic  Control HOWTO (1)

28

IPSec components

SAD(Security Association Database) SA 는 IPSec 을 사용하는 두 peer 간의 협약을 의미

Peer 간에 사용되는 암호화 알고리즘 사용되는 key SA life time 최대 전송 byte 를 정의

설정 방법은 manual 과 automatic

SPD(Security Policy Database) System manager 에 의해 정의 Traffic 에 대하여 security 서비스가 사용되어야 할 지 정의 .

Page 29: Linux Advanced Routing & Traffic  Control HOWTO (1)

29

IPSec components

AH(Authentication Header) IP extension Header 로서 IP packet 에 대한 인증 여부를 제공 전체 패킷에 대한 인증 여부를 결정 Transport mode 의 경우 AH 는 IP Header 와 Payload 사이에

위치하여 전체 IP Packet 을 인증 Tunnel mode 의 경우 새로운 IP Header 와 AH 가 앞 부분에

첨가

Page 30: Linux Advanced Routing & Traffic  Control HOWTO (1)

30

IPSec components

ESP(Encapsulating Security Payload) 다수의 security service 를 제공

Confidentiality, origin authentication, data integrity 를 제공 Authentication 없이 confidentaility 를 제공 가능 Transport mode 의 경우 IP Header 뒤에 나타나며 , IP Payload 는

ESP Payload 에 의해 encapsulate 된다 . Tunnel mode 일 경우 payload 는 원본 IP 패킷이 된다 .

Page 31: Linux Advanced Routing & Traffic  Control HOWTO (1)

31

Chap 7. IPSEC : secure IP over the Internet 리눅스에서는 두 가지 종류의 IPSEC 을 사용할 수 있다 .

2.2 및 2.4 에는 최초의 메이저 구현물인 FreeS/WAN 이 있다 . 리눅스 커널에 아주 잘 통합되지는 않으며 , 실제 merge 의

좋은 후보가 되지 못함 리눅스 2.5.47 의 경우 커널 내에 자체적인 IPSEC 구현이

있다 . 2.5.49 의 경우 IPSEC 는 추가적인 패치 없이도 동작한다 .

Page 32: Linux Advanced Routing & Traffic  Control HOWTO (1)

32

Intro with Manual Keying

Iptable 에서 IPSEC 패킷을 차단 시키므로 다음과 같은 설정을 필요 . iptable –A xxx –p 50 –j ACCEPT iptable –a xxx –p 51 –j ACCEPT

IPSEC 은 Internet Protocol 의 보안 버전을 제공 보안 - 암호화 (encryption) 과 인증 (Authentication)

IPSEC 은 암호화를 위한 “ ESP” 와 “ AH” 를 지원한다 . ESP 와 AH 는 security association(SA) 에 의존한다 . SA 는 source 와 destination, instruction 으로 구성

대칭적 통신하는 양쪽에서 정확히 동일한 SA 를 공유 양방향 트래픽을 위해서는 두 개의 SA 가 필요 .

SPI(Security Parameter Index) ID

Secret key

Page 33: Linux Advanced Routing & Traffic  Control HOWTO (1)

33

Intro with Manual Keying

암호화를 위한 Policy 의 필요성 간단한 Security Policy(SP)

Security Policy specifies WHAT we want; a Security Association describes HOW we want it.

나가는 패킷에는 SA SPI 가 있어서 이를 통해 원격지에 대응하는 verification 과 decryption instruction 을 찾을 수 있다 .

10.0.0.216 에서 10.0.0.11 로 암호화 및 인증을 통해 통신을 하는 단순한 구성

Page 34: Linux Advanced Routing & Traffic  Control HOWTO (1)

34

Intro with Manual Keying

/sbin/setkey –f filename

Security Policy

Page 35: Linux Advanced Routing & Traffic  Control HOWTO (1)

35

Intro with Manual Keying

Page 36: Linux Advanced Routing & Traffic  Control HOWTO (1)

36

Automatic Keying

안전한 상태 유지를 위해 암호화 구성을 신뢰할 수 있는 경로를 통해 전달할 필요가 있다 .

비밀값이 공유되기에 비밀이 아니다 . 모든 상대와의 통신에서 서로 다른 비밀값을 사용하도록

해야한다 . Key rollover

일정시간마다 새로운 키로 옮겨야 한다 . 좀더 일반적인 키 정책을 기술할 수 있게 되야 한다 .

정확하게 Internet Key Exchange 프로토콜 제공

난수적으로 생성된 키를 자동으로 교환 협상된 알고리즘 세부 사항에 따라서 비대칭 암호화 기술을

이용해 전송 IPSEC 구현은 KAME ‘racoon’ IKE 데몬으로 동작한다 .

key manage protocol

Page 37: Linux Advanced Routing & Traffic  Control HOWTO (1)

37

Automatic Keying

Security Association 을 만들어 주고 policy 는 유저가 설정 Racoon 설정 – racoon.conf & psk.txt

passwdOther host

Psk.txt 의 파일의 소유자는 root 모드는 600 으로 설정되어야 한다 .

Page 38: Linux Advanced Routing & Traffic  Control HOWTO (1)

38

Automatic Keying

Security policy

Page 39: Linux Advanced Routing & Traffic  Control HOWTO (1)

39

Automatic keying using X.509 certificates

비 대칭 암호화 기술 IPSEC 참가자가 public key 와 private key 를 만든다 . openssl 도구로 키를 만든다 .

Page 40: Linux Advanced Routing & Traffic  Control HOWTO (1)

40

IPSEC tunnels

Tunnel 모드 라우터만 IPSEC 에 대해서 알고 다른 호스트들을 대신해서

필요한 작업들을 한다 . Proxy ESP 라고도 함 .

Example 10.0.0.216 에서 10.0.0.11 을 거쳐 130.161.0.0/16 으로 가는 모든 트래픽이 터널을 통하기 위해서

10.0.0.216

10.0.0.11 130.161.0.0/16

Page 41: Linux Advanced Routing & Traffic  Control HOWTO (1)

41

IPSEC tunnels

10.0.0.216 에서의 설정

10.0.0.11

ESP 암호화 SA 를 구성

실제 터널 구성

Page 42: Linux Advanced Routing & Traffic  Control HOWTO (1)

42

Chap 8. Multicast routing

멀티캐스트 라우팅을 위해서는 자신이 원하는 종류를 지원하도록 리눅스 커널을 구성해야 한다 . DVMRP(RIP 유니캐스트 프로토콜의 멀티캐스트 버전 ) ,

MOSPF(OSPF) , PIM-SM(Protocol Independent Multicast-Sparse Mode) , PIM-DM(Protocol Independent Multicast-Dense Mode)

멀티캐스트를 활성화 시킨후 라우터 테이블에 멀티캐스트 가상 네트워크를 추가

Page 43: Linux Advanced Routing & Traffic  Control HOWTO (1)

43

Multicast routing

리눅스 패킷 포워딩 설정

Eth0 에서 멀티캐스팅을 하고 있다고 가정