web-dev-qa-db-ja.com

マルチイーサネットポートサーバーでのネットワークの構成

すべてに賛成:Sunfire X4100にUbuntu Server 12.04.3をインストールしました。

このサーバーには4つのイーサネットポートがあり、私のターゲットは以下を使用することです。

  • eth0でモデムなどに接続します
  • eth1、eth2、eth3は、内部LANを作成し、リソース、ストレージ、プリンターなどを共有するために、いくつかのスイッチとアクセスポイントを接続します。

このターゲットを実現するには、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 

以下の地図の写真:

Network Picture

2
user234441

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サーバーが同じマシンで実行されている場合は、それに応じて構成する必要があります。テストのために、すべてのサブネット上の1つのホストに静的IPアドレスを与えることができます(たとえば、192.168.2.11に接続された1つのホストに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を有効にする

(最初に1つのサブネットで試してください。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のクライアントはインターネット上のIPアドレスにpingできるようになりますが、サーバーの次のリブートまでしかできません。動作する場合は、それに応じてeth2およびeth3を続行します。

永続的にするには、netfilterルールの現在の(動作中の)構成を保存する必要があります

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

次に、/etc/rc.localに次のエントリを作成して、再起動するたびに同じ設定を再読み込みします。 exit 0afterの新しいエントリであることを確認してください

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アドレスに到達できるはずです。名前解決は(おそらく)まだ利用できません。

0
guntbert

ホストからのパッケージがWANに到達できるように、サーバーでIP転送を有効にする必要があります。

Sudo sysctl net/ipv4/ip_forward=1

これを試してから、ホストから外部IPまたはURLをpingしてみてください。

0