iptables 这个指令, 如同以下用 man 查询所见, 它用来过滤封包和做NAT Network Address Translation(网路位址转译), 这个指令的应用很多, 可以做到很多网路上的应用.
iptables - administration tool for IPv4 packet filtering and NAT
应用1:让区域网路内的电脑以一个真实IP来共享频宽(实作NAT)
架构图:
所需设备: 一台 Linux server , 2张网路卡
网卡1 : eth0 , 使用真实IP , 网卡2 : eth1 , 使用 192.168.1.254
设定: 在 /etc/rc.d/rc.local 写入以下几行
echo "1" > /proc/sys/net/ipv4/ip_forwardmodprobe ip_tablesmodprobe ip_nat_ftpmodprobe ip_conntrackmodprobe ip_conntrack_ftpiptables -t nat -A POSTROUTING -o eth0 -s 192.168.1.0/24 -j MASQUERADE
应用2:让区域网路内的电脑以一个ADSL来共享频宽(实作NAT)
这个例子和上个例子很像, 只是某一个设定要做修改
架构图:
所需设备: 一台 Linux server , 2张网路卡
网卡1 : eth0 , 使用真实IP , 网卡2 : eth1 , 使用 192.168.1.254
设定: 在 /etc/rc.d/rc.local 写入以下几行
echo "1" > /proc/sys/net/ipv4/ip_forwardmodprobe ip_tablesmodprobe ip_nat_ftpmodprobe ip_conntrackmodprobe ip_conntrack_ftpiptables -t nat -A POSTROUTING -o ppp0 -s 192.168.1.0/24 -j MASQUERADE
应用3:让外界的电脑可以存取区域网路内的某部server(实作转址,转port)
此种做法有保护内部 server 的效果
架构图:
所需设备: 一台 Linux server , 2张网路卡
网卡1 : eth0 , 使用真实IP , 网卡2 : eth1 , 使用 192.168.1.254
设定: 在 /etc/rc.d/rc.local 写入以下几行
echo "1" > /proc/sys/net/ipv4/ip_forwardmodprobe ip_tablesmodprobe ip_nat_ftpmodprobe ip_conntrackmodprobe ip_conntrack_ftpiptables -t nat -A POSTROUTING -o eth0 -s 192.168.1.0/24 -j MASQUERADE
iptables -t nat -A PREROUTING -i eth0 -p tcp -d 真实IP --dport 80 -j DNAT --to-destination 192.168.1.13:80