在多以太网端口服务器上配置网络

在多以太网端口服务器上配置网络

大家好:我刚刚在 Sunfire X4100 上安装了 Ubuntu Server 12.04.3

该服务器有 4 个以太网端口,我的目标是使用:

  • eth0 连接调制解调器并连接到互联网
  • eth1、eth2、eth3 连接一些交换机和接入点以创建内部局域网、共享资源、存储、打印机等。

为了实现这个目标,我安装了一个 dhcp 服务器 [apt-get install isc-dhcp-server] 并使用以下配置:

/etc/default/isc-dhcp-server
 INTERFACES="eth1 eth2 eth3"

/etc/network/interfaces
auto lo
  iface lo inet loopback

auto eth0
    iface eth0 inet static
    address 192.168.1.5
    netmask 255.255.255.0
    network 192.168.1.0
    gateway 192.168.1.1
    dns-nameservers 8.8.8.8 8.8.4.4

auto eth1
    iface eth1 inet static
    address 192.168.1.5
    netmaks 255.255.255.0
    network 192.168.1.0

auto eth2
    iface eth2 inet static
    address 192.168.1.5
    netmaks 255.255.255.0
    network 192.168.1.0

auto eth3
    iface eth3 inet static
    address 192.168.1.5
    netmaks 255.255.255.0
    network 192.168.1.0

我的 DHCP 服务器配置

/etc/dhcp/dhcpd.conf
default-lease-time 600;
max-lease-time 7200;
option subnet-mask 255.255.255.0;
option broadcast-address 192.168.1.255;
option routers 192.168.1.1;
option netbios-name-servers 192.168.1.1;
# Use Google public DNS
option domain-name-servers 8.8.8.8, 8.8.4.4;
option domain-name "mydomain.it";
# Define address range
subnet 192.168.2.0 netmask 255.255.255.0 {
   range 192.168.2.15 192.168.2.25;
}

结果是:

  • 服务器具有所需的 IP 地址并能够上网
  • 客户端计算机从 DHCP 接收 IP 地址,但无法通过互联网和/或 ping 服务器或调制解调器

以下是服务器上的 ip 广告结果:

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
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:14:4f:20:20:9c brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.5/24 brd 192.168.1.255 scope global eth0
    inet6 fe80::214:4fff:fe20:209c/64 scope link 
       valid_lft forever preferred_lft forever
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:14:4f:20:20:9d brd ff:ff:ff:ff:ff:ff
    inet 192.168.2.5/32 scope global eth1
    inet6 fe80::214:4fff:fe20:209d/64 scope link 
       valid_lft forever preferred_lft forever
4: eth2: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast state DOWN qlen 1000
    link/ether 00:14:4f:20:20:a2 brd ff:ff:ff:ff:ff:ff
    inet 192.168.3.5/32 scope global eth2
5: eth3: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast state DOWN qlen 1000
    link/ether 00:14:4f:20:20:a3 brd ff:ff:ff:ff:ff:ff
    inet 192.168.4.5/32 scope global eth3
6: virbr0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN 
    link/ether 06:0d:62:1a:3c:c5 brd ff:ff:ff:ff:ff:ff
    inet 192.168.122.1/24 brd 192.168.122.255 scope global virbr0

以下是服务器上的 ip r:

 default via 192.168.1.1 dev eth0  metric 100 
169.254.0.0/16 dev eth3  scope link  metric 1000 
192.168.1.0/24 dev eth0  proto kernel  scope link  src 192.168.1.2 
192.168.122.0/24 dev virbr0  proto kernel  scope link  src 192.168.122.1 

下面是一张地图:

网络图片

答案1

1)配置网络

除了 DHCP 部分(以及建议的转发功能)之外,您还需要正确配置您的接口。

在大多数情况下,每个接口都在其自己的 IP 网络中(我给出了示例地址,您必须对其进行调整)。

保持eth0原样。

auto eth1
  iface eth1 inet static
  address 192.168.2.5
  netmask 255.255.255.0
  network 192.168.2.0

auto eth2
  iface eth2 inet static
  address 192.168.3.5
  netmask 255.255.255.0
  network 192.168.3.0

auto eth3
  iface eth3 inet static
  address 192.168.4.5
  netmask 255.255.255.0
  network 192.168.4.0

如果 DHCP 服务器在同一台机器上运行,则必须对其进行相应配置。仅出于测试目的,您可以为每个子网上的一台主机提供一个静态 IP 地址(例如,用于192.168.2.11连接到的一台主机eth1

正确配置 IP 网络和 IP 地址后,你需要使用以下命令启用 IP 转发

sudo sh -c "echo 1 > /proc/sys/net/ipv4/ip_forward"

(仅测试一次是否成功)

并通过编辑/etc/sysctl.conf和“激活”该行

net.ipv4.ip_forward=1

通过删除#开头的。

完成后(每个客户端都应该能够 ping 通服务器的相应接口)

2)激活 NAT

(首先尝试一个子网,我给出的示例是eth1您必须调整其他子网的地址)

sudo iptables -A FORWARD -o eth0 -i eth1 -s 192.168.2.0/24 -m conntrack --ctstate NEW -j ACCEPT
sudo iptables -A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
sudo iptables -t nat -F POSTROUTING
sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

现在子网 1 上的客户端应该能够 ping 通互联网上的 IP 地址 - 但只能在下次重新启动服务器之前。如果一切正常,请继续执行相应eth2操作eth3

为了使其永久生效,您需要保存 netfilter 规则的当前(工作)配置

sudo iptables-save | sudo tee /etc/iptables-NAT.sav

然后创建以下条目,/etc/rc.local以便在每次重新启动时重新加载相同的配置。exit 0确保您的新条目

iptables-restore < /etc/iptables-NAT.sav

sudo这里不需要)

3)DHCP

DHCP 配置错误。您必须为每个接口创建不同的子网option routers您必须为每个子网设置一个适当的“网关”(使用)。

# for eth1 with 192.168.2.5 as local address
subnet 192.168.2.0 netmask 255.255.255.0 {
range 192.168.2.15 192.168.2.25;
option routers 192.168.2.5;
} 
# for eth2 with 192.168.3.5 as local address
subnet 192.168.3.0 netmask 255.255.255.0 {
range 192.168.3.15 192.168.3.25;
option routers 192.168.3.5;
} 
# for eth3 with 192.168.4.5 as local address
subnet 192.168.4.0 netmask 255.255.255.0 {
range 192.168.4.15 192.168.4.25;
option routers 192.168.4.5;
} 

现在所有客户端都应该能够访问您的网络之外的 IP 地址,名称解析(可能)尚不可用。

答案2

您需要在服务器上启用 IP 转发,以便来自主机的包可以到达 WAN:

sudo sysctl net/ipv4/ip_forward=1

尝试这个,然后尝试从主机 ping 外部 IP 或 URL。

相关内容