From 56fe513238bdd15e966e426f5b28fd53b761781c Mon Sep 17 00:00:00 2001 From: gferg <> Date: Mon, 3 Sep 2001 16:52:38 +0000 Subject: [PATCH] new --- .../Masquerading-Simple-HOWTO.sgml | 612 ++++++++++++++++++ .../Masquerading-Simple-HOWTO/network.png | Bin 0 -> 39788 bytes 2 files changed, 612 insertions(+) create mode 100644 LDP/howto/docbook/Masquerading-Simple-HOWTO/Masquerading-Simple-HOWTO.sgml create mode 100644 LDP/howto/docbook/Masquerading-Simple-HOWTO/network.png diff --git a/LDP/howto/docbook/Masquerading-Simple-HOWTO/Masquerading-Simple-HOWTO.sgml b/LDP/howto/docbook/Masquerading-Simple-HOWTO/Masquerading-Simple-HOWTO.sgml new file mode 100644 index 00000000..926d9c68 --- /dev/null +++ b/LDP/howto/docbook/Masquerading-Simple-HOWTO/Masquerading-Simple-HOWTO.sgml @@ -0,0 +1,612 @@ + + +
+ + + + + + + + Masquerading Made Simple HOWTO + + + John + Tapsell + +
+ tapselj0@cs.man.ac.uk +
+
+
+ + + Thomas + Spellman + +
+ thomas@resonance.org +
+
+
+ + + Matthias + Grimm + +
+ DeadBull@gmx.net +
+
+
+ + + + 0.04 + 2001-09-01 + jpt + + + 0.03 + 2001-07-06 + jpt + + + + + + + + Abstract + + + All of the authors are available on #debian on irc.opensource.net + + John Tapsell (JohnFlux) is the official maintainer. + + Email me (John Tapsell) for any query, flame, feedback, a date, etc. + + Shamelessly stealing from David Ranch's work - dranch@trinnet.net. + + This is NOT a replacement for the IP-Masquerading HOWTO - it is to + complement it, and the two should be read side by side. I do not include + things in here that are covered by the the other HOWTO, nor do I explain + what it all means, or what it is all about. See + http://ipmasq.cjb.net + and the standard Masq-HOWTO for a much better guides. + + This document describes how to enable the Linux IP Masquerade feature + on a given Linux host. IP Masq is a form of Network Address + Translation or NAT that allows internally networked computers that do not + have one or more registered Internet IP addresses to have the ability + to communicate to the Internet via your Linux boxes single Internet IP + address. + + + This is all under the GNU Free Documentation License + + + http://www.gnu.org/copyleft/fdl.html + + + + +
+ + + + + Introduction + + + Introduction + + + + This is intentionally short and to the point. + + If you have a network, that you want to attach to the outside: + + + _____________ + / \ external IP _________ internal IP + | Internet | 123.12.23.43 | linux | 192.168.0.1 + | google.com | <----[outside card]-| machine |-[internal card] + \_____________/ --------- | + | + _____________ ______|_______ + | 192.168.0.2 | / \ + | internal |-----------| 192.168.0.0 | + | machine | | Intranet | + ------------- \______________/ + + + + + + + + + + + Summary: (I like doing summaries first) + + + Assuming external internet card is eth0, and external IP is 123.12.23.43 + and the internal network card is eth1, then: + + +$> modprobe ipt_MASQUERADE +$> iptables -F; iptables -t nat -F; iptables -t mangle -F +$> iptables -t nat -A POSTROUTING -o ppp0 -j SNAT --to 123.12.23.43 +$> echo 1 > /proc/sys/net/ipv4/ip_forward + + Or for a dial-up connection: + + +$> modprobe ipt_MASQUERADE +$> iptables -F; iptables -t nat -F; iptables -t mangle -F +$> iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE +$> echo 1 > /proc/sys/net/ipv4/ip_forward + + Then to secure it: + + +$> iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT +$> iptables -A INPUT -m state --state NEW -i ! eth0 -j ACCEPT +$> iptables -P INPUT DROP #only if the first two are succesful +$> iptables -A FORWARD -i ! eth1 -j REJECT + + Or for a dial-up connection (with eth0 as the internal network card): + + +$> iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT +$> iptables -A INPUT -m state --state NEW -i ! ppp0 -j ACCEPT +$> iptables -P INPUT DROP #only if the first two are succesful +$> iptables -A FORWARD -i ! eth0 -j REJECT + + And thats it! To view the rules do "iptables -t nat -L" + + + + + + + Bitmore indepth version + + Compiling the kernel: (Use a 2.4.x kernel or greater) + + + You need the following support in the kernel: + + + + + Under Networking Options + + + + + Network packet filtering (CONFIG_NETFILTER) + + + + + + + Under Networking Options->Netfilter Configuration + + + + + Connection tracking (CONFIG_IP_NF_CONNTRACK) + + + + + FTP Protocol support (CONFIG_IP_NF_FTP) + + + + + IP tables support (CONFIG_IP_NF_IPTABLES) + + + + + Connection state match support (CONFIG_IP_NF_MATCH_STATE) + + + + + Packet filtering (CONFIG_IP_NF_FILTER) + + + + + REJECT target support (CONFIG_IP_NF_TARGET_REJECT) + + + + + + + Full NAT (CONFIG_IP_NF_NAT) + + + + + MASQUERADE target support (CONFIG_IP_NF_TARGET_MASQUERADE) + + + + + REDIRECT target support (CONFIG_IP_NF_TARGET_REDIRECT) + + + + + + + Packet mangling (CONFIG_IP_NF_MANGLE) + + + + + LOG target support (CONFIG_IP_NF_TARGET_LOG) + + + + + + + First, if the iptable and masq modules are not compiled into the kernel and + not installed, but do exist as modules, we need to install them. + If you insmod ipt_MASQUERADE it will load ip_tables, ip_conntrack and + iptable_nat. + + +$> modprobe ipt_MASQERADE + + Now either your Intranet is large, or you're just trying to get two or three + machines to work on the internet - it doesn't make much difference either way. + + Okay, I'm assuming that you have no other rules, so do: + + +$> iptables -F; iptables -t nat -F; iptables -t mangle -F + + If you get an error saying can't find iptables, go find it and install it. + If it says no such table 'nat', recompile the kernel with nat support. If + it says no such table as 'mangle', don't worry about it, it's not necessary + for MASQ'ing. If it says iptables is incompatible with your kernel, go get > 2.4 + and compile that with iptables support. + + Then if you have a static ip do (e.g. network card not using DHCP): + + +$> iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to 123.12.23.43 + + or for dynamic (e.g. a modem - you have to call a number first): + + +$> iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE + + Then finally to tell the kernel yes, you really do want to start forwarding + packets: (This only needs to be done once per reboot - but dosen't hurt to + do it lots) + + +$> echo 1 > /proc/sys/net/ipv4/ip_forward + + Once you have checked this all works (See under Post-install) only allow + masquerading from the internal network - you don't want to allow people on + the internet to use it after all :) + + + First, allow any existing connections, or anything related (e.g. ftp server + connecting back to you) + + +$> iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT + + If this gives an error, then you most likely don't have state tracking in + the kernel - go recompile. Then allow new connections only from our + intranet (local/internal network). Replace the ppp0 with eth0 or + whatever your external device is. (The ! means anything but) + + +$> iptables -A INPUT -m state --state NEW -i ! ppp0 -j ACCEPT + + And now deny everything else: + + +$> iptables -P INPUT DROP #only if the first two are succesful + + If either of the first two rules failed, then this last rule with prevent + the masquerading from working at all. To undo this rule do + "iptables -P INPUT ACCEPT". + + + + + + + Post-install Instructions + + And it should all work now. Don't forget to: + + + + + Setup all the clients on the internal network to point to the Linux + internal IP address as their gateway. + (In windows right-click network neighbourhood->properties->gateway + then change it to the Linux gateway internal ip.) + + + + + Setup all the clients to use your ISP's HTTP proxy if they have one, + use a transparent proxy (WARNING - I've heard reports of transparent + proxying to be very slow on very big networks), or run squid on your + new linux gateway. (This is optional, but preferrable for large networks) + + + + + Now you should start securing it! First turn off forwarding in general: + "iptables -P FORWARD DROP", and then learn how to use + iptables and /etc/hosts.allow and + /etc/hosts.deny to secure your system. WARNING + - Don't try this mentioned iptables rule until you have the masquerading + working. You have to explicitely allow every packet through that you want + if you are going to set the last rule to be DENY. + (Undo with "iptables -P FORWARD ACCEPT") + + + + + Allow through any services you do want the internet to see. + + + For an example, to allow access to your web server do: + + +$> iptables -A INPUT --protocol tcp --dport 80 -j ACCEPT +$> iptables -A INPUT --protocol tcp --dport 443 -j ACCEPT + + To allow ident (For connecting to irc etc) do + + +$> iptables -A INPUT --protocol tcp --dport 113 -j ACCEPT + + + + + To test it: + + + + + + Try connecting from a client to the web using an IP. Google's IP is + 216.239.33.100 (well that's one of them) and you should be able to get a + reply from that. e.g. "ping 216.239.33.100" + "lynx 216.239.33.100". + + + + + Try a full out connection by name. e.g. "ping google.com" + "lynx google.com" or from Internet Explorer / netscape. + + + + + + Where eth0 is the external Internet card, and 123.12.23.43 is the external + ip of that machine. + + + + + + + + FAQ's - Frequently Asked Compla^H^H^H^H^H^H Questions + + + + How do I list the rules I've got so far? + + - Try + +$> iptables -L +$> iptables -t nat -L + + + + + It don't work! It doesn't like iptables / NAT / SNAT / MASQ + + - Go get the latest kernel, and compile with iptables and full NAT support. + + + + + It don't work! The masquerading doesn't work at all! Die scum! + + - Try echo 1 > /proc/sys/net/ipv4/ip_forward + + + + + It don't work! I can't use the network at all and I hate you! + + - Try + +$> iptables -F +$> iptables -t nat -F +$> iptables -t mangle -F + + (all rules went bye-bye) then rerun the other iptables rules. + + + - Try iptables -P FORWARD ACCEPT + + + + + It still don't work! + + - Hmm, does "dmesg | tail" give any errors? + or "cat /var/log/messages | tail" ? Like I care tho... + + + + + I don't get, it just ain't working! + + - I dunno.. but you should be able to: + + 1) From the gateway machine, ping the outside + 2) From the gateway ping your internal machines + 3) From the internal machines ping the gateway + + And this is before you play with masq'ing + + + + + Where do I put this stuff? + + + - In the /etc/network/interfaces file, or + firewall.rc. If you put it in the interfaces file, then put + it as a pre-up to the external interface, and have + "iptables -t nat -F" as the post-down. + + + + + How do I get it to only bring the ppp up on demand? + + - Assuming your ISP gateway IP is say 23.43.12.43 for arguments sake, then + append a line like this: + + :23.43.12.43 + + to /etc/ppp/peers/provider at the end. + (this is for dynamic IP - static IP would be + my.external.ip.number:23.43.12.43 ) + + Then at the end of that file add on a newline: + + demand + + Pppd will remain in the background to redial the connection on demand + if it's dropped until you do an "ifdown ppp0" or + a "poff", unless you add + a "nopersist" option, in which case pppd will exit after the connection + is up. You can also add on a new line "idle 600" to disconnect after 10 + mins of idleness. + + + + + + The connection keeps dropping! + + - First, do you have demand dialing? Is it just doing what it is supposed + to? + Check /etc/ppp/peers/provider, and make sure your dial up works fine + before attempting masq'ing. + + - Secondly, if not, then perhaps, like me, something is going weird, and + you need to fall back to Linux 2.4.3 and see if that works instead.. dunno + why. + + + + + I hate doing this myself! I want a pre-made script and GUI and stuff. + + - Sure: + http://shorewall.sourceforge.net/ + + Eat your heart out! + + + + + Do I count Cable modems as static or dynamic IP's? + + - Good question.. might as well make it dynamic. + + + + + Do I count DHCP network cards as static or dynamic IP's? + + - They are dynamic. + + + + + How do I handle incomming services? + + - Try forwarding or redirecting the IP ports - again make + sure you firewall this if needed. + + + + + From the clients, I can ping the linux gateway's external IP + address, but can't access the internet. + + - Okay, try doing "rmmod iptable_filter" - more + info on this as I get it. + + - Make sure your not running routed or + gated - to check run + "ps aux | grep -e routed -e gated". + + - Look at http://ipmasq.cjb.net + + + + + How can I view the connections establish? Something like netstat.. + + - Try cat /proc/net/ip_conntrack + + + + + I need more squid info and routing and stuff! + + - Try the Advanced Routing HOWTO + http://www.linuxdoc.org/HOWTO/Adv-Routing-HOWTO.html + + + + This howto is crap! How do I yell at the guys who wrote this? + + - Go to #debian on irc.opensource.net and find and locate JohnFlux. + + + + + This howto is crap! How can I see better versions? + + - Try http://ipmasq.cjb.net + + - Consult the LDP Masq-HOWTO. + + + + + +
+ diff --git a/LDP/howto/docbook/Masquerading-Simple-HOWTO/network.png b/LDP/howto/docbook/Masquerading-Simple-HOWTO/network.png new file mode 100644 index 0000000000000000000000000000000000000000..e4199512ee978e072b4021d0b3f0d0321723e7a5 GIT binary patch literal 39788 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