440 likes | 751 Views
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.
E N D
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 • 리눅스 2.2/2.4 기반 • 리눅스, 유닉스 시스템은 arp, ifconfig,route 명령어를 사용 • 커널 2.2 이후 리눅스에서는 의도하지 않은 동작을 보인다. • GRE 터널은 라우팅을 구성하는 한 부부이지만 완벽히 다른 도구를 필요로 한다. • Iproute2 • 리눅스는 트래픽 제어라 부르는 매우 정교한 대역폭 시스템을 가짐 • 대역폭 분류, 우선권 제공, 분배, 트래픽 제한이 가능
Exploring your current configuration • Ip shows us our links • Link – network device • ip shows us our IP addresses
Exploring your current configuration • ip shows us our routes
Exploring your current configuration • ARP(Address Resolution Protocol) • 주소결정 프로토콜 • 네트워크에 연결된 컴퓨터가 같은 지역 네트워크에 존재하는 다른 컴퓨터의 하드웨어 위치/주소를 알아내는데 사용 ARP cache entry
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 Lookup routing table local The normal routing table containing all non-policy routes. priority action selector reserved
Simple source policy routing • local table • Main table • 새로운 Rule 생성
Routing for multiple uplinks/providers • 지역 네트워크를 인터넷에 연결하는데 사업자가 두개 일 때 사용되는 설정 • Split access • Load balancing 지역망 인터넷
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를 통해 기본 경로를 설정한다.
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
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를 통해서만 연결 될 수도 있다.
Chap 5. GRE and other tunnels • 리눅스 터널 • IP in IP 터널링 • GRE 터널링 • 커널 외부의 터널(PPTP[point-to-point tunneling protocol]와 유사) • 터널링의 특징 • 간접 비용 증가 • IP 헤더가 추가 – 패킷당 20바이트 • MTU가 1500 바이트일때 터널을 통과할 수 있는 패킷은 1480바이트가 한계 • 터널을 만드는데 가장 빠른 방법은 양쪽을 파면 된다.
IP in IP tunneling • 리눅스에서 오래전 부터 지원 • 커널 모듈 필요 • Ipip.o,new_tunnel.o • IP-in-IP 터널을 통해서 IPv6나 broadcast 트래픽을 포워딩할 수 없다. • 리눅스의 IP-in-IP 터널링은 다른 운영체제나 라우터와 같이 사용할 수 없다.
IP in IP tunneling • 테스트 환경 • 네트워크 C에 대해서는 네트워크 A와 B의 패킷들을 서로간에 전달해준다. 10.0.2.1 10.0.1.1 네트워크 B 네트워크 C 네트워크 A 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.1 172.19.20.21 172.16.17.18
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
GRE tunneling • Cisco에서 개발한 터널링 프로토콜 • 멀티캐스트나 IPv6 처리 가능 • 모듈 필요 • ip_gre.o • IPv4 터널링 10.0.2.1 10.0.1.1 네트워크 B 네트워크 C 네트워크 A 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.1 172.19.20.21 172.16.17.18 neta netb
IPv4 터널링 • 네트워크 A의 라우터 설정 • Netb라는 터널 장치 추가, GRE 프로토콜을 사용 , 원격지 주소 172.19.20.21 , 터널을 지나는 패킷이 172.16.17.18에서 출발 • 장치 활성화 • 새로운 netb에 주소를 10.0.1.1로 지정 • 터널링 장치를 위해 다른 IP 대역을 사용하는 것을 생각해 볼 수 있다. • 네트워크 B로 가는 경로 지정
IPv4 터널링 • 네트워크 B의 라우터 설정 • 라우터 A에서 터널을 없앨 때
IPv6 IPv4 IPv6 Tunneling • 다음과 같은 IPv6 newtork이 있고, 6bone에 연결하려면?? • 네트워크의 IPv4 주소는 172.16.17.18이고, 6bone 라우터의 IPv4 주소는 172.22.23.24
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 패킷에 싸서 보내는 식으로 연결한다.
IPv6 Tunneling • IPv4 address – 144.100.24.181 • 6bone 라우터 IPv4 address – 145.100.1.5 • IP forwaring을 위해서 IPv6를 위한 router advertisement daemon
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를 사용할 경우 여러 프로토콜과도 동작할 수 있다.
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은 노출되지 않음
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 프로토콜은 암호화 키의 관리에 사용
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 서비스가 사용되어야 할 지 정의.
IPSec components • AH(Authentication Header) • IP extension Header로서 IP packet에 대한 인증 여부를 제공 • 전체 패킷에 대한 인증 여부를 결정 • Transport mode의 경우 AH는 IP Header와 Payload 사이에 위치하여 전체 IP Packet을 인증 • Tunnel mode의 경우 새로운 IP Header와 AH가 앞 부분에 첨가
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 패킷이 된다.
Chap 7. IPSEC : secure IP over the Internet • 리눅스에서는 두 가지 종류의 IPSEC을 사용할 수 있다. • 2.2 및 2.4에는 최초의 메이저 구현물인 FreeS/WAN이 있다. • 리눅스 커널에 아주 잘 통합되지는 않으며, 실제 merge의 좋은 후보가 되지 못함 • 리눅스 2.5.47의 경우 커널 내에 자체적인 IPSEC 구현이 있다. • 2.5.49의 경우 IPSEC는 추가적인 패치 없이도 동작한다.
SPI(Security Parameter Index) ID Secret key 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가 필요.
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로 암호화 및 인증을 통해 통신을 하는 단순한 구성
Intro with Manual Keying • /sbin/setkey –f filename Security Policy
Automatic Keying • 안전한 상태 유지를 위해 암호화 구성을 신뢰할 수 있는 경로를 통해 전달할 필요가 있다. • 비밀값이 공유되기에 비밀이 아니다. • 모든 상대와의 통신에서 서로 다른 비밀값을 사용하도록 해야한다. • Key rollover • 일정시간마다 새로운 키로 옮겨야 한다. • 좀더 일반적인 키 정책을 기술할 수 있게 되야 한다. • 정확하게 • Internet Key Exchange 프로토콜 제공 • 난수적으로 생성된 키를 자동으로 교환 • 협상된 알고리즘 세부 사항에 따라서 비대칭 암호화 기술을 이용해 전송 • IPSEC 구현은 KAME ‘racoon’ IKE 데몬으로 동작한다. • key manage protocol
Automatic Keying • Security Association을 만들어 주고 policy는 유저가 설정 • Racoon 설정 – racoon.conf & psk.txt Other host passwd Psk.txt 의 파일의 소유자는 root 모드는 600으로 설정되어야 한다.
Automatic Keying • Security policy
Automatic keying using X.509 certificates • 비 대칭 암호화 기술 • IPSEC 참가자가 public key와 private key를 만든다. • openssl 도구로 키를 만든다.
IPSEC tunnels • Tunnel 모드 • 라우터만 IPSEC 에 대해서 알고 다른 호스트들을 대신해서 필요한 작업들을 한다. • Proxy ESP라고도 함. • Example • 10.0.0.216에서 10.0.0.11을 거쳐 130.161.0.0/16으로 가는 모든 트래픽이 터널을 통하기 위해서 130.161.0.0/16 10.0.0.11 10.0.0.216
ESP 암호화 SA를 구성 실제 터널 구성 IPSEC tunnels • 10.0.0.216에서의 설정 • 10.0.0.11
Chap 8. Multicast routing • 멀티캐스트 라우팅을 위해서는 자신이 원하는 종류를 지원하도록 리눅스 커널을 구성해야 한다. • DVMRP(RIP 유니캐스트 프로토콜의 멀티캐스트 버전) , MOSPF(OSPF), PIM-SM(Protocol Independent Multicast-Sparse Mode) , PIM-DM(Protocol Independent Multicast-Dense Mode) • 멀티캐스트를 활성화 시킨후 라우터 테이블에 멀티캐스트 가상 네트워크를 추가
Multicast routing • 리눅스 패킷 포워딩 설정 • Eth0에서 멀티캐스팅을 하고 있다고 가정