Chinaunix首页 | 论坛 | 博客
  • 博客访问: 450262
  • 博文数量: 135
  • 博客积分: 4177
  • 博客等级: 上校
  • 技术积分: 1145
  • 用 户 组: 普通用户
  • 注册时间: 2005-12-13 17:16
文章分类

全部博文(135)

文章存档

2011年(5)

2010年(4)

2009年(26)

2008年(25)

2007年(29)

2006年(42)

2005年(4)

分类: LINUX

2005-12-15 09:43:47

linux共享上网

iptable and shell

Iptables -A PREROUTING -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 8080

#在crontab 方式下要注意的几个问题如下:

Q1:为何可以手工执行,加入crontab后却不能正确执行
A:1.如果crontab执行失败,会发送email给你,请在mail中查找出错原因
2.crontab中的PATH变量设置与交互式shell环境中不同,要执行的命令必须有正确路径
3.在crontab中%字符被认为是换行,所以你的命令中有%时,在crontab中要加\转义

Crontab -e

01-59/3 * * * * root /usr/sbin/adsl-start  > /dev/null 2>&1

加载ppp0自动拔号:(前五个单位为:分钟小时星期)

還記得 iptables 的行為習慣嗎﹕它會自上而下的對比規則﹐找到符合的就不再往下找了。根據這樣的特性﹐我們可以將 NAT 外部界面進入的某些連線﹐在那行 syn 過濾規則之前 ACCEPT 進來。不過﹐就要非常小心別漏了必要的限制元素﹐有可能的話﹐盡您想象把規則設得嚴密又嚴密吧。

1 网卡配置。

两块网卡,eth0为拨号网卡,IP192.168.1.1(其他的地址也可);eth1为内网网卡,IP192.168.0.1。掩码均为255.255.255.0 局域网网段为192.168.0.0

注意:此处两块网卡均不能设网关。

2 PPPoE软件的升级与安装

1 默认安装已安装上) 下载

2 安装rp-pppoe。以root身份执行

rpm -Uvh rp-pppoe-3.5-1.i386.rpm

3 修改/etc/ sysctl.conf

将其中的

net.ipv4.ip_forward = 0

改为

net.ipv4.ip_forward = 1

4 去除ipchains模块,只选择iptables方法如下:

1setup

2)选择system service

3)去除ipchains

4)选中iptables

5)重启机器

5 PPPoE客户端配置

rp-pppoe-3.5-1.i386.rpm安装完毕后,接下来就可进行PPPoE客户端配置了。过程如下。

#/usr/sbin/adsl-setup

>>> Enter your PPPoE user name: --此处输入拨号帐号的用户名

>>> Enter the Ethernet interface connected to the ADSL modem For Solaris, this is likely to be something like /dev/hme0. For Linux, it will be ethn, where n is a number. (default eth0): --eth0

>>> Enter the demand value (default no): --no

>>> Enter the DNS information here: --210.52.149.2(视当地运营商的DNS服务器IP而定)

>>> Please enter your PPPoE password: --输网通用户口令

>>> Choose a type of firewall (0-2): --0 (0代表无防火墙,防火墙就用IPTABLES去吧)

>>> Accept these settings and adjust configuration files (y/n)? --y

6 启动拨号连接

/usr/sbin/adsl-start

成功连接后,屏幕显示Connected

此时这台linux已可以上网浏览了。

7 IP伪装

为了使局域网中的其他机器能通过Linux服务器共享上网,至少须执行下面的命令:

iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE

完成后,在192.168.0.0网段(网关为192.168.0.1)的PC机就可透过Linux上网了!

8 开机自启动

为了使Linux服务器能够自动拨号,执行下面步骤。

1chkconfig --add adsl

2setup

3)选择system services

4)选中ADSL

5OK退出

6)打开/etc/rc.d/rc.local,在该文件的末尾添上下面语句

echo "[OK]"

echo "Drop ICMP form anywhere"

echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all

echo "[OK]"

iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE

说明:前面四句用于关闭ICMP,防止别人Ping

9 至此,一切OK,一个简单的拨号建成了。重启机器后,发现linuxinternet共享连接

echo 1 > /proc/sys/net/ipv4/ip_forward

       通知linux 启动IP转发!

iptables -A POSTROUTING -t nat -s 192.168.100.0/24 -o eth0 -j SNAT --to-source 61.156.35.114

#把来自192.168.100.0子网并通过eth0出去的访问请求做NAT,把数据包的源地址修改为61.156.35.114。

如果你的ISP没有分配给你固定的公网地址,那么这一行可以写成: 

iptables -A POSTROUTING -t nat -s 192.168.100.0/24 -o eth0 -j MASQUERADE

modem或isdn等拨号方式上网,假如是通过ppp0拨号上网,可以这样写: 

iptables -A POSTROUTING -t nat -s 192.168.100.0/24 -o ppp0 -j MASQUERADE

这里是针对一个子网(192.168.100.0/24)做NAT,也可以具体到某台主机:

iptables -A POSTROUTING -t nat -s 192.168.100.9 -o eth0 -j MASQUERADE

iptables a output –s 200.200.200.1 –j drop/accept/deny

iptable.sh

echo 1 > /proc/sys/net/ipv4/ip_forward
echo 0 > /proc/sys/net/ipv4/icmp_echo_ignore_all
modprobe ip_tables
modprobe iptable_nat
modprobe ip_conntrack
#localhost ftp
modprobe ip_conntrack_ftp
#nat ftp
modprobe ip_nat_ftp
/sbin/iptables -F -t filter
/sbin/iptables -F -t nat
#
#input to DROP
/sbin/iptables -P INPUT DROP
/sbin/iptables -P OUTPUT ACCEPT
/sbin/iptables -P FORWARD ACCEPT
#/sbin/iptables -I INPUT -i ppp0 -p TCP --syn -j DROP
#/sbin/iptables -I FORWARD -i ppp0 -p TCP ! --syn -j ACCETP
#
/sbin/iptables -t nat -P PREROUTING ACCEPT
/sbin/iptables -t nat -P POSTROUTING ACCEPT
/sbin/iptables -t nat -P OUTPUT ACCEPT
#
# ALLOW loopback NET and PRIVATE
/sbin/iptables -A INPUT -i lo -j ACCEPT
/sbin/iptables -A INPUT -i eth0 -j ACCEPT
#FORWARD
#/sbin/iptables -A FORWARD -p tcp --dport 80 -j ACCEPT
#/sbin/iptables -A FORWARD -P udp --dprot 53 -j ACCEPT
#/sbin/iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
# FTP
/sbin/iptables -A INPUT -p tcp --dport 21 -j ACCEPT
# KEEP CONNECTIONS
/sbin/iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
# NAT
/sbin/iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -j MASQUERADE
# DNAT
#/sbin/iptables -t nat -A PREROUTING -i ppp0 -p tcp --dport 80 -j DNAT --to 192.168.0.9:80  此脚本理论是可以的为什么在我这不行我也不知道耶!
/sbin/iptables -t nat -A PREROUTING -d  -p tcp --dport 80 -j DNAT --to 192.168.0.9:80
/sbin/iptables -t nat -A PREROUTING -d  -p tcp --dport 1080 -j DNAT --to 192.168.0.7:1080
/sbin/iptables -t nat -A PREROUTING -d  -p tcp --dport 888 -j DNAT --to 192.168.0.4:888

ipaddress.sh

#!/bin/bash
cd /etc/rc.d
P=`/etc/rc.d/ifconfig ppp0 | grep "inet addr" | awk '{print $2}'`
#echo $p
P=`echo $P | sed 's/addr://g'`
#echo $P
TXT=`sed '1,$s//sbin/iptables -t nat -A PREROUTING -d .* -p tcp --dport 80 -j DNAT --to 192.168.0.9:80//sbin/iptables -t nat -A PREROUTING -d '$P' -p tcp --dport 80 -j DNAT --to 192.168.0.9:80/g' iptable.sh`
echo "$TXT" > iptable.sh
TXT=`sed '1,$s//sbin/iptables -t nat -A PREROUTING -d .* -p tcp --dport 1080 -j DNAT --to 192.168.0.7:1080//sbin/iptables -t nat -A PREROUTING -d '$P' -p tcp --dport 1080 -j DNAT --to 192.168.0.7:1080/g' iptable.sh`
echo  "$TXT" > iptable.sh
TXT=`sed '1,$s//sbin/iptables -t nat -A PREROUTING -d .* -p tcp --dport 888 -j DNAT --to 192.168.0.4:888//sbin/iptables -t nat -A PREROUTING -d '$P' -p tcp --dport 888 -j DNAT --to 192.168.0.4:888/g' iptable.sh`
echo  "$TXT" > iptable.sh
TXT=`sed '1,$s//sbin/iptables -t nat -A PREROUTING -d .* -p tcp --dport 23 -j DNAT --to 192.168.0.15:23//sbin/iptables -t nat -A PREROUTING -d '$P' -p tcp --dport 23 -j DNAT --to 192.168.0.15:23/g' iptable.sh`
echo  "$TXT" > iptable.sh
TXT=`sed '1,$s//sbin/iptables -t nat -A PREROUTING -d .* -p tcp --dport 1503 -j DNAT --to 192.168.0.111:1503//sbin/iptables -t nat -A PREROUTING -d '$P' -p tcp --dport 1503 -j DNAT --to 192.168.0.111:1503/g' iptable.sh`
echo  "$TXT" > iptable.sh
TXT=`sed '1,$s//sbin/iptables -t nat -A PREROUTING -d .* -p tcp --dport 8080 -j DNAT --to 192.168.0.20:8080//sbin/iptables -t nat -A PREROUTING -d '$P' -p tcp --dport 8080 -j DNAT --to 192.168.0.20:8080/g' iptable.sh`
echo  "$TXT" > iptable.sh

阅读(1459) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~