1. 环境:
(1) 一台 Linux 系统主机,此机器有双网卡:eth0 连接外网,eth1 连接内网。假定通向外网的 eth0 的连接信息如下(可以是静态 IP,也可以是 DHCP):
2. Linux系统启用端口转发(NAT)功能:
(a) 一般的方法:执行命令
(c) 检查端口转发是否正确启用,可以执行命令
3. 配置 NAT 规则:
(1) 配置 NAT 服务器,执行命令
关于 SNAT 和 DNAT 的更多内容,可以参考 http://server.zdnet.com.cn/server/2008/0317/772069.shtml
(2) 允许端口转发,执行命令
4. 对于SuSE(如果作为 NAT 服务器的 Linux 主机是 SuSE 系统的话),还需要配置防火墙:
进入 yast -> Security and Users -> Firewall -> Interfaces 中连接外网的 eth0 网卡配置为 External Zone,而连接内网的 eth1 网卡配置为 Internal Zone。然后在 Masquerading 中启用 Masquerade Networks。
5. 一些需要用到的命令:
(1) 查看当前网络连接的 IP 地址以及 MAC 地址等等,但是无法显示网关以及 DNS 服务器地址:
(1) 一台 Linux 系统主机,此机器有双网卡:eth0 连接外网,eth1 连接内网。假定通向外网的 eth0 的连接信息如下(可以是静态 IP,也可以是 DHCP):
inet addr: 192.168.3.100
Gateway: 192.168.3.1
Nameserver: 192.168.3.2
通向内网的 eth1 的信息如下(此处只需要设定 IP 地址):
inet addr: 192.168.0.100(2) 一台内网客户端主机,Windows/Linux/MacOSX 都可以。以下示例中,假定其网络连接信息为:
inet addr: 192.168.0.11
Gateway: 192.168.0.100
Nameserver: 192.168.3.2 (此处必须是作为 NAT 服务器的 Linux 主机的外网 DNS 服务器地址)(3) 一台交换机或者路由器,用于构建内网。
2. Linux系统启用端口转发(NAT)功能:
(a) 一般的方法:执行命令
echo 1 > /proc/sys/net/ipv4/ip_forward(b) 对于 SuSE,可以使用 yast 来设定,方法是启用
yast
->
Network Devices
->
Network Settings
->
Routing
->
Enable IPv4 Forwarding
(c) 检查端口转发是否正确启用,可以执行命令
cat /proc/sys/net/ipv4/ip_forward如果返回结果为 1,则代表端口转发已经启用;若返回 0,则表示端口转发未启用。
3. 配置 NAT 规则:
(1) 配置 NAT 服务器,执行命令
iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o eth0 -j MASQUERADE其中
192.168.0.0 表示 192.168.0.x 的整个网络。
MASQUERADE 则表示从 NAT 服务器的网卡上自动获取当前的 IP 地址来做端口转发。否则,基于目标的网络地址转换模式(即 DNAT)需要在每次 NAT 服务器连接外网的 IP 地址变更的时候重新配置端口转发。也可以使用源地址目标转换模式(即 SNAT),命令是
iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o eth0 -j SNAT --to-source 192.168.3.100显然这种方式也会依赖命令中指定的通向外网的 IP 地址,所以仍然不够灵活。推荐使用第一种方式。
关于 SNAT 和 DNAT 的更多内容,可以参考 http://server.zdnet.com.cn/server/2008/0317/772069.shtml
(2) 允许端口转发,执行命令
iptables -A FORWARD -i eth1 -j ACCEPT此命令将允许经过 eth1 网卡(连接内网)的所有数据包通向外网的转发。
4. 对于SuSE(如果作为 NAT 服务器的 Linux 主机是 SuSE 系统的话),还需要配置防火墙:
进入 yast -> Security and Users -> Firewall -> Interfaces 中连接外网的 eth0 网卡配置为 External Zone,而连接内网的 eth1 网卡配置为 Internal Zone。然后在 Masquerading 中启用 Masquerade Networks。
5. 一些需要用到的命令:
(1) 查看当前网络连接的 IP 地址以及 MAC 地址等等,但是无法显示网关以及 DNS 服务器地址:
ifconfig(2) 查看当前网络连接的 DNS 服务器地址:
cat /etc/resolv.conf(3) 查看当前网络连接的网关:
route或者
netstat -nr
1929

被折叠的 条评论
为什么被折叠?



