Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1347736
  • 博文数量: 244
  • 博客积分: 10311
  • 博客等级: 上将
  • 技术积分: 3341
  • 用 户 组: 普通用户
  • 注册时间: 2008-10-14 21:50
文章分类

全部博文(244)

文章存档

2013年(6)

2012年(5)

2011年(16)

2010年(11)

2009年(172)

2008年(34)

分类: LINUX

2009-03-16 11:27:13


主机 IP:192.168.1.100
目标机 IP:192.168.2.101
要求将到主机 192.168.1.100:11101 的请求映射到内部网目标机的 sshd 服务端口上,即:192.168.2.101:22。

配置内核(以 2.6.18 为例)

如果执行 iptable -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

以上配置只为端口映射准备,如果需要其它功能,请根据需要增加相关的配置。

编译安装内核步骤略过。

iptabes
iptables 规则如下:
iptables -t nat -A PREROUTING -p tcp –dport 11101 -d 192.168.1.100 -j DNAT –to-destination 192.168.2.101:22
查看 iptables 规则定义:

# iptables -t nat -L
Chain PREROUTING (policy ACCEPT)
target     prot opt source               destination        
DNAT       tcp  –  anywhere             192.168.1.100       tcp dpt:11101 to:192.168.2.101:22
Chain POSTROUTING (policy ACCEPT)
target     prot opt source               destination        

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

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

测试
ssh -p 11101

看看是不是能够连接到 192.168.2.101 主机上了?

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