CONFIG_NET=yЗабележка : Това се отнася до 2.2.x и 2.3.x kernel-и. За по-старите може да има несъществени разлики.
CONFIG_FIREWALL=y
CONFIG_IP_FIREWALL=y
CONFIG_IP_ALWAYS_DEFRAG=y
CONFIG_IP_TRANSPARENT_PROXY=y
CONFIG_IP_MASQUERADE=y
CONFIG_IP_MASQUERADE_ICMP=y
router:~# ping 192.168.0.10На Windows-станциите също е необходимо да зададете IP-то на router-а като Gateway (пак в "TCP/IP Protocol Settings") сложете му примерно 192.168.0.1 (не използвайте .0 и .255 - това са адреси я по-специално предназначение, които ще доведат до грешки при работата). Така настроените "private" IP адреси ще бъдат вътрешната страна на мрежата. Тези адреси реално ще се използват само от локалната мрежа, за вътрешна адресация. IP пакетите минаващи през Linux-машината с връзка към I'net ще бъдат с "маскирано" IP - това на същата машина, но в Internet. Трябва да направите разлика - единият адрес е адреса в "маскраната" мрежа, другаият адрес е адреса във външната мрежа, т.е. на I'net интерфейса - най-вероятно PPP връзка. За да направите справка на кой интерфейс какво IP отговаря (под Linux) напишете:
PING 192.168.0.10 (192.168.0.10): 56 data bytes
64 bytes from 192.168.0.10: icmp_seq=0 ttl=64 time=0.8 ms
...
router:~# ifconfigТова са примерни IP адреси, естествено. Тук връзката е демонстрирана с Ethernet-интерфейс "eth0", в който машината "router" има IP адрес 192.168.0.1, а другата (Point-to-Point) - 192.168.0.2. При PPP-интерфейса машината "router" има адрес 195.138.53.185. 195.138.52.100 е адресът на отсрещната страна, т.е. dial-up server-а.
lo Link encap:Local Loopback
inet addr:127.0.0.1 Bcast:127.255.255.255 Mask:255.0.0.0
UP BROADCAST LOOPBACK RUNNING MTU:3584 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 coll:0ppp0 Link encap:Point-Point Protocol
inet addr:195.132.53.185 P-t-P:195.132.53.100 Mask:255.255.255.0
UP POINTOPOINT RUNNING MTU:552 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0
TX packets:0 errors:0 dropped:0 overruns:0eth0 Link encap:10Mbps Ethernet HWaddr FC:FC:C8:00:00:01
inet addr:192.168.0.1 P-t-P:192.168.0.10 Mask:255.255.255.0
UP POINTOPOINT RUNNING NOARP MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0
TX packets:0 errors:0 dropped:0 overruns:0
Interrupt:7 Base address:0x378
router:~# route add 192.168.0.2 eth0router:~# route add default gw 195.132.53.100Забележка : Последното би трябвало вече да е добавено, ако сте пуснали pppd с опция "defaultroute". Това е полезно, защото не винаги знаете какъв IP адрес ще ви бъде присвоен от dial-up-a.
station1:~# route add 192.168.0.1Друга забележка : Можете да избегнете IP адресите, като използвате имената на съответните машини, както са зададени в /etc/hosts.
station1:~# route add default gw 192.168.0.1
echo 1 > /proc/sys/net/ipv4/ip_forwardСега трябва да накараме рутера да: (1) пренасочва IP пакетите, които пристигат от "вътрешните" интерфейси (Ethernet, PLIP, SLIP, дори PPP) към неговия "default route", който е навън към Мрежата, и обратно - да връща пакетите навътре от Мрежата към останалите локални машини. (2) (и основно :)) слага собствения си IP адрес като източник на изпратените пакети и да връща отговорите, на съответните "скрити" станции.
За ipfwadm:
router:~# /sbin/ipfwadm -F -p denyЗа ipchains:
router:~# /sbin/ipchains -P forward DENYСлед това се задава правило за "Forwarding" (Ако го оставите така, всички пакетите ще бъдат "denied" - забранени :)) само от определени IP адреси. Примерно 192.168.0.*.
За ipfwadm:
router:~# /sbin/ipfwadm -F -a m -S 192.168.0.0/24 -D 0.0.0.0/0 -W eth0За ipchains:
router:~# /sbin/ipchains -I forward -s 192.168.0.0/24 -i eth0 -j MASQТъй като не използваме конкретно IP, а сме обхванали цяла подмрежа, опцията "-W" е необходима, за да сме сигурни, че пакетът идва точно от локалната мрежа, а не някъде отвън. Но в този случай, когато имаме само 2 PC-та, може би по-добрият вариант е да се зададе само един IP за източник:
За ipfwadm:
router:~# /sbin/ipfwadm -F -a m -S 192.168.0.10 -D 0.0.0.0/0 -W eth0За ipchains:
router:~# /sbin/ipchains -I forward -s 192.168.0.10 -i eth0 -j MASQОбърнете внимание, че, въпреки че адресът е само един, пак задаваме име на интерфейс. Това е необходимо, за да нямате проблеми при "IP Spoofing" атаки.
За ipfwadm:
router:~# /sbin/ipfwadm -F -lЗа ipchains:
IP firewall forward rules, default policy: deny
type prot source destination ports
acc/m all 192.168.0.10 0.0.0.0 n/a
router:~# /sbin/ipchains -L forwardТук съществува едно единствено правило - само за IP 192.168.0.10.
Chain forward (policy DENY):
target prot opt source destination ports
MASQ all ------ 192.168.0.10 anywhere n/a
linux/Documentation/networking/ip_masq/* - документацията на kernel-а;
ipfwadm(8), ipchains(8), ipfw(4), route(8), ifconfig(8) - Man-страниците на гореспоменатите програми.