다음 이전 차례

3. IP 마스커레이드 설정

만약 당신의 네트웍에 중요한 정보가 있다면, IP 마스커레이드를 구현하기 이전에 "보안"이라는 것을 생각해 보길 바란다. 기본적으로, IP MASQ는 당신이 인터넷에 연결할 수 있도록 하는 통로이지만, 인터넷상의 누군가가 당신의 내부 네트웍으로 들어오는 통로가 될 수도 있다.

일단 IP MASQ가 동작하게 되면, IPFWADM/IPCHAINS 방화벽에 매우 강력한 정책(ruleset)을 사용할 것을 강력히 권고한다. 더 자세한 정보는 Strong-IPFWADM-RulesetsStrong-IPCHAINS-Rulesets 섹션을 참조하기 바란다.

3.1 커널에서 IP 마스커레이드를 지원하도록 컴파일 하기

만약 당신의 리눅스 배포본이 다음항목들을 지원하도록 컴파일 되어져 있고 마스커레이드에 관계된 모듈들이 컴파일되어서 제공되고 있다면 커널 컴파일을 할 필요가 없다(대부분의 배포본에 포함되어 있을 것이다.): 당신의 배포본이 마스커레이드를 지원하는지 확실하지 않다면, MASQ-supported-Distributions 섹션이나 IP Masquerade Resource 에서 자세한 사항을 확인할 수 있다. 당신의 패포본이 IP 마스커레이딩을 지원하는지 알 수가 없다면, 지원하지 않는다고 생각하고 다음 단계로 넘어가라.

지원하도록 되어 있든지 아니든지 상관없이, 이 섹션에는 다른 유용한 정보들이 많이 있으므로 읽어두기를 권장한다.

리눅스 2.0.x 커널

필요한 소프트웨어와 패치 등은 2.0.x-Requirements 섹션을 참조하기 바란다.

  * Prompt for development and/or incomplete code/drivers (CONFIG_EXPERIMENTAL) [Y/n/?]
    - YES: 이렇게 해야 나중에 IP 마스커레이드 기능을 선택할 수 있다.

  * Enable loadable module support (CONFIG_MODULES) [Y/n/?]
    - YES: IP 마스커레이드 모듈들을 적재할 수 있도록 한다.

  * Networking support (CONFIG_NET) [Y/n/?]
    - YES: 네트웍을 사용 가능하게 한다.

  * Network firewalls (CONFIG_FIREWALL) [Y/n/?]
    - YES: IPFWADM 방화벽을 사용 가능하게 한다.

  * TCP/IP networking (CONFIG_INET)
    - YES: TCP/IP 프로토콜을 사용 가능하게 한다.

  * IP: forwarding/gatewaying (CONFIG_IP_FORWARD)
    - YES: 리눅스 네트웍 패킷 포워딩과 라우팅을 가능하게 한다. 
           - IPFWADM 에 의해서 제어된다.

  * IP: syn cookies (CONFIG_SYN_COOKIES) [Y/n/?]
    - YES: 기본적인 네트웍 보안을 위해서 강력히 권장한다.

  * IP: firewalling (CONFIG_IP_FIREWALL) [Y/n/?]
    - YES: 방화벽 기능을 사용 가능하게 한다.

  * IP: firewall packet logging (CONFIG_IP_FIREWALL_VERBOSE) [Y/n/?]
    - YES: (꼭 필요하지는 않지만 강력히 권장):  방화벽의 접근 기록을 남길 수 
           있도록 한다.

  * IP: masquerading (CONFIG_IP_MASQUERADE [Y/n/?]
    - YES: IP 마스커레이딩 기능을 사용하여 내부 네트웍의 특정 주소로부터의 
           패킷을 주소를 변경하여 외부의 TCP/IP네트웍으로 내보내게 한다.

  * IP: ipautofw masquerade support (EXPERIMENTAL) (CONFIG_IP_MASQUERADE_IPAUTOFW) [Y/n/?]
    - NO:  IPautofw 은 TCP/IP 포토를 포워딩하는 구시대적인 방법이다. 물론 
           작동하기는 하지만, IPPORTFW 가 더 나은 방법이다. 그러므로 IPAUTOFW은 
           추천하지 않는다.

  * IP: ipportfw masq support (EXPERIMENTAL) (CONFIG_IP_MASQUERADE_IPPORTFW) [Y/n/?]
    - YES: 이 옵션을 2.0.x 커널에서 사용하기 위해서는 패치를 해야 한다. 

           이 옵션을 설정하면, 인터넷에 있는 외부 컴퓨터가 마스커레이드된 
           내부의 특정 컴퓨터로 직접 연결할 수 있게 된다. 이 기능은 통상적으로
           내부의 SMTP, TELNET, WWW 서버에 접근하는 데 사용된다. FTP 포트 
           포워딩을 하기 위해서는 FAQ섹션에 언급되어 있는 추가적인 패치를 적용
           해야 한다. 포트 포워딩에 대한 추가적인 정보는 이 HOWTO의 
           Forwards 섹션을 참조하기 바란다.

  * IP: ICMP masquerading (CONFIG_IP_MASQUERADE_ICMP) [Y/n/?]
    - YES: ICMP 패킷을 마스커레이딩할 수 있도록 한다. 꼭 필요하지 않을 수도
           있으나, ICMP 지원 없이는 많은 프로그램들이 제대로 동작하지 않을 
           수 있다.

  * IP: loose UDP port managing (EXPERIMENTAL) (CONFIG_IP_MASQ_LOOSE_UDP) [Y/n/?]
    - YES: 이 옵션을 2.0.x 커널에서 사용하기 위해서는 패치를 해야 한다. 

           이 옵션을 통해서, 내부의 컴퓨터들에서 NAT와 같은 식으로 작동하는
           네트웍 게임들을 인터넷을 통해 즐길 수 있다. 더 자세한 사항은 
           이 HOWTO의 FAQ섹션에서 확인할 수 있다.

  * IP: always defragment (CONFIG_IP_ALWAYS_DEFRAG) [Y/n/?]
    - YES: 이 기능은 IP 마스커레이딩 접속을 최적화 준다. - 강력히 추천

  * IP: optimize as router not host (CONFIG_IP_ROUTER) [Y/n/?]
    - YES: 이 기능은 커널의 네트웍 기능을 최적화 준다.

  * IP: Drop source routed frames (CONFIG_IP_NOSR) [Y/n/?]
    - YES: 기본적인 네트웍 보안을 위해서 강력히 추천한다.

  * Dummy net driver support (CONFIG_DUMMY) [M/n/y/?]
    - YES: 꼭 필요하지는 않지만, 이 옵션은 문제가 발생해서 디버깅을 할 때
           도움을 줄 것이다.

  * /proc filesystem support (CONFIG_PROC_FS) [Y/n/?]
    - YES: 리눅스 네트웍 포워딩을 사용하기 위해서 필요하다.

NOTE: 이 옵션들은 단지 IP 마스커레딩이 동작하기 위한 요소들이다. 특정한 네트웍과 특정 하드웨어를 설정하기 위해서는 필요한 다른 옵션들을 더 선택해야 한다.

리눅스 2.2.x 커널

필요한 소프트웨어와 패치 등은 2.2.x-Requirements 섹션을 참조하기 바란다.


  * Prompt for development and/or incomplete code/drivers (CONFIG_EXPERIMENTAL) [Y/n/?]
    - YES: IP 마스커레이드를 위해 꼭 필요한 것은 아니지만, 이 옵션을 선택하면
           마스커레이드 모듈을 생성하고 포트 포워딩(port forwarding)을 할 수가
           있다.

  * Enable loadable module support (CONFIG_MODULES) [Y/n/?]
    - YES: IP 마스커레이드 모듈들을 적재할 수 있도록 한다.

  * Networking support (CONFIG_NET) [Y/n/?]
    - YES: 네트웍을 사용 가능하게 한다.

  * Packet socket (CONFIG_PACKET) [Y/m/n/?]
    - YES: 꼭 필요하지는 않지만, 이 기능은 TCPDUMP를 사용해서 IP 마스커레이딩과
           관련한 문제들을 디버깅할 수 있으므로 선택할 것을 권장한다.

  * Kernel/User netlink socket (CONFIG_NETLINK) [Y/n/?]
    - YES: 꼭 필요하지는 않지만, 이 기능은 방화벽의 접근 기록을 남길 수 있도록
           한다.

  * Routing messages (CONFIG_RTNETLINK) [Y/n/?]
    - NO:  이 옵션은 패킷 방화벽이 기록을 남기는 것과 아무 상관이 없다.

  * Network firewalls (CONFIG_FIREWALL) [Y/n/?]
    - YES: IPCHAINS 방화벽 도구를 사용할 수 있게 한다.

  * TCP/IP networking (CONFIG_INET) [Y/n/?]
    - YES: TCP/IP 프로토콜을 사용할 수 있게 한다. 

  * IP: advanced router (CONFIG_IP_ADVANCED_ROUTER) [Y/n/?]
    - NO:  CONFIG_IP_ROUTE_VERBOSE 를 설정하기 위해서 필요하고 깔끔한 라우팅을
           위해서 필요하다. (ipchains/마스커레이드 와는 관계없다.)

  * IP: verbose route monitoring (CONFIG_IP_ROUTE_VERBOSE) [Y/n/?]
    - YES: 이 기능은 IP 스푸핑(속임) 패킷을 제거하고 그 기록을 남기는 코드를 
           사용한다면 매우 유용할 것이다.

  * IP: firewalling (CONFIG_IP_FIREWALL) [Y/n/?]
    - YES: 방화벽 기능을 사용할 수 있게 한다.

  * IP: firewall packet netlink device (CONFIG_IP_FIREWALL_NETLINK) [Y/n/?]
    - YES: 꼭 필요하지는 않지만, 이 기능은 방화벽의 접근 기록을 남기는 기능을
           향상시켜 줄 것이다.

  * IP: always defragment (required for masquerading) (CONFIG_IP_ALWAYS_DEFRAG) [Y/n/?]
    - YES: 이 기능을 선택해야지 IP 마스커레이드와 투명한 프록시 기능을 선택할 
           수 있다. 이 기능은 IP 마스커레이드 접속을 최적화 하기도 한다.

  * IP: masquerading (CONFIG_IP_MASQUERADE) [Y/n/?]
    - YES: 내부 주소를 외부로 내보낼 패킷으로 변환해 주는 IP 마스커레이딩 기능을
           사용 가능하게 한다.

  * IP: ICMP masquerading (CONFIG_IP_MASQUERADE_ICMP) [Y/n/?]
    - YES: ICMP 핑 패킷을 마스커레이드 하기 위해 사용된다. (선택하지 않더라도
           ICMP 에러 코드 자체는 마스커레이드 될 것이다.) 접속에 문제가 생겼을
           때 해결하기 위해 사용되는 중요한 기능이다.

  * IP: masquerading special modules support (CONFIG_IP_MASQUERADE_MOD) [Y/n/?]
    - YES: 꼭 필요하지는 않지만, 이 기능은 나중에 TCP/IP 포트 포워딩을 사용 
           가능하게 하기 위해서 선택해야 한다. 포트 포워딩을 통해서 외부로부터
           마스커레이드되는 내부의 컴퓨터로 직접 연결할 수 있다.

  * IP: ipautofw masq support (EXPERIMENTAL) (CONFIG_IP_MASQUERADE_IPAUTOFW) [N/y/m/?]
    - NO:  IPautofw 기능은 포트 포워딩을 사용하기 위해서 사용되던 구시대적인
           방법이다. 이 기능은 프로토콜 단위의 모듈을 사용하는 것이 더 낫다.

  * IP: ipportfw masq support (EXPERIMENTAL) (CONFIG_IP_MASQUERADE_IPPORTFW) [Y/m/n/?]
    - YES: IPPORTFW를 사용가능하게 한다.

           이 옵션을 선택하면, 인터넷상의 외부의 컴퓨터들이 내부의 
           마스커레이드되는 컴퓨터와 직접 통신할 수 있게 된다. 이 기능은 
           통상적으로 내부의 SMTP, TELNET, WWW 서버에 접속하기 위해서 사용된다.
           FTP 포트 포워딩은 FAQ 섹션에 설명되는 추가 패치를 사용해야 한다.
           포트 포워딩에 대한 추가적인 정보는 이 HOWTO의 Forwards 섹션에서
           다루고 있다.

  * IP: ip fwmark masq-forwarding support (EXPERIMENTAL) (CONFIG_IP_MASQUERADE_MFW) [Y/m/n/?]
    - NO:  IPCHAINS로 부터 직접 IP 포워딩을 할 수 있게 한다. 현재 이 코드는 
           시험용이며, 권장하는 방법은 IPMASQADM 와 IPPORTFW를 사용하는 것이다.

  * IP: optimize as router not host (CONFIG_IP_ROUTER) [Y/n/?]
    - YES: 이 기능은 커널의 네트웍 기능을 최적화 해 준다.

  * IP: GRE tunnels over IP (CONFIG_NET_IPGRE) [N/y/m/?]
    - NO:  이 기능은 꼭 필요하지는 않으며, IP 마스커레이딩을 통해서 PPTP와 
           GRE 터널을 사용가능하게 한다.

  * IP: TCP syncookie support (not enabled per default) (CONFIG_SYN_COOKIES) [Y/n/?]
    - YES: 기본적인 네트웍 보안을 위해서 선택할 것을 강력히 권장한다.

  * Network device support (CONFIG_NETDEVICES) [Y/n/?]
    - YES: 리눅스의 네트웍 장치를 사용할 수 있게 한다.

  * Dummy net driver support (CONFIG_DUMMY) [M/n/y/?]
    - YES: 꼭 필요하지는 않지만, 문제가 발생했을 때 디버깅 할 때 도움이 될 
           것이다.

  * /proc filesystem support (CONFIG_PROC_FS) [Y/n/?]
    - YES: 리눅스의 네트웍 포워딩 시스템을 사용하기 위해서 필요하다.

NOTE: 이 옵션들은 단지 IP 마스커레이딩이 동작하기 위한 요소들이다. 특정한 네트웍과 특정 하드웨어를 설정하기 위해서는 필요한 다른 옵션들을 더 선택해야 한다.

3.2 내부 LAN에 비공식적인 내부 IP 주소를 할당하기

모든 내부의 마스커레이드 된 컴퓨터들에 공식적인 인터넷 주소가 할당되어져 있지 않기 때문에, 외부의 인터넷 주소와 충돌하지 않도록 그 컴퓨터들에 주소를 할당할 방법이 있어야 한다.

>IP 마스커레이드 FAQ의 원본으로부터 인용:

RFC 1918 은 외부와 연결되지 않는 "개인용" 네트웍에 사용되는 IP 주소들에 관한 공식적인 문서이다. 이러한 경우에 사용되기 위해서 세 가지의 주소 영역이 있다.


Section 3: 개인용 주소 영역

인터넷 주소 할당 기구(The Internet Assigned Numbers Authority : IANA)는 
IP 주소중에서 다음 세가지 영역을 개인용 네트웍을 위해서 예약해 두었다:

              10.0.0.0        -   10.255.255.255
              172.16.0.0      -   172.31.255.255
              192.168.0.0     -   192.168.255.255

첫번째 영역은 "24-bit 영역", 두번째는 "20-bit 영역", 세번째는 "16-bit 영역"으로
부르기로 한다. 첫번째 영역은 class A 네트웍 주소 영역이며, 두번째는 class B 
네트웍 주소의 연속된 16개의 번호들이고, 세번째는 class C 네트웍 주소의 연속된 
255개의 번호들이다. 

설명을 위해서, 필자는 192.168.0.0 네트웍과 255.255.255.0의 class-C 서브넷 마스크를 사용했고, 이 HOWTO에서도 이 주소를 사용할 것이다. 그러나, 위에 있는 개인용 네트웍 주소중에서 어떤 것을 사용해도 무방하다. 단, 각각의 경우에 적절한 서브넷 마스크를 사용해야 한다.

만약 Class-C 네트웍을 사용한다면, 마스커레이딩을 사용할 컴퓨터들에 192.168.0.1, 192.168.0.2, 192.168.0.3, ..., 192.168.0.x 등과 같이 주소를 할당해야 한다.

192.168.0.1 은 보통 내부 게이트웨이 혹은 리눅스 마스커레이드 머신의 주소로서 외부로 연결되는 통로이다. 192.168.0.0과 192.168.0.255는 각각 "네트웍" 자체의 주소와 "브로드캐스트" 주소이다. (이 주소들은 예약된 주소들이다.) 이 주소들을 컴퓨터들에게 할당면, 네트웍이 제대로 동작하지 않을 것이다.

3.3 IP 포워딩 정책 설정하기

이제, 커널과 기타 필요한 패키지들이 준비되어 있어야 한다. 리눅스 마스커레이드 서버에도 모든 네트웍 IP 주소들과, 게이트웨이, DNS 주소들을 설정해야 한다. 네트웍 카드들을 설정하는 방법을 모른다면, 2.0.x-Requirements 혹은 2.2.x-Requirements 섹션에 언급된 HOWTO들을 참조하기 바란다.

이제 남은 것은 IP 방화벽 도구들을 설정해서 포워딩과 마스커레이딩을 하도록 하는 것이다:

** 설정은 여러가지 방법으로 할 수가 있지만, 필자는 다음에 예로 든 방법을 사용해서 성공했다. 하지만, 여러분은 다른 방법을 사용할 수도 있을 것이다.

** 이 섹션에서 제공하는 것은 IP 마스커레이드 기능이 작동하기 위한 최소한의 방화벽 정책이다. 일단 IP 마스커레이드가 제대로 동작하면(이 HOWTO에서 나중에 언급한다) Strong-IPFWADM-RulesetsStrong-IPCHAINS-Rulesets 섹션에서 보안 강도가 보다 높은 정책들에 대해 알아보기 바란다. 더 자세한 사항은 IPFWADM (2.0.x) 혹은 IPCHAINS(2.2.x) man 페이지를 참조하기 바란다.

리눅스 2.0.x 커널

다음과 같은 "간단한" 초기 정책으로 /etc/rc.d/rc.firewall 화일을 생성한다:


# rc.firewall - Initial SIMPLE IP Masquerade setup for 2.0.x kernels using IPFWADM
#
# Load all required IP MASQ modules
#
#   NOTE:  Only load the IP MASQ modules you need.  All current available IP MASQ modules
#          are shown below but are commented out from loading.

# Needed to initially load modules
#
/sbin/depmod -a

# Supports the proper masquerading of FTP file transfers using the PORT method
#
/sbin/modprobe ip_masq_ftp

# Supports the masquerading of RealAudio over UDP.  Without this module,
#       RealAudio WILL function but in TCP mode.  This can cause a reduction
#       in sound quality
#
#/sbin/modprobe ip_masq_raudio

# Supports the masquerading of IRC DCC file transfers
#
#/sbin/modprobe ip_masq_irc

# Supports the masquerading of Quake and QuakeWorld by default.  This modules is
#   for for multiple users behind the Linux MASQ server.  If you are going to play
#   Quake I, II, and III, use the second example.
#
#Quake I / QuakeWorld (ports 26000 and 27000)
#/sbin/modprobe ip_masq_quake
#
#Quake I/II/III / QuakeWorld (ports 26000, 27000, 27910, 27960)
#/sbin/modprobe ip_masq_quake ports=26000,27000,27910,27960

# Supports the masquerading of the CuSeeme video conferencing software
#
#/sbin/modprobe ip_masq_cuseeme

#Supports the masquerading of the VDO-live video conferencing software
#
#/sbin/modprobe ip_masq_vdolive


#CRITICAL:  Enable IP forwarding since it is disabled by default since
#
#           Redhat Users:  you may try changing the options in /etc/sysconfig/network from:
#
#                       FORWARD_IPV4=false
#                             to
#                       FORWARD_IPV4=true
#
echo "1" > /proc/sys/net/ipv4/ip_forward

# Dynamic IP users:
#
#   If you get your Internet IP address dynamically from SLIP, PPP, or DHCP, enable this following
#       option.  This enables dynamic-ip address hacking in IP MASQ, making the life
#       with DialD, PPPd, and similar programs much easier.
#
#echo "1" > /proc/sys/net/ipv4/ip_dynaddr


# MASQ timeouts
#
#   2 hrs timeout for TCP session timeouts
#  10 sec timeout for traffic after the TCP/IP "FIN" packet is received
#  160 sec timeout for UDP traffic (Important for MASQ'ed ICQ users)
#
/sbin/ipfwadm -M -s 7200 10 160


# DHCP:  For people who receive their external IP address from either DHCP or BOOTP
#        such as ADSL or Cablemodem users, it is necessary to use the following
#        before the deny command.  The "bootp_client_net_if_name" should be replaced
#        the name of the link that the DHCP/BOOTP server will put an address on to?
#        This will be something like "eth0", "eth1", etc.
#
#        This example is currently commented out.
#
#
#/sbin/ipfwadm -I -a accept -S 0/0 67 -D 0/0 68 -W bootp_clients_net_if_name -P udp


# Enable simple IP forwarding and Masquerading
#
#  NOTE:  The following is an example for an internal LAN address in the 192.168.0.x
#         network with a 255.255.255.0 or a "24" bit subnet mask.
#
#         Please change this network number and subnet mask to match your internal LAN setup
#
/sbin/ipfwadm -F -p deny
/sbin/ipfwadm -F -a m -S 192.168.0.0/24 -D 0.0.0.0/0

/etc/rc.d/rc.firewall 화일을 편집해서 정책을 생성하고 나면, "chmod 700 /etc/rc.d/rc.firewall" 라고 명령해서 실행가능한 화일로 만든다.

위의 방법처럼 전체 TCP/IP 네트웍에 대해서가 아니라, 각각의 머신별로 IP 마스커레이딩을 설정할 수도 있다. 예를 들어서, 192.168.0.2와 192.168.0.8의 주소를 갖는 호스트는 인터넷에 접근가능하도록 하고 다른 내부의 머신들은 접근하지 못하도록 하고자 한다면, 위의 /etc/rc.d/rc.firewall 화일에서 "Enable simple IP forwarding and Masquerading" 이라고 되어 있는 부분을 바꿔주면 된다.

# Enable simple IP forwarding and Masquerading
#
#  NOTE:  The following is an example to only allow IP Masquerading for the 192.168.0.2
#         and 192.168.0.8 machines with a 255.255.255.0 or a "24" bit subnet mask.
#
#         Please use the following in ADDITION to the simple ruleset above for specific
#         MASQ networks.  Also change the network numbers and subnet masks to match your
#         internal LAN setup
#
/sbin/ipfwadm -F -p deny
/sbin/ipfwadm -F -a m -S 192.168.0.2/32 -D 0.0.0.0/0
/sbin/ipfwadm -F -a m -S 192.168.0.8/32 -D 0.0.0.0/0

IP 마스커레이딩을 처음 사용하는 사람들이 흔히 저지르는 실수는 다음과 같이 명령하는 것이다:

ipfwadm -F -p masquerade

디폴트로 마스커레이딩을 하도록 해서는 안된다. 만약 그렇게 설정하면 라우팅 테이블을 다룰 줄 아는 어떤 누군가가 여러분의 게이트웨이를 통해서 자신의 신분을 숨기고서 어딘가로 접속할 수가 있게 된다!

위의 설정화일 내용은, /etc/rc.d/rc.firewall 화일이나 혹은 원하는 다른 rc 화일에 넣을 수도 있고, 아니면 IP 마스커레이드가 필요할 때마다 수동으로 명령할 수도 있다.

Strong-IPFWADM-RulesetsStrong-IPCHAINS-Rulesets 섹션에서 IPFWADM에 관한 자세한 안내와 더 강력한 IPFWADM 정책들의 예를 볼수가 있다.

리눅스 2.2.x 커널

2.1.x 나 2.2.x 커널에서 IP 마스커레이딩 정책들을 다루기 위한 방화벽 도구로서 IPFWADM은 더이상 사용되지 않는다 이 새 버젼의 커널들은 이제 IPCHAINS라는 도구를 사용한다. 이렇게 된 자세한 이유는 FAQ 섹션을 참조하기 바란다.

다음과 같은 "간단한" 초기 정책으로 /etc/rc.d/rc.firewall 화일을 생성한다:


#!/bin/sh
#
# rc.firewall - Initial SIMPLE IP Masquerade test for 2.1.x and 2.2.x kernels using IPCHAINS
#
# Load all required IP MASQ modules
#
#   NOTE:  Only load the IP MASQ modules you need.  All current IP MASQ modules
#          are shown below but are commented out from loading.

# Needed to initially load modules
#
/sbin/depmod -a

# Supports the proper masquerading of FTP file transfers using the PORT method
#
/sbin/modprobe ip_masq_ftp

# Supports the masquerading of RealAudio over UDP.  Without this module,
#       RealAudio WILL function but in TCP mode.  This can cause a reduction
#       in sound quality
#
#/sbin/modprobe ip_masq_raudio

# Supports the masquerading of IRC DCC file transfers
#
#/sbin/modprobe ip_masq_irc


# Supports the masquerading of Quake and QuakeWorld by default.  This modules is
#   for for multiple users behind the Linux MASQ server.  If you are going to play
#   Quake I, II, and III, use the second example.
#
#Quake I / QuakeWorld (ports 26000 and 27000)
#/sbin/modprobe ip_masq_quake
#
#Quake I/II/III / QuakeWorld (ports 26000, 27000, 27910, 27960)
#/sbin/modprobe ip_masq_quake ports=26000,27000,27910,27960


# Supports the masquerading of the CuSeeme video conferencing software
#
#/sbin/modprobe ip_masq_cuseeme

#Supports the masquerading of the VDO-live video conferencing software
#
#/sbin/modprobe ip_masq_vdolive


#CRITICAL:  Enable IP forwarding since it is disabled by default since
#
#           Redhat Users:  you may try changing the options in /etc/sysconfig/network from:
#
#                       FORWARD_IPV4=false
#                             to
#                       FORWARD_IPV4=true
#
echo "1" > /proc/sys/net/ipv4/ip_forward


# Dynamic IP users:
#
#   If you get your IP address dynamically from SLIP, PPP, or DHCP, enable this following
#       option.  This enables dynamic-ip address hacking in IP MASQ, making the life
#       with Diald and similar programs much easier.
#
#echo "1" > /proc/sys/net/ipv4/ip_dynaddr


# MASQ timeouts
#
#   2 hrs timeout for TCP session timeouts
#  10 sec timeout for traffic after the TCP/IP "FIN" packet is received
#  160 sec timeout for UDP traffic (Important for MASQ'ed ICQ users)
#
/sbin/ipchains -M -S 7200 10 160


# DHCP:  For people who receive their external IP address from either DHCP or BOOTP
#        such as ADSL or Cablemodem users, it is necessary to use the following
#        before the deny command.  The "bootp_client_net_if_name" should be replaced
#        the name of the link that the DHCP/BOOTP server will put an address on to?
#        This will be something like "eth0", "eth1", etc.
#
#        This example is currently commented out.
#
#
#/sbin/ipchains -A input -j ACCEPT -i bootp_clients_net_if_name -s 0/0 67 -d 0/0 68 -p udp

# Enable simple IP forwarding and Masquerading
#
#  NOTE:  The following is an example for an internal LAN address in the 192.168.0.x
#         network with a 255.255.255.0 or a "24" bit subnet mask.
#
#         Please change this network number and subnet mask to match your internal LAN setup
#
/sbin/ipchains -P forward DENY
/sbin/ipchains -A forward -s 192.168.0.0/24 -j MASQ

/etc/rc.d/rc.firewall 화일을 편집해서 정책을 생성하고 나면, chmod 700 /etc/rc.d/rc.firewall라고 명령해서 실행가능한 화일로 만든다.

위의 방법처럼 전체 TCP/IP 네트웍에 대해서가 아니라, 각각의 머신별로 IP 마스커레이딩을 설정할 수도 있다. 예를 들어서, 192.168.0.2와 192.168.0.8의 주소를 갖는 호스트는 인터넷에 접근가능하도록 하고 다른 내부의 머신들은 접근하지 못하도록 하고자 한다면, 위의 /etc/rc.d/rc.firewall 화일에서 "Enable simple IP forwarding and Masquerading" 이라고 되어 있는 부분을 바꿔주면 된다.


#!/bin/sh
#
# Enable simple IP forwarding and Masquerading
#
#  NOTE:  The following is an example to only allow IP Masquerading for the 192.168.0.2
#         and 192.168.0.8 machines with a 255.255.255.0 or a "24" bit subnet mask.
#
#         Please change this network number and subnet mask to match your internal LAN setup
#
/sbin/ipchains -P forward deny
/sbin/ipchains -A forward -s 192.168.0.2/32 -j MASQ
/sbin/ipchains -A forward -s 192.168.0.8/32 -j MASQ

IP 마스커레이딩을 처음 사용하는 사람들이 흔히 저지르는 실수는 다음과 같이 명령하는 것이다:

/sbin/ipchains -P forward masquerade

디폴트로 마스커레이딩을 하도록 해서는 안된다. 만약 그렇게 설정하면 라우팅 테이블을 다룰 줄 아는 어떤 누군가가 여러분의 게이트웨이를 통해서 자신의 신분을 숨기고서 어딘가로 접속할 수가 있게 된다!

위의 설정화일 내용은, /etc/rc.d/rc.firewall 화일이나 혹은 원하는 다른 rc 화일에 넣을 수도 있고, 아니면 IP 마스커레이드가 필요할 때마다 수동으로 명령할 수도 있다.

Strong-IPFWADM-RulesetsStrong-IPCHAINS-Rulesets 섹션에서 IPCHAINS에 관한 자세한 안내와 더 강력한 IPCHAINS 정책들의 예를 볼 수가 있다. IPCHAINS의 사용법에 관한 자세한 사항은 Linux IP CHAINS HOWTO을 참조하기 바란다.


다음 이전 차례