由于公司不同网段的区分,导致互访很不方便。别的网段的用户要访问我们的服务器,通过端口映射是比较方便的方式。
PC A: eth0 10.10.1.11, eth1 192.168.0.11
PC B: eth1 192.168.0.20
要使访问A的10.10.1.11:8000端口能访问到B的8000端口,通过iptables就能简单实现。命令如下:
iptables -t nat -A PREROUTING -d 10.10.1.11 -p tcp --dport 8000 -j DNAT --to-destination 192.168.0.20:8000
iptables -t nat -A POSTROUTING -d 192.168.0.20 -p tcp --dport 8000 -j SNAT --to 192.168.0.11
iptables -A FORWARD -o eth1 -d 192.168.0.20 -p tcp --dport 8000 -j ACCEPT
iptables -A FORWARD -i eth1 -s 192.168.0.20 -p tcp --sport 8000 -j ACCEPT
其中前面两条是必须的,如果你的iptables还有其他规则,或者默认策略为drop,最好加上后面两条。
还有一个不得不改的地方是 /etc/sysctl.conf,将net.ipv4.ip_forward的值改为1。
为了使设置生效,可以使用 sysctl -p 命令刷新。有些教程说要重启系统才可以,其实就是没用这个命令。还有些教程说要修改 /proc/sys/net/ipv4/ip_forward,其实和sysctl -p的作用是一样的。
————————————华丽的分割线——————————————
除了用iptables外,还可以用软件rinetd。
rinetd的下载地址: http://www.boutell.com/rinetd/http/rinetd.tar.gz
下载之后解压:tar -zxvf rinetd.tar.gz,之后就是简单的make, make install。安装时会提示没有/usr/man/ 文件夹,手动创建一个再试即可。在centos5下编译会提示警告,可以无视。
编辑/etc/rinetd.conf,按如下格式添加
绑定地址 绑定端口 目的地址 目的端口
例如
10.10.1.11 8000 192.168.0.20 8000
如果要绑定主机上的所有IP,可以用0.0.0.0代替。
完成后启动rinetd。
rinetd -c /etc/rinetd.conf
关闭rinetd
pkill rinetd
Recent Comments