Mam w serwerze [Fedora Core 4] dwa połączenia sieciowe:
eth0 - całkowicie zaufana sieć LAN (192.168.0.1/24)
ppp0 - neostrada
Stworzyłem nastepujący skrypt, modyfikujący iptables:
iptables -F
iptables -t nat -F
iptables -t mangle -F
iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
iptables -P FORWARD DROP
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -i eth0 -j ACCEPT
iptables -A INPUT -p icmp -j ACCEPT
iptables -A INPUT -p tcp --dport ssh -j ACCEPT
iptables -A INPUT -p tcp --dport 20 -j ACCEPT
iptables -A INPUT -p tcp --dport 21 -j ACCEPT
iptables -A INPUT -p tcp --dport http -j ACCEPT
iptables -A INPUT -p tcp --dport https -j ACCEPT
iptables -A INPUT -p tcp --dport pop3 -j ACCEPT
iptables -A INPUT -p tcp --dport smtp -j ACCEPT
iptables -A INPUT -p all -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -i eth0 -j ACCEPT
iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
W jego wyniku sieć zachowuje się następująco:
- serwer widzi komputer z LAN (pinguje), ma dostęp do internetu (działa http z internetu, pinguje)
- komputer z LAN widzi serwer (działa http z serwera, pinguje), nie widzi internetu (nawet nie pinguje)
Obecnie mam problem z tym, by komputer w LAN miał internet, bo wg. powyższego kodu nie ma.
Jeśli ktoś ma jakiś pomysł na proste przekierowanie wszystkich portów, które nie są obsługiwane przez serwer, chętnie poznam. Myślałem, by dać przekierowanie zakresu portów 1025:65535, ale chyba to nie jest najlepszy pomysł.
Moim zamierzeniem końcowym jest następująca konfiguracja:
- serwer widzi komputer z LAN, ma dostęp do internetu
- komputer z LAN widzi serwer (działają jego usługi - np.: http), ma dostęp do internetu
- jako serwer widziane są obsługiwane usługi, pozostałe porty są przekierowywane na komputer w sieci LAN (192.168.0.2, który je obsługuje lub nie) - tego jeszcze nie zrobiłem