我是路由新手,但需要完成以下路由任务
我有 3 台机器,机器 A、B、C,每台机器上都有 CentOS7,selinux 已禁用,防火墙未安装
机器 A有 3 个网卡,
- 连接到互联网 IP 147.xx67/21(接口 eno16777736)
- 连接到 192.168.0.0/24 (IP 192.168.0.3) (接口 eno50332208)
- 连接到 10.0.0.0/24 (IP 10.0.0.3) (接口 eno33554984)
机器 B有 1 个网卡
- 已连接到 192.168.0.0/24(IP 192.168.0.20)
- 机器 C有 1 个网卡
- 连接到 10.0.0.0/24(IP 10.0.0.20)
我需要实现的是,使用 CentOS7,将机器 A 上的路由设置为
- 1- 与所有现有机器以及我可能连接的任何其他机器共享互联网。
- 2 – 设置 IP 转发以使所有机器都可以相互访问。
我确实尝试了以下操作:
在路由器机器上开启包裹转发:
echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf
并设置一些路由规则
#nmcli connection modify "eno33554984" +ipv4.routes "10.0.0.0/24 147.x.x.67"
#nmcli connection modify "eno50332208" +ipv4.routes "192.168.0.0/24 147.x.x.67"
#nmcli connection modify "eno33554984" +ipv4.routes "10.0.0.0/24 192.168.0.3"
#nmcli connection modify "eno50332208" +ipv4.routes "192.168.0.0/24 10.0.0.3"
nmcli connection reload
systemctl restart network
nmcli connection up eno33554984
nmcli connection up eno50332208
但它不起作用....
ip route
default via 147.x.x.1 dev eno16777736 proto static metric 100
10.0.0.0/24 dev eno33554984 proto kernel scope link src 10.0.0.3 metric 100
147.x.x.77 via 147.x.x.1 dev eno16777736 proto dhcp metric 100
147.x.x.0/21 dev eno16777736 proto kernel scope link src 147.x.x.67 metric 100
192.168.0.0/24 dev eno50332208 proto kernel scope link src 192.168.0.3 metric 100
看起来路由规则甚至没有加载?或者我遗漏了一些东西...在 /etc/sysconfig/network-scripts/ 中创建了两个路由接口。
路线-eno33554984
ADDRESS0=10.0.0.0
NETMASK0=255.255.255.0
GATEWAY0=147.x.x.67
ADDRESS1=10.0.0.0
NETMASK1=255.255.255.0
GATEWAY1=192.168.0.3
路线-eno50332208
ADDRESS0=192.168.0.0
NETMASK0=255.255.255.0
GATEWAY0=147.x.x.67
ADDRESS1=192.168.0.0
NETMASK1=255.255.255.0
GATEWAY1=10.0.0.3
ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eno16777736: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 00:0c:29:70:12:6f brd ff:ff:ff:ff:ff:ff
inet 147.x.x.67/21 brd 147.x.x.255 scope global dynamic eno16777736
valid_lft 2387sec preferred_lft 2387sec
inet6 fe80::20c:29ff:fe70:126f/64 scope link tentative dadfailed
valid_lft forever preferred_lft forever
3: eno33554984: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 00:0c:29:70:12:79 brd ff:ff:ff:ff:ff:ff
inet 10.0.0.3/24 brd 10.0.0.255 scope global eno33554984
valid_lft forever preferred_lft forever
inet6 fe80::20c:29ff:fe70:1279/64 scope link
valid_lft forever preferred_lft forever
4: eno50332208: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 00:0c:29:70:12:83 brd ff:ff:ff:ff:ff:ff
inet 192.168.0.3/24 brd 192.168.0.255 scope global eno50332208
valid_lft forever preferred_lft forever
inet6 fe80::20c:29ff:fe70:1283/64 scope link
valid_lft forever preferred_lft forever
从机器 A 路由
route
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
default comhub.home 0.0.0.0 UG 100 0 0 eno16777736
10.0.0.0 0.0.0.0 255.255.255.0 U 100 0 0 eno33554984
192.168.0.0 0.0.0.0 255.255.255.0 U 100 0 0 eno50332208
147.x.x.67 0.0.0.0 255.255.255.0 U 100 0 0 eno16777736
# sysctl -p
net.ipv4.ip_forward = 1
答案1
您不需要在连接到所有网络的服务器上设置任何路由。
您对 route-eno33554984 和 route-eno50332208 的接口配置无效。
正确的配置如下所示:
路线-eno33554984
ADDRESS0=10.0.0.1
NETMASK0=255.255.255.0
也就是说,您只需要为该接口设置子网中的 IP 地址和网络掩码。
您需要在服务器上设置 NAT 以便10.0.0.0/24
能够192.168.0.0/24
连接到互联网。
此外,您还需要在另外两台计算机上设置默认路由,使其指向它们所连接的子网中的路由器 IP 地址。
答案2
我想感谢 Tero Kilkanen 的帮助,他确实尽力帮助我,特别感谢 David
我遇到的一个非常重要的问题是 NetworkManager 存在问题,有时即使重新启动,网络设置也会保持不变,等等。有时即使重新启动后设置也保持不变,
任何改变之后
systemctl restart NetworkManager
systemctl restart network
我遇到的第二个问题是,我通过网络管理器一次添加 4-5 个 IP,纳米技术看来 CentOS7 或网络管理器无法一次性消化所有 IP。因此删除了所有 IP,每个接口只保留 1 个 IP,重新启动网络管理器删除了路由规则
rm -fr /etc/sysconfig/network-scripts/route*
重启网络
使用 iptables(而不是防火墙)设置 NAT,一切开始正常工作