본문 바로가기

OS

Linux - 패킷 포워딩

라우터 기능을 하는 프로세스를 서버에 올리고 테스트를 하는데,

 

라우팅프로토콜이 모두 돌고 있음에도 불구하고 패킷이 넘어가지 않는 현상이 발생했다.

 

리눅스 설정에서 패킷 포워딩 옵션이 있는데 이를 변경해야 한다.

 

/proc/sys/net/ipv4/ip_forward

 

이 파일을 열어보면 0으로 되어 있으면 패킷 포워딩이 불가능하다.

 

수정하려 했지만 수정 불가.. 하지만 echo 명령을 사용해서 수정 할 수 있다.

 

echo 1 > /proc/sys/net/ipv4/ip_forward

 

하지만 이 설정은 재부팅하면 사라진다고한다. 그래서 sysctl.conf 파일을 수정한다.

 

/etc/sysctl.conf 파일을 열어

 

net.ipv4.ip_forward=1    이 부분을 주석 해제한다.

 

설정 후 적용을 위해 아래 명령 실행

 

sysctl -p

 

그리고서 확인 다음 명령으로 확인 해보면, 변경된 걸 볼 수 있다.

 

root@RUT:/proc/sys/net/ipv4# sysctl -a | grep forward
error: permission denied on key 'net.ipv4.route.flush'
net.ipv4.conf.all.forwarding = 1
net.ipv4.conf.all.mc_forwarding = 0
net.ipv4.conf.default.forwarding = 1
net.ipv4.conf.default.mc_forwarding = 0
net.ipv4.conf.lo.forwarding = 1
net.ipv4.conf.lo.mc_forwarding = 0
net.ipv4.conf.eth0.forwarding = 1
net.ipv4.conf.eth0.mc_forwarding = 0
net.ipv4.conf.eth1.forwarding = 1
net.ipv4.conf.eth1.mc_forwarding = 0
net.ipv4.conf.eth2.forwarding = 1
net.ipv4.conf.eth2.mc_forwarding = 0
net.ipv4.conf.eth3.forwarding = 1
net.ipv4.conf.eth3.mc_forwarding = 0
net.ipv4.conf.eth4.forwarding = 1
net.ipv4.conf.eth4.mc_forwarding = 0
net.ipv4.ip_forward = 1
net.ipv6.conf.all.forwarding = 0
net.ipv6.conf.default.forwarding = 0
net.ipv6.conf.lo.forwarding = 0
net.ipv6.conf.eth0.forwarding = 0
net.ipv6.conf.eth1.forwarding = 0
error: permission denied on key 'net.ipv6.route.flush'
net.ipv6.conf.eth2.forwarding = 0
net.ipv6.conf.eth3.forwarding = 0
net.ipv6.conf.eth4.forwarding = 0

 

이렇게 수정하고 패킷 전송하니 라우팅프로토콜에 따라 잘 넘어가서 돌아온다.

'OS' 카테고리의 다른 글

Ubuntu - 패키지 관련 명령 (apt-get)  (0) 2016.09.01
Linux - cpan, perl  (0) 2016.09.01
Linux - 프로세스 백그라운드 실행  (0) 2016.09.01
Linux - 프로세스 종료  (0) 2016.09.01
Linux - 파일 시간 변경  (0) 2016.09.01