2010. 4. 15. 14:05
[CentOS] 정책 라우팅 Linux/Cent OS2010. 4. 15. 14:05
두개의 네트워크 대역을 사용해야 하는 일이 있다.
물론 정책 라우팅을 사용했었다.
현재 내가 알고 있는 답은 정책 라우팅 밖에 없다.
그래서 시스템 설치 후 작업 내역을 보면 다음과 같다.
1. 인터페이스 설정 이다.
[root@server1 network-scripts]# cat ifcfg-eth0
DEVICE=eth0
ONBOOT=yes
BOOTPROTO=static
IPADDR=172.16.100.23
NETMASK=255.255.0.0
GATEWAY=172.16.2.33
[root@server1 network-scripts]# cat ifcfg-eth1
DEVICE=eth1
ONBOOT=yes
BOOTPROTO=static
IPADDR=10.20.20.201
NETMASK=255.255.255.0
GATEWAY=10.20.20.2
2. 커널 파라미터 변경작업
sysctl -w net.ipv4.conf.eth1.arp_filter=1
sysctl -w net.ipv4.conf.eth1.rp_filter=1
sysctl -w net.ipv4.conf.eth0.arp_filter=1
sysctl -w net.ipv4.conf.eth0.rp_filter=1
sysctl -w net.ipv4.conf.lo.arp_filter=1
sysctl -w net.ipv4.conf.lo.rp_filter=1
sysctl -w net.ipv4.conf.default.arp_filter=1
sysctl -w net.ipv4.conf.default.rp_filter=1
sysctl -w net.ipv4.conf.all.arp_filter=1
sysctl -w net.ipv4.conf.all.rp_filter=1
위의 명령줄은 1회성이므로 다시 실제 파일에 넣어 준다.
sysctl -a | grep rp_filter >> /etc/sysctl.conf
적용완료 한 후 변경 값을 확인 한다.
[root@server1 network-scripts]# sysctl -p
net.ipv4.ip_forward = 0
net.ipv4.conf.default.rp_filter = 1
net.ipv4.conf.default.accept_source_route = 0
kernel.sysrq = 0
kernel.core_uses_pid = 1
net.ipv4.conf.all.rp_filter = 1
net.ipv4.conf.all.arp_filter = 1
net.ipv4.conf.default.rp_filter = 1
net.ipv4.conf.default.arp_filter = 1
net.ipv4.conf.lo.rp_filter = 1
net.ipv4.conf.lo.arp_filter = 1
net.ipv4.conf.eth0.rp_filter = 1
net.ipv4.conf.eth0.arp_filter = 1
net.ipv4.conf.eth1.rp_filter = 1
net.ipv4.conf.eth1.arp_filter = 1
net.ipv4.conf.eth2.rp_filter = 1
net.ipv4.conf.eth2.arp_filter = 1
net.ipv4.conf.sit0.rp_filter = 1
net.ipv4.conf.sit0.arp_filter = 1
sysctl -a | grep rp_filter 명령어로 아래 모두 1인지 확인
net.ipv4.conf.eth1.arp_filter=1
net.ipv4.conf.eth1.rp_filter=1
net.ipv4.conf.eth0.arp_filter=1
net.ipv4.conf.eth0.rp_filter=1
net.ipv4.conf.lo.arp_filter=1
net.ipv4.conf.lo.rp_filter=1
net.ipv4.conf.default.arp_filter=1
net.ipv4.conf.default.rp_filter=1
net.ipv4.conf.all.arp_filter=1
net.ipv4.conf.all.rp_filter=1
3.라우팅 정보와 룰셋을 추가한다.
ip rule add from 10.20.20.201 tab 1 priority 500
ip rule add from 172.16.100.23 tab 2 priority 500
ip route add default via 10.20.20.2 tab 1 dev eth1
ip route add default via 172.16.2.33 tab 2 dev eth0
추가 후 확인 명령은 다음과 같다.
[root@server1 network-scripts]# ip rule
0: from all lookup local
500: from 10.20.20.201 lookup 1
500: from 172.16.100.23 lookup 2
32766: from all lookup main
32767: from all lookup default
[root@server1 network-scripts]# ip route
10.20.20.0/24 dev eth1 proto kernel scope link src 10.20.20.201
172.16.0.0/16 dev eth0 proto kernel scope link src 172.16.100.23
169.254.0.0/16 dev eth0 scope link metric 1002
169.254.0.0/16 dev eth1 scope link metric 1005
default via 172.16.2.33 dev eth0
물론 상기 명령으로 넣은 룰과 라우팅은 일회성이다.
즉 그말은 재부팅 하면 먹통이 된다는 이야기다.
하여 /etc/rc.local 파일에 내용을 추가 하여 리부팅시 마다 적용되게 한다.
4줄을 추가 하여 준다.
ip rule add from 10.20.20.201 tab 1 priority 500
ip rule add from 172.16.100.23 tab 2 priority 500
ip route add default via 10.20.20.2 tab 1 dev eth1
ip route add default via 172.16.2.33 tab 2 dev eth0
정책 라우팅이 잘되는지 확인 하는 방법은 다음과 같다.
traceroute로 실제 정책라우팅 적용 테스트
traceroute -s eth0의IP 163.126.63.1 -> .33 게이트웨이로 빠져나가는것 확인됨
traceroute -s eth1의IP 163.126.63.1 -> .2 게이트웨이로 빠져나가는것 확인됨
물론 정책 라우팅을 사용했었다.
현재 내가 알고 있는 답은 정책 라우팅 밖에 없다.
그래서 시스템 설치 후 작업 내역을 보면 다음과 같다.
1. 인터페이스 설정 이다.
[root@server1 network-scripts]# cat ifcfg-eth0
DEVICE=eth0
ONBOOT=yes
BOOTPROTO=static
IPADDR=172.16.100.23
NETMASK=255.255.0.0
GATEWAY=172.16.2.33
[root@server1 network-scripts]# cat ifcfg-eth1
DEVICE=eth1
ONBOOT=yes
BOOTPROTO=static
IPADDR=10.20.20.201
NETMASK=255.255.255.0
GATEWAY=10.20.20.2
2. 커널 파라미터 변경작업
sysctl -w net.ipv4.conf.eth1.arp_filter=1
sysctl -w net.ipv4.conf.eth1.rp_filter=1
sysctl -w net.ipv4.conf.eth0.arp_filter=1
sysctl -w net.ipv4.conf.eth0.rp_filter=1
sysctl -w net.ipv4.conf.lo.arp_filter=1
sysctl -w net.ipv4.conf.lo.rp_filter=1
sysctl -w net.ipv4.conf.default.arp_filter=1
sysctl -w net.ipv4.conf.default.rp_filter=1
sysctl -w net.ipv4.conf.all.arp_filter=1
sysctl -w net.ipv4.conf.all.rp_filter=1
위의 명령줄은 1회성이므로 다시 실제 파일에 넣어 준다.
sysctl -a | grep rp_filter >> /etc/sysctl.conf
적용완료 한 후 변경 값을 확인 한다.
[root@server1 network-scripts]# sysctl -p
net.ipv4.ip_forward = 0
net.ipv4.conf.default.rp_filter = 1
net.ipv4.conf.default.accept_source_route = 0
kernel.sysrq = 0
kernel.core_uses_pid = 1
net.ipv4.conf.all.rp_filter = 1
net.ipv4.conf.all.arp_filter = 1
net.ipv4.conf.default.rp_filter = 1
net.ipv4.conf.default.arp_filter = 1
net.ipv4.conf.lo.rp_filter = 1
net.ipv4.conf.lo.arp_filter = 1
net.ipv4.conf.eth0.rp_filter = 1
net.ipv4.conf.eth0.arp_filter = 1
net.ipv4.conf.eth1.rp_filter = 1
net.ipv4.conf.eth1.arp_filter = 1
net.ipv4.conf.eth2.rp_filter = 1
net.ipv4.conf.eth2.arp_filter = 1
net.ipv4.conf.sit0.rp_filter = 1
net.ipv4.conf.sit0.arp_filter = 1
sysctl -a | grep rp_filter 명령어로 아래 모두 1인지 확인
net.ipv4.conf.eth1.arp_filter=1
net.ipv4.conf.eth1.rp_filter=1
net.ipv4.conf.eth0.arp_filter=1
net.ipv4.conf.eth0.rp_filter=1
net.ipv4.conf.lo.arp_filter=1
net.ipv4.conf.lo.rp_filter=1
net.ipv4.conf.default.arp_filter=1
net.ipv4.conf.default.rp_filter=1
net.ipv4.conf.all.arp_filter=1
net.ipv4.conf.all.rp_filter=1
3.라우팅 정보와 룰셋을 추가한다.
ip rule add from 10.20.20.201 tab 1 priority 500
ip rule add from 172.16.100.23 tab 2 priority 500
ip route add default via 10.20.20.2 tab 1 dev eth1
ip route add default via 172.16.2.33 tab 2 dev eth0
추가 후 확인 명령은 다음과 같다.
[root@server1 network-scripts]# ip rule
0: from all lookup local
500: from 10.20.20.201 lookup 1
500: from 172.16.100.23 lookup 2
32766: from all lookup main
32767: from all lookup default
[root@server1 network-scripts]# ip route
10.20.20.0/24 dev eth1 proto kernel scope link src 10.20.20.201
172.16.0.0/16 dev eth0 proto kernel scope link src 172.16.100.23
169.254.0.0/16 dev eth0 scope link metric 1002
169.254.0.0/16 dev eth1 scope link metric 1005
default via 172.16.2.33 dev eth0
물론 상기 명령으로 넣은 룰과 라우팅은 일회성이다.
즉 그말은 재부팅 하면 먹통이 된다는 이야기다.
하여 /etc/rc.local 파일에 내용을 추가 하여 리부팅시 마다 적용되게 한다.
4줄을 추가 하여 준다.
ip rule add from 10.20.20.201 tab 1 priority 500
ip rule add from 172.16.100.23 tab 2 priority 500
ip route add default via 10.20.20.2 tab 1 dev eth1
ip route add default via 172.16.2.33 tab 2 dev eth0
정책 라우팅이 잘되는지 확인 하는 방법은 다음과 같다.
traceroute로 실제 정책라우팅 적용 테스트
traceroute -s eth0의IP 163.126.63.1 -> .33 게이트웨이로 빠져나가는것 확인됨
traceroute -s eth1의IP 163.126.63.1 -> .2 게이트웨이로 빠져나가는것 확인됨