2008. 6. 25. 23:36

/proc/sys/net/ipv4 , sysctl

커널의 네트워크 설정 내용

/proc/sys/net/ipv4 는 네트워크 관련 정보를 가지고 있는 파일이있다.
[root@fedora ~]# sysctl -a
sunrpc.max_resvport = 1023
sunrpc.min_resvport = 665
sunrpc.tcp_slot_table_entries = 16
sunrpc.udp_slot_table_entries = 16
....
....
좀 많다.

예를 들어 ping 에 대한 응답 설정을 하는 내용을 보자
[root@fedora ~]# sysctl -a | grep icmp_echo_ignore_all
net.ipv4.icmp_echo_ignore_all = 0
폴더로 가보자.

[root@fedora ~]# cd /proc/sys/net/ipv4;ls
cipso_cache_bucket_size            tcp_dma_copybreak
cipso_cache_enable                 tcp_dsack
cipso_rbm_optfmt                   tcp_ecn
cipso_rbm_strictvalid              tcp_fack
conf                               tcp_fin_timeout
icmp_echo_ignore_all               tcp_frto
icmp_echo_ignore_broadcasts        tcp_keepalive_intvl
icmp_errors_use_inbound_ifaddr     tcp_keepalive_probes
icmp_ignore_bogus_error_responses  tcp_keepalive_time
icmp_ratelimit                     tcp_low_latency
icmp_ratemask                      tcp_max_orphans
igmp_max_memberships               tcp_max_syn_backlog
igmp_max_msf                       tcp_max_tw_buckets
inet_peer_gc_maxtime               tcp_mem
inet_peer_gc_mintime               tcp_moderate_rcvbuf
inet_peer_maxttl                   tcp_mtu_probing

[root@fedora ipv4]# cat icmp_echo_ignore_all
0
0으로 되어 있는데 이것은 기능을 끈다는 의미이다.
켜보자. 이 파일을 수정 하는것은 안된다! 왜냐면 /proc에 있는 내용은 메모리의 내용이다.
따라서 직접적인 수정은 안되며 간접적인 방법으로 수정이 된다.

[root@fedora ipv4]# echo 1 > icmp_echo_ignore_echo
[root@fedora ipv4]# cat icmp_echo_ignore_all
1
로 바뀌어 있다.
그리고 다른곳에서 핑을 날려보자

수정전!!!!
[root@centos ~]# ping 192.168.10.10
PING 192.168.10.10 (192.168.10.10) 56(84) bytes of data.
64 bytes from 192.168.10.10: icmp_seq=1 ttl=64 time=0.483 ms

--- 192.168.10.10 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 0.483/0.483/0.483/0.000 ms

수정후
[root@centos ~]# ping 192.168.10.10
PING 192.168.10.10 (192.168.10.10) 56(84) bytes of data.


아무 응답이 없다!!!!

------------------------------------------------------------------------------------------------
참고
echo 명령어로 바꾸는 방법은 리부팅 하게 되면 원래 값으로 다시 셋팅된다 .
이를 영구적으로 바꾸려면

/etc/sysctl.conf    를 직접수정 하면 다음 부팅시부터 적용 받을 수 있다.

vi /etc/sysctl.conf
net.ipv4.icmp_echo_ignore_all = 1/0     으로 수정을 하면 된다.

또한
icmp_echo_ignore_broadcat = 1/0       에서 1 로 셋팅 할 경우 Dos 공격에 어느정도 효과가 있다고 한다.!!!
ip_default_ttl                ip패킷 생존시간을 의미한다. 라우터지날때마다 1씩 감소 디폴트 64(리눅스)