Rudi Ahlers
2010-Oct-29 08:22 UTC
[CentOS] How to access one machine behind iptables, on different subnet?
Hi all, I wonder if someone can help me with this: The setup is as follows: 192.168.1.254 - wireless ADSL modem, with DHCP pool on 192.168.100 - 192.168.200 192.168.1.250 - Linux firewall RED interface 192.168.2.250 - Linux firewall GREEN interface. There are some normal LAN clients behind the Linux firewall's GREEN interface, which can all access each other's shared services and also all the clients behind the RED interface. i.e. those clients connected to the 192.168.1.254 ADSL wifi APP directly. Now I want the clients on the "outside" to connect to one specific host on the inside, behind the GREEN interface, on IP 192.168.1.20. How would I do that? I know I can do this with port fowarding, but need many ports forwarded. How do I give full access to all ports on this IP, instead of forwarding every port? Does that make sense? Currently no clients on the 192.168.1.0 subnect can access any client on the 192.168.2.0 subnet. [root at intranet ~]# iptables -L Chain INPUT (policy ACCEPT) target prot opt source destination ACCEPT udp -- anywhere anywhere udp dpt:domain ACCEPT tcp -- anywhere anywhere tcp dpt:domain ACCEPT udp -- anywhere anywhere udp dpt:bootps ACCEPT tcp -- anywhere anywhere tcp dpt:bootps ACCEPT tcp -- anywhere anywhere tcp dpt:tftp ACCEPT tcp -- anywhere anywhere tcp dpt:http ACCEPT tcp -- anywhere anywhere tcp dpt:25151 Chain FORWARD (policy ACCEPT) target prot opt source destination ACCEPT all -- anywhere 192.168.122.0/24 state RELATED,ESTAB LISHED ACCEPT all -- 192.168.122.0/24 anywhere ACCEPT all -- anywhere anywhere REJECT all -- anywhere anywhere reject-with icmp-po rt-unreachable REJECT all -- anywhere anywhere reject-with icmp-po rt-unreachable ACCEPT all -- 192.168.2.0/24 anywhere ACCEPT all -- anywhere 192.168.2.0/24 Chain OUTPUT (policy ACCEPT) target prot opt source destination [root at intranet ~]# route -nv Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 192.168.2.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1 192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0 169.254.0.0 0.0.0.0 255.255.0.0 U 0 0 0 eth1 0.0.0.0 192.168.1.254 0.0.0.0 UG 0 0 0 eth0 The Linux firewall runs CentOS 5.5. x64 [root at intranet ~]# cat /etc/redhat-release CentOS release 5.5 (Final) [root at intranet ~]# iptables -V iptables v1.3.5 -- Kind Regards Rudi Ahlers SoftDux Website: http://www.SoftDux.com Technical Blog: http://Blog.SoftDux.com Office: 087 805 9573 Cell: 082 554 7532
Jorge Fábregas
2010-Oct-29 12:10 UTC
[CentOS] How to access one machine behind iptables, on different subnet?
On Friday 29 October 2010 04:22:52 Rudi Ahlers wrote:> How do I give full access to all ports on this IP, instead of forwarding > every port?Sure. That's called One-to-One NAT. You'll do something like this: iptables -t nat -I PREROUTING -d 192.168.1.20 -j DNAT --to-destination $GREEN ...where $GREEN is one ip on your 192.168.2.x network. Then make sure you have the proper "allow" rules on the INPUT chain for your LAN ip ($GREEN). The above was for ingress traffic. Now, for egress traffic (for this internal LAN ip) you'll need to perform NAT as well: iptables -t nat -A POSTROUTING -s $GREEN -j SNAT --to-source 192.168.1.20 Check out: http://www.linuxhomenetworking.com/wiki/index.php/Quick_HOWTO_:_Ch14_:_Linux_Firewalls_Using_iptables HTH, Jorge
Dan Carl
2010-Oct-29 16:01 UTC
[CentOS] How to access one machine behind iptables, on different subnet?
On 10/29/2010 3:22 AM, Rudi Ahlers wrote:> Hi all, > > I wonder if someone can help me with this: The setup is as follows: > > 192.168.1.254 - wireless ADSL modem, with DHCP pool on 192.168.100 - 192.168.200 > 192.168.1.250 - Linux firewall RED interface > 192.168.2.250 - Linux firewall GREEN interface. > > There are some normal LAN clients behind the Linux firewall's GREEN > interface, which can all access each other's shared services and also > all the clients behind the RED interface. i.e. those clients connected > to the 192.168.1.254 ADSL wifi APP directly. > > Now I want the clients on the "outside" to connect to one specific > host on the inside, behind the GREEN interface, on IP 192.168.1.20. > How would I do that? I know I can do this with port fowarding, but > need many ports forwarded. How do I give full access to all ports on > this IP, instead of forwarding every port? Does that make sense?<snip> Not much of a firewall if you allow everything, unless you're limiting the "outside" IPs. Other solutions would be to allow either a range of ports. Ex --dport 5000:5500 --dport 1024:65535 (all unassigned ports) or define the ports you wish to allow with a variable Ex FORWARDPORTS="1024 1025 1026" even a hybred like this should work Ex FORWARDPORTS="1024 1025 1026 5000:5500" Then call the variable in your forward rules. Dan