LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
12
返回列表 发新帖
楼主: PSniper

iptables怎么配置?

[复制链接]
发表于 2004-12-25 11:17:45 | 显示全部楼层
客户端设置isp提供的dns;网关设置为linux主机内网网卡ip,你的应该是192.168.0.2。
既然已经能ping通,证明nat已没问题。
发表于 2004-12-25 11:39:44 | 显示全部楼层
如果你是用adsl上网,动态ip的话
iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
学要在打开ip转发功能!
echo 1 >/proc/sys/net/ipv4/ip_forward

楼主:那么长的代码,你看得明白吗?如果你问的一个问题要花半小时才能听明白,那么有多少人会回答呢?
最好,你看一看关于iptables的贴和教程!这样你才会明一些!

如果你现在急着要用的话,找个高手帮你搞定,再来慢慢研究吧

最好一贴一问!
发表于 2004-12-25 13:51:32 | 显示全部楼层
我想,单网卡也是可以的。主要是你的接线问题吧。因为有eth0和ppp0这两个设备。动态ip用
MASQUERADE就行了。。。。
发表于 2004-12-25 17:53:57 | 显示全部楼层
一、这是个“单臂路由”的问题,google上搜一下吧
二、再买个网卡做个nat算了,简单方便
发表于 2004-12-25 20:37:20 | 显示全部楼层

一点经验:ADSL 共享上网

ADSL 共享上网

1. Windows XP/2000 拨号,而 Linux 来共享:对于 RedHat 系统,可以运行一个叫 neat 的程序,在其中可以设置 DNS 服务器和网关为 Windows 主机。另外,可以在 /etc/resolv.conf 中设置 nameserver 为 Windows 主机的 IP,运行如下命令来设置网关:

# /sbin/route add -net default gw 192.168.0.X dev ethY

注意:不要使用-host。

可以使用``$ netstat -rn''、``$/sbin/route -n''检察路由信息。其中``-n''进行名子解析。

2. Linux 进行 ADSL 拨号:

(1) 所用软件:rp-pppoe,运行 /usr/sbin/adsl-setup 来设置。另外,可以在 neat 中通过添加一个 ppp0 设备,其使用的物理设备为 ethX,并设置为“自动从提供者处获得DNS信息”,在“高级”中“将这个连接定为默认路由”。注意不要设置 eth0 的默认网关一项。

另外,neat 中有一个“自动从提供者处获得 DNS 信息”,有什么作用呢?如果设置了这一行,则每一次拨号的时候都会覆盖原来在 /etc/resolv.conf 中的记录,使得内部网络的域名信息不能正确解析。──如果没有设置这一选项,则在拨号的时候如果没有开启 DNS(named) 服务,就无法正确解析域名!

(2) 可以在 /etc/sysconfig/network* 中设置所有这些内容:在 /etc/sysconfig/network 中可设置主机名和默认网关; 在 /etc/sysconfig/network-scripts/ifcfg-eth0,ifcfg-ppp0 中设置有关这两个设备的信息;在 /etc/sysconfig/networking/device/201.route,eth0.route 中设置路由信息,这里用 ADSL 拨号,所以都可以置空,而其中的 ifcfg-eth0 和 ifcfg-201 的内容实际上就是 network-scripts 中那两个文件的内容。另外就是 /etc/sysconfig/networking/ifcfg-lo 这个回环接口,其他文件都是副本。

那么,如何在配置文件中设置“将这个连接定为默认路由”呢?可以编辑 /etc/sysconfig/network-scripts/ifcfg-ppp0,修改其中的 ``DEFROUTE=yes'' 一行就可以了。

(3) 运行 /usr/sbin/adsl-start 和 /usr/sbin/adsl-stop 分别启动和停止。

(4) 如果路由信息有问题,先正确设置,然后要重启网卡:

# /sbin/ifconfig eth0 down
# /sbin/ifconfig eth0 up

3. 设置 Linux 的 IP 地址欺诈和转发规则,以供共享:

(1) 首先在 /usr/sbin/adsl-setup 时要设置了允许转发。

(2) 转发语句(iptables):

[/sbin/]modprobe ipt_MASQUERADE
[/sbin/]modprobe iptable_nat
$[/sbin/]iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
echo 1 > /proc/sys/net/ipv4/ip_forward

(3) 请参考一个实际可用的防火墙脚本:[/usr/local/sbin/]ipt_start.sh

#!/bin/bash

IPT=/sbin/iptables

$IPT -F
# Refresh the regular of the chains.
/sbin/modprobe ipt_MASQUERADE
/sbin/modprobe iptable_nat
# Or: /sbin/insmod ...
/sbin/modprobe ip_conntrack
/sbin/modprobe ip_conntrack_ftp
/sbin/modprobe ip_nat_ftp
# Enables IP forward.
$IPT -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
echo 1 > /proc/sys/net/ipv4/ip_forward
$IPT -N block
$IPT -A block -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPT -A block -m state --state NEW -i lo -j ACCEPT
$IPT -A block -m state --state NEW -i ! ppp0 -j ACCEPT
$IPT -A block -p udp --dport 21 -j ACCEPT  # FTP
$IPT -A block -p udp --dport 20 -j ACCEPT
$IPT -A block -j DROP
# Create chain that block new connections, ecxept if coming from inside network.
$IPT -A INPUT -j block
$IPT -A FORWARD -j block
# Jump to that chain from INPUT & FORWARD chains.
# $IPT -t nat -A POSTROUTING -o ppp0 -j MASQUERADE


为在启动时自动运行该防火墙规则,可以在 /etc/rc.d/rc.local 中加入如下语句:

[/usr/local/sbin/]ipt_start.sh

(4) 如果没有正确配制该拨号服务器的 DNS 服务器,使其能够进行域名的迭代或递归查询,则客户机的 DNS 服务器应指向 ISP 的域名服务器,我这里是:61.134.1.4和61.134.1.9,这个值可以在拨号之后从 /etc/resolv.conf 中察看──当设置了“自动从ISP处获得DNS”时。
发表于 2004-12-25 20:41:02 | 显示全部楼层
这个单网卡就可以,我以前在学校宿舍就是这么用的。
 楼主| 发表于 2004-12-29 10:19:53 | 显示全部楼层
不好意思,原来之前是我只配了iptables,没有配置squid。昨天把squid装上,在默认的配置文件里把以下几句话的注释去掉:
httpd_accel_host virtual
httpd_accel_port 80
httpd_accel_with_proxy on
httpd_accel_user_host_header on
其他的没有改动(很长,也没有去细看:P),客户端再连接的时候出现Access Denied的错误,同时显示了我的linux主机和squid版本号。就是说,代理已经生效了。听说squid还有认证的说,是不是我还要设置些什么?
 楼主| 发表于 2004-12-30 13:06:07 | 显示全部楼层
终于可以了,把squid配置里那几个acl控制设成允许,客户端就可以上网了。感谢各位!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表