想要使用 centos 6.4 制作具有两个网卡的软件路由器

想要使用 centos 6.4 制作具有两个网卡的软件路由器

我是 CentOS 新手。我有一个 CentOS 6.4 系统,有 2 个 NIC 卡。我想设置一个网关,这样我就可以通过第一个 nic 卡 (eth1) 从公共 IP 访问互联网,并通过第二个 nic 卡 (eth2) 转发网络,这样我的本地网络就可以访问它了。我在同一个系统中创建了一个 DNS 服务器。我的网关系统可以 ping 通 DNS 和 google,但我的客户端系统却不能。

我尝试设置 iptables 规则,它可以 ping 到本地网关,但无法从客户端系统 ping 到公共 DNS 和 www.google.com...当我 ping 到 google.com 时,说主机无法访问。

我该如何实现这一点,请帮帮我?

  • 公共 IP 为(eth1):xxxx
  • 我的本地网络是(eth2):192.168.xx

我使用这个来设置 iptables:

iptables --table nat --append POSTROUTING --out-interface eth1 -j MASQUERADE
iptables --append FORWARD --in-interface eth2 -j ACCEPT

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

路由表:

Kernel IP routing table
Destination          Gateway             Genmask           Flags     Metric      Ref    Use Iface
local ip             0.0.0.0             255.255.255.0       U        0          0        0 eth2
public ip            0.0.0.0             255.255.255.0       U        0          0        0 eth1 
0.0.0.0         my local gateway         0.0.0.0             UG       0          0        0 eth2

Iptables:

Chain PREROUTING (policy ACCEPT 9761 packets, 1239K bytes)
 pkts bytes target     prot opt in     out     source               destination

Chain POSTROUTING (policy ACCEPT 14666 packets, 1001K bytes)
 pkts bytes target     prot opt in     out     source               destination
  345 41722 MASQUERADE  all  --  *      Auto_eth1  0.0.0.0/0            0.0.0.0/0

Chain OUTPUT (policy ACCEPT 15011 packets, 1043K bytes)
 pkts bytes target     prot opt in     out     source               destination

请告诉我在配置方面我需要做哪些更改。

答案1

ip route del default
ip route add default via INTERNETGATEWAY dev eth2

你的路由有些问题。centos 的“NAT”框需要位于两个网络上:

192.168.5.x/24 (Private eth2)
192.168.6.x/24 (Public eth1)  -- hypothetically

你的路线应该是这样的:

ip route add route 192.168.5.0/24 dev eth2
ip route add route 192.168.6.0/24 dev eth1
ip route add default via 192.168.6.1 dev eth1

现在,您正在将互联网绑定的流量从您的私有 NIC 路由出去……

答案2

不要重新发明轮子。不要再尝试用手转动它,而是使用诸如普富思处理得很好。

是的,这是可能的,但是如果您不熟悉这一切的工作原理,那么花时间尝试手动构建它是不值得的。

答案3

要设置 PBR(策略基础路由),您可以使用以下脚本

#!/bin/sh

IF1='eth1'
IP1='xxx.xxx.xxx.xxx'
GW1='xxx.xxx.xxx.254'
P1_NET='xxx.xxx.xxx.xxx/30'

IF2='eth2'
IP2='yyy.yyy.yyy.yyy'
GW2='yyy.yyy.yyy.254'
P2_NET='yyy.yyy.yyy.yyy/30'

/sbin/ip route add $P1_NET dev $IF1 src $IP1 table ISP1
/sbin/ip route add default via $GW1 table ISP1

/sbin/ip route add $P2_NET dev $IF2 src $IP2 table ISP2
/sbin/ip route add default via $GW2 table ISP2

/sbin/ip rule add from $IP1 table ISP1
/sbin/ip rule add from $IP2 table ISP2

/sbin/ip route add default via $GW1
/sbin/ip route flush cache

笔记:运行脚本之前必须创建表 ISP1/ISP2

# echo "10 ISP1" >> /etc/iproute2/rt_tables
# echo "20 ISP2" >> /etc/iproute2/rt_tables

标记必要的数据包

# iptables -t mangle -I PREROUTING -s 192.168.1.1 -m conntrack --ctorigdst xxx.xxx.xxx.xxx -j MARK --set-mark 0x1

# iptables -t mangle -I PREROUTING -s 192.168.1.1 -m conntrack --ctorigdst yyy.yyy.yyy.yyy -j MARK --set-mark 0x2

为每个 ISP 设置自己的路由

# ip ru add fwmark 0x1 lookup ISP1 prio 1000
# ip ru add fwmark 0x2 lookup ISP2 prio 2000

xxx.xxx.xxx.xxx 和 yyy.yyy.yyy.yyy 您的公共 IP 地址在哪里

禁用反向路径过滤器

# echo 0 > /proc/sys/net/ipv4/conf/default/rp_filter

相关内容