Linux下iptables的NAT功能实现路由器

方法:
提示: 以下方法只适用于红帽企业版Linux 3 以上。


1、打开包转发功能:


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


2、修改/etc/sysctl.conf文件,让包转发功能在系统启动时自动生效:
# Controls IP packet forwarding


net.ipv4.ip_forward = 1


3、打开iptables的NAT功能:


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


说明:上面的语句中ppp0是连接外网或者连接Internet的网卡. 执行下面的命令,保存iptables的规则: service iptables save


4、查看路由表:


netstat -rn 或   route -n


5、查看iptables规则:


iptables -L


查看nat表

iptables -t nat -L


can't initialize iptables table `nat' Table does  exist 解决办法:

前提是保证iptables相关模块安装好

modprobe ip_tables
modprobe ip_conntrack
modprobe iptable_filter
modprobe ipt_state




etworking --->
Networking options --->
Network packet filtering framework (Netfilter) --->
Core Netfilter Configuration --->
Now just set the modules you need for your netfilter box. That's it, I hope now it works to you.






如果执行 iptables -L 出现以下信息,那么就需要重新配置和编译内核:
iptables v1.4.2: can't initialize iptables table `filter': Table does not exist (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.


配置选项:
Networking —->
  Networking options —->
  [*] Network packet filtering (replaces ipchains)  —>
    Core Netfilter Configuration  —>
      <*> Netfilter Xtables support (required for ip_tables)
    IP: Netfilter Configuration —>
      <*> Connection tracking (required for masq/NAT)
      <*> IP tables support (required for filtering/masq/NAT)
      <*>   IP range match support
      <*>   Packet filtering
      <*>     REJECT target support
      <*>   Full NAT


ip_forward
除此之外,需要在主机上打开 ip 转发以保持连接通道。
查看是否已打开 ip 转发(1 表示打开):
cat /proc/sys/net/ipv4/ip_forward
如果未打开,则用以下命令打开:
echo 1 > /proc/sys/net/ipv4/ip_forward
保存设置
以上 iptables 设置和 ip 转发设置在重启系统之后就会消失,因此如果有需要,请将设置保存。
保存 iptables 设置:
/etc/init.d/iptables save
设置系统启动时自动加载 iptables 设置(以 gentoo 为例):
rc-update add iptables default
保存 ip_forward 设置(在 /etc/sysctl.conf 中设置):
net.ipv4.ip_forward = 1
安全隐患
在打开了 ip_forward 后,一般要同时打开 rp_filter (Reverse Path filter),对数据包的源地址进行检查。
如果在没有打开这个设置,就很容易受到来自内部网的 IP 欺骗。
打开 rp_filter:
for f in /proc/sys/net/ipv4/conf/*/rp_filter ; do echo 1 > $f ; done
保存设置(在 /etc/sysctl.conf 中设置):
net.ipv4.conf.default.rp_filter = 1
net.ipv4.conf.all.rp_filter = 1

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值