Też przez pewien okres walczyłem z tym problemem. Polecam dwa rozwiązania:
1) proste, z użyciem firewalla o nazwie firestarter
2) trudniejsze, związane z napisaniem własnego firewalla
Ad. 1.
By zainstalować firestartera wystarczy wejść w trybie administratorskim do: Aplikacje -> Dodaj, usuń; i wpisać w wyszukiwarce firestarter, a następnie go zainstalować. Następnie uruchamiamy firestartera z menu: System -> Administracja. Po uruchomieniu włącza się automatycznie wizard, który pomoże nam w konfiguracji. W jednej ze stron wizarda znajdziemy wpis związany z udostępnieniem połączenia, który musimy zaznaczyć. Po zatwierdzeniu zmian w wizardzie zostaje nam tylko otwarcie portów. Przechodzimy do ostatniej zakładki w firestarterze związanej z regułami dostępu do komputera. U góry mamy do wyboru: wejście (input) i wyjście (output), dla których możemy ustawić politykę, czy mają być otwarte (by zablokować port lub nr ip trzeba go dodać do tzw. blacklist), czy też zamknięte (by otworzyć port lub umożliwić dostęp do komputera z innego ip należy je wpisać). Dla rozwiązań domowych wystarczy ustawić łańcuch wejścia na zamknięty, a wyjścia na otwarty. Na samym dole w łańcuchu wejścia (input) znajdziemy część związaną z z udostępnianiem połączenia, w której musimy otworzyć następujące porty: 53, czasami 68, 80; oraz opcjonalnie: 21, 22. Po takim skonfigurowaniu powinien nam śmigać internet na innych komputerach. Jeśli coś jest niejasne w powyższym opisie polecam tematy na forum lepiej zgłębiające to zagadnienie.
Ad. 2.
Tą część polecam bardziej wtajemniczonym w ubuntu użytkownikom. O co chodzi. Sprawa jest prosta. Trzeba napisać skrypt firewalla, wrzucić go do /etc/init.d , dodać regułkę przekierowującą połączenie w /etc/rc.local i dowiązanie symboliczne w /etc/rc.0.d - rc.S.d. I w sumie tyle.

Na tym forum istnieją już skrypty, z których, po dostosowaniu do własnych wymogów, można skorzystać. Ja dodam swój dla większej możliwości wyboru:
Kod: Zaznacz cały
#!/bin/sh
echo '::: Firewall wlaczony :::'
# Odpalenie przekazywania pakietow IP
echo "1" > /proc/sys/net/ipv4/ip_forward
# Czyszczenie tablic NAT-a i filtrowania
iptables -F -t nat
iptables -X -t nat
iptables -F -t filter
iptables -X -t filter
echo 1 > /proc/sys/net/ipv4/ip_forward
echo 1 > /proc/sys/net/ipv4/conf/all/rp_filter
echo 1 > /proc/sys/net/ipv4/tcp_syncookies
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
echo 0 > /proc/sys/net/ipv4/conf/all/accept_source_route
echo 0 > /proc/sys/net/ipv4/conf/all/accept_redirects
echo 1 > /proc/sys/net/ipv4/icmp_ignore_bogus_error_responses
echo 1 > /proc/sys/net/ipv4/conf/all/log_martians
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT DROP
iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT
iptables -A FORWARD -s xxx.xxx.xxx.xxx/xxx.xxx.xxx.xxx -p icmp --icmp-type echo-request -j ACCEPT
iptables -A OUTPUT -p icmp --icmp-type echo-request -j ACCEPT
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
iptables -A FORWARD -o lo -j ACCEPT
# FORWARD
iptables -A FORWARD -j ACCEPT -m state --state NEW,ESTABLISHED,RELATED
iptables -t filter -A FORWARD -p tcp -s xxx.xxx.xxx.xxx/xxx.xxx.xxx.xxx --dport 21 -j ACCEPT
iptables -t filter -A FORWARD -p tcp -s xxx.xxx.xxx.xxx/xxx.xxx.xxx.xxx --dport 80 -j ACCEPT
iptables -t filter -A FORWARD -p tcp -s xxx.xxx.xxx.xxx/xxx.xxx.xxx.xxx --dport 53 -j ACCEPT
iptables -t filter -A FORWARD -p udp -s xxx.xxx.xxx.xxx/xxx.xxx.xxx.xxx --dport 53 -j ACCEPT
iptables -t filter -A FORWARD -s xxx.xxx.xxx.xxx/xxx.xxx.xxx.xxx -p icmp --icmp-type echo-request -j ACCEPT
iptables -t nat -A POSTROUTING -o wlan0 -j SNAT --to-source=xxx.xxx.xxx.xxx
# INPUT
iptables -A INPUT -j ACCEPT -m state --state ESTABLISHED,RELATED
iptables -A INPUT -p tcp --dport 113 -j REJECT --reject-with icmp-port-unreachable
iptables -A INPUT -p tcp --dport 1080 -j REJECT --reject-with icmp-port-unreachable
iptables -A INPUT -s 0/0 -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -s 0/0 -p udp --dport 22 -j ACCEPT
iptables -A INPUT -s 0/0 -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -s xxx.xxx.xxx.xxx/xxx.xxx.xxx.xxx -p tcp --dport 53 -j ACCEPT
iptables -A INPUT -s xxx.xxx.xxx.xxx/xxx.xxx.xxx.xxx -p udp --dport 53 -j ACCEPT
# OUTPUT
iptables -A OUTPUT -j ACCEPT -m state --state ESTABLISHED,RELATED
iptables -A OUTPUT -s 0/0 -p tcp --dport 80 -j ACCEPT
iptables -A OUTPUT -s 0/0 -p udp --dport 80 -j ACCEPT
iptables -A OUTPUT -s 0/0 -p tcp --dport 53 -j ACCEPT
iptables -A OUTPUT -s 0/0 -p udp --dport 53 -j ACCEPT
iptables -A OUTPUT -s 0/0 -p tcp --dport 22 -j ACCEPT
iptables -A OUTPUT -s 0/0 -p udp --dport 22 -j ACCEPT
Kod ten trzeba zapisać w pliku jakaś_nazwa.sh w /etc/init.d. Oczywiście po ówczesnym dostosowaniu. Następnie dodajemy wpis w /etc/rc.local :
Kod: Zaznacz cały
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -o eth0 -j MASQUERADE
Następnie dodajemy dowiązanie symboliczne w /etc/rc.0.d - rc.S.d. Najszybciej można to zrobić w mc jeśli ktoś jednak woli to może to zrobić ręcznie.
Obydwie metody są sprawdzone, więc nie powinno być większych kłopotów.
