NAT on sparc64
Hello,
I use NAT with success for a long time. Yesterday, I have built a
2.6.21.1 linux kernel because a very important bug (sbus iommu) was fixed in this release. Before, I used a 2.6.20.4 patched kernel that worked fine.
My iptables script is :
# Generated by iptables-save v1.2.11 on Sat Jan 22 20:25:31 2005 *filter
#
#
#===============================================================================
# Par défaut, tout est rejeté sauf sur l'interface loopback
#===============================================================================
#
:INPUT DROP [28:3300]
:FORWARD DROP [0:0]
:OUTPUT DROP [27:3120]
[0:0] -A INPUT -i lo -j ACCEPT
#
#
#===============================================================================
# Tout ce qui provient du LAN est accepté.
#===============================================================================
#
[0:0] -A INPUT -i eth0 -j ACCEPT
#
#
#===============================================================================
# Protocoles provenant de l'interface WAN rayleigh.
# ftp, ssh, smtp, http, ntp, https, imaps, pop3s, cvs, jabber
#===============================================================================
#
[0:0] -A INPUT -i eth1 -p tcp -m tcp --dport 21 -j ACCEPT [0:0] -A INPUT -i eth1 -p tcp -m tcp --dport 22 -j ACCEPT [0:0] -A INPUT -i eth1 -p tcp -m tcp --dport 25 -j ACCEPT [0:0] -A INPUT -i eth1 -p tcp -m tcp --dport 80 -j ACCEPT [0:0] -A INPUT -i eth1 -p tcp -m tcp --dport 123 -j ACCEPT [0:0] -A INPUT -i eth1 -p udp -m udp --dport 123 -j ACCEPT [0:0] -A INPUT -i eth1 -p tcp -m tcp --dport 443 -j ACCEPT [0:0] -A INPUT -i eth1 -p tcp -m tcp --dport 993 -j ACCEPT [0:0] -A INPUT -i eth1 -p tcp -m tcp --dport 995 -j ACCEPT [0:0] -A INPUT -i eth1 -p tcp -m tcp --dport 2401 -j ACCEPT [0:0] -A INPUT -i eth1 -p udp -m udp --dport 2401 -j ACCEPT [0:0] -A INPUT -i eth1 -p tcp -m tcp --dport 5222 -j ACCEPT [0:0] -A INPUT -i eth1 -p icmp -j ACCEPT
#
#
#===============================================================================
# Protocoles provenant de l'interface WAN newton.
# ssh, ntp, smtp
#===============================================================================
#
[0:0] -A INPUT -i eth2 -p tcp -m tcp --dport 22 -j ACCEPT [0:0] -A INPUT -i eth2 -p tcp -m tcp --dport 25 -j ACCEPT [0:0] -A INPUT -i eth2 -p tcp -m tcp --dport 123 -j ACCEPT [0:0] -A INPUT -i eth2 -p udp -m udp --dport 123 -j ACCEPT [0:0] -A INPUT -i eth2 -p icmp -j ACCEPT
#
#
#===============================================================================
# Réceptions inconditionnelles
#===============================================================================
#
[0:0] -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT [0:0] -A INPUT -m state --state INVALID -j DROP
#
#
#===============================================================================
# Transmission du LAN vers l'interface WAN rayleigh (route par défaut). # ftp, ssh, http, pop3, nntp, https, imaps, pop3s, openvpn, cvs, # 3000:3001 (jcollab)
#===============================================================================
#
[0:0] -A FORWARD -i eth0 -o eth1 -p tcp -m tcp --dport 21 -j ACCEPT [0:0] -A FORWARD -i eth0 -o eth1 -p tcp -m tcp --dport 22 -j ACCEPT [0:0] -A FORWARD -i eth0 -o eth1 -p tcp -m tcp --dport 43 -j ACCEPT [0:0] -A FORWARD -i eth0 -o eth1 -p tcp -m tcp --dport 80 -j ACCEPT [0:0] -A FORWARD -i eth0 -o eth1 -p tcp -m tcp --dport 110 -j ACCEPT [0:0] -A FORWARD -i eth0 -o eth1 -p tcp -m tcp --dport 119 -j ACCEPT [0:0] -A FORWARD -i eth0 -o eth1 -p tcp -m tcp --dport 443 -j ACCEPT [0:0] -A FORWARD -i eth0 -o eth1 -p tcp -m tcp --dport 993 -j ACCEPT [0:0] -A FORWARD -i eth0 -o eth1 -p tcp -m tcp --dport 995 -j ACCEPT [0:0] -A FORWARD -i eth0 -o eth1 -p tcp -m tcp --dport 1194 -j ACCEPT [0:0] -A FORWARD -i eth0 -o eth1 -p udp -m udp --dport 1194 -j ACCEPT [0:0] -A FORWARD -i eth0 -o eth1 -p tcp -m tcp --dport 2401 -j ACCEPT [0:0] -A FORWARD -i eth0 -o eth1 -p udp -m udp --dport 2401 -j ACCEPT [0:0] -A FORWARD -i eth0 -o eth1 -p tcp -m tcp --dport 3000:3001 -j ACCEPT [0:0] -A FORWARD -i eth0 -o eth1 -p tcp -m tcp --dport 5900 -j ACCEPT #
#
#===============================================================================
# De l'interface WAN rayleigh Vers les machines du /29.
# ssh #=============================================================================== # [0:0] -A FORWARD -i eth1 -o eth0 -p tcp -m tcp --dport 22 -j ACCEPT # # #=============================================================================== # De l'interface WAN rayleigh vers lebegue. # 3000:3001 (jcollab), mysql #=============================================================================== # [0:0] -A FORWARD -i eth1 -o eth0 -p tcp -m tcp -d 192.168.0.81 --dport 80 -j ACCEPT [0:0] -A FORWARD -i eth1 -o eth0 -p tcp -m tcp -d 192.168.0.81 --dport 3000:3001 -j ACCEPT [0:0] -A FORWARD -i eth1 -o eth0 -p tcp -m tcp -d 192.168.0.81 --dport 3306 -j ACCEPT # # #=============================================================================== # De l'interface WAN rayleigh vers fermat. # smtp, http #=============================================================================== # [0:0] -A FORWARD -i eth1 -o eth0 -p tcp -m tcp -d 192.168.0.83 --dport 25 -j ACCEPT [0:0] -A FORWARD -i eth1 -o eth0 -p tcp -m tcp -d 192.168.0.83 --dport 80 -j ACCEPT # # #=============================================================================== # De fermat vers l'interface WAN newton. # smtp #=============================================================================== # [0:0] -A FORWARD -i eth0 -o eth2 -p tcp -m tcp -s 192.168.0.83 --dport 25 -j ACCEPT # # #=============================================================================== # De fermat vers l'interface WAN rayleigh. # smtp #=============================================================================== # [0:0] -A FORWARD -i eth0 -o eth1 -p tcp -m tcp -s 192.168.0.83 --dport 3307 -j ACCEPT # # #=============================================================================== # Transmissions inconditionnelles #=============================================================================== # [0:0] -A FORWARD -p icmp -j ACCEPT [0:0] -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT [0:0] -A FORWARD -m state --state INVALID -j DROP # # #=============================================================================== # Émissions autorisées sur les interfaces LAN et loopback #=============================================================================== # [0:0] -A OUTPUT -o lo -j ACCEPT [0:0] -A OUTPUT -o eth0 -j ACCEPT # # #=============================================================================== # Émissions autorisées sur l'interface WAN rayleigh # ftp, ssh, telnet, smtp, whois, domain, http, pop3, nntp, ntp, https, cvs # 3000:3001 (jcollab), mysql, 8080 (servlet jcollab) #=============================================================================== # [0:0] -A OUTPUT -o eth1 -p tcp -m tcp --dport 21 -j ACCEPT [0:0] -A OUTPUT -o eth1 -p tcp -m tcp --dport 22 -j ACCEPT [0:0] -A OUTPUT -o eth1 -p tcp -m tcp --dport 23 -j ACCEPT [0:0] -A OUTPUT -o eth1 -p tcp -m tcp --dport 25 -j ACCEPT [0:0] -A OUTPUT -o eth1 -p tcp -m tcp --dport 43 -j ACCEPT [0:0] -A OUTPUT -o eth1 -p tcp -m tcp --dport 53 -j ACCEPT [0:0] -A OUTPUT -o eth1 -p udp -m udp --dport 53 -j ACCEPT [0:0] -A OUTPUT -o eth1 -p tcp -m tcp --dport 80 -j ACCEPT [0:0] -A OUTPUT -o eth1 -p tcp -m tcp --dport 110 -j ACCEPT [0:0] -A OUTPUT -o eth1 -p tcp -m tcp --dport 119 -j ACCEPT [0:0] -A OUTPUT -o eth1 -p tcp -m tcp --dport 123 -j ACCEPT [0:0] -A OUTPUT -o eth1 -p udp -m udp --dport 123 -j ACCEPT [0:0] -A OUTPUT -o eth1 -p tcp -m tcp --dport 443 -j ACCEPT [0:0] -A OUTPUT -o eth1 -p tcp -m tcp --dport 554 -j ACCEPT [0:0] -A OUTPUT -o eth1 -p tcp -m tcp --dport 2401 -j ACCEPT [0:0] -A OUTPUT -o eth1 -p udp -m udp --dport 2401 -j ACCEPT [0:0] -A OUTPUT -o eth1 -p tcp -m tcp --dport 3000 -j ACCEPT [0:0] -A OUTPUT -o eth1 -p tcp -m tcp --dport 3001 -j ACCEPT [0:0] -A OUTPUT -o eth1 -p tcp -m tcp --dport 3306 -j ACCEPT [0:0] -A OUTPUT -o eth1 -p tcp -m tcp --dport 8080 -j ACCEPT [0:0] -A OUTPUT -o eth1 -p icmp -j ACCEPT # # #=============================================================================== # Émissions autorisées sur l'interface WAN newton # telnet, ntp #=============================================================================== # [0:0] -A OUTPUT -o eth2 -p tcp -m tcp --dport 23 -j ACCEPT [0:0] -A OUTPUT -o eth2 -p tcp -m tcp --dport 80 -j ACCEPT [0:0] -A OUTPUT -o eth2 -p tcp -m tcp --dport 123 -j ACCEPT [0:0] -A OUTPUT -o eth2 -p udp -m udp --dport 123 -j ACCEPT [0:0] -A OUTPUT -o eth2 -p icmp -j ACCEPT [0:0] -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT [0:0] -A OUTPUT -m state --state INVALID -j DROP COMMIT # Completed on Sat Jan 22 20:25:31 2005 # Generated by iptables-save v1.2.11 on Sat Jan 22 20:25:31 2005 *nat :PREROUTING ACCEPT [2:156] :POSTROUTING ACCEPT [4:377] :OUTPUT ACCEPT [0:0] # # #=============================================================================== # NAT de tout ce qui provient de l'interface LAN #=============================================================================== # [0:0] -A POSTROUTING -s 192.168.0.0/255.255.255.0 -j MASQUERADE COMMIT *mangle :PREROUTING ACCEPT [0:0] :INPUT ACCEPT [0:0] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [0:0] :POSTROUTING ACCEPT [0:0] # # #=============================================================================== # Force le routage des paquets à destination du port 25 provenant de fermat # vers l'interface WAN newton #=============================================================================== # [0:0] -A PREROUTING -s 192.168.0.83 -p tcp -m tcp --dport 25 -jMARK --set-mark 1 COMMIT # Completed on Sat Jan 22 20:25:31 2005
This server runs as firewall/advanced router. eth0 is a LAN interface
(192.168.0.0/24) and eth1 and eth2 are WAN interfaces. With 2.6.20.4 kernel, all rules worked fine. With 2.6.21.1 all but NAT rules work. Workstations on LAN cannot access to WAN. I haven't seen any regression in NAT support. All required conntrack are loaded and iptables -L -t nat returns :
Root rayleigh:[/var/lib/iptables] > iptables -L -t nat
Chain PREROUTING (policy ACCEPT)
target prot opt source destination
Chain POSTROUTING (policy ACCEPT)
target prot opt source destination
MASQUERADE 0 -- localnet/24 anywhere
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
Any idea to solve this trouble ?
Thanks in advance,
JKB