라우터 기능을 하는 프로세스를 서버에 올리고 테스트를 하는데,
라우팅프로토콜이 모두 돌고 있음에도 불구하고 패킷이 넘어가지 않는 현상이 발생했다.
리눅스 설정에서 패킷 포워딩 옵션이 있는데 이를 변경해야 한다.
/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 |