Linuxサーバーをルーターとして設定する方法


34

動機:

いくつかの理由で、平均的なワイヤレスルーターの代わりにLinuxサーバーを使用したい

  1. Linuxでより完全なサーバーをセットアップする方法を学びたい
  2. モデムをルーターに接続したり、ネットワークスイッチに接続したりしたくない
  3. ハングするだけなので、10日ごとにルーターのプラグを抜くのにうんざりしていて
  4. ポート転送や静的IPアドレス指定(dhcp)などの重要なものが欠けていることに気づくためだけにルーターを購入することにうんざりしています

セットアップ:

最終的には、接続はモデムに来る、とストレート私のサーバーにeth0、その後、eth1他のすべてのクライアントコンピュータは、イーサネットケーブルを介してに接続するネットワークスイッチへの意志出力は(今のところ無線忘れます)。しかし、現在、私はオフィスビルにいて、モデムに接続し、ルーターに接続し、ネットワークスイッチに接続してから、eth0上記のように接続します。

現在のチュートリアル:

私はいくつかのチュートリアルを見ました(Ubuntuのチュートリアルが最適です)、ここでルーターの質問のいくつか(つまり、これ)を見てきましたが、それらはすべて、次のようないくつかの重要な概念について説明しています。

  • eth1の関係はeth0?で使用するよう/etc/network/interfacesに指示eth1する必要eth0がありますかnetwork(通常、実際の物理ルーターアドレス)。
  • eth1入ってくるインターネットをeth0ネットワークスイッチでそれを望む人に渡すように指示するために何かする必要がありますか?

現在のアプローチ:

これ/etc/network/interfacesがサーバー上の私のファイルです:

iface lo inet loopback

auto eth0
   iface eth0 inet static
   address 192.168.1.70
   netmask 255.255.255.0
   broadcast 192.168.1.255
   network 192.168.1.0
   gateway 192.168.1.1
   dns-nameservers 8.8.8.8

auto eth1
   # iface eth1 inet dhcp
   iface eth1 inet static
   address 192.168.7.0
   netmask 255.255.255.0
   broadcast 192.168.1.255
   network 192.168.1.0

そしてifconfig、両方のNICが正常に機能していることを教えてくれます。

eth0      Link encap:Ethernet  HWaddr 20:cf:30:55:a0:5f  
          inet addr:192.168.1.70  Bcast:192.168.1.255  Mask:255.255.255.0
          inet6 addr: fe80::22cf:30ff:fe55:a05f/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:11297 errors:0 dropped:0 overruns:0 frame:0
          TX packets:16639 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:948633 (948.6 KB)  TX bytes:1274685 (1.2 MB)

eth1      Link encap:Ethernet  HWaddr 00:11:95:f7:f4:6d  
          inet addr:192.168.7.0  Bcast:192.168.1.255  Mask:255.255.255.0
          inet6 addr: fe80::211:95ff:fef7:f46d/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:243 errors:0 dropped:0 overruns:0 frame:0
          TX packets:3231 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:29934 (29.9 KB)  TX bytes:213055 (213.0 KB)
          Interrupt:21 

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:5348 errors:0 dropped:0 overruns:0 frame:0
          TX packets:5348 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:470737 (470.7 KB)  TX bytes:470737 (470.7 KB)

wlan0     Link encap:Ethernet  HWaddr bc:f6:85:f8:70:5c  
          UP BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

そしてroute -n returns、これがサーバー上のものです:

Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.1.1     0.0.0.0         UG    0      0        0 eth0
169.254.0.0     0.0.0.0         255.255.0.0     U     1000   0        0 eth1
192.168.1.0     0.0.0.0         255.255.255.0   U     0      0        0 eth0
192.168.7.0     0.0.0.0         255.255.255.0   U     0      0        0 eth1

次に、クライアント上で私が持っています

auto lo
iface lo inet loopback
iface eth0 inet dhcp

ただし、IPアドレスは割り当てられていません。

編集:これはisc-dhcp-server構成ファイルです。このファイルは/etc/dhcp3/dhcpd.con主にこのサイトからコピーした場所にあります。

# Sample /etc/dhcpd.conf                                                                                                                                                  
# (add your comments here) 
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.254;
option domain-name-servers 192.168.1.1, 192.168.1.2;
option domain-name "mydomain.example";

subnet 192.168.7.0 netmask 255.255.255.0 {
   range 192.168.7.10 192.168.7.25;
}  

編集:の出力sudo iptables -L

Chain INPUT (policy ACCEPT)
target     prot opt source               destination         

Chain FORWARD (policy DROP)
target     prot opt source               destination         
ACCEPT     all  --  anywhere             anywhere             ctstate RELATED,ESTABLISHED
ACCEPT     all  --  anywhere             anywhere            
LOG        all  --  anywhere             anywhere             LOG level warning

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         

質問:

このセットアップで欠けている重要なステップ/コンポーネントは何ですか?


どのdhcpdを使用していますか?
TML

@TML私の理解からdhcp(したがってdhcpd)は必須ではなく、(すべてのホストで/etc/network/interfacesファイルを変更するのではなく)サーバーですべての静的IP を集中化することのみを意図しています。そのため、これが機能するまでは実験しないことにしました。しかし私はしているんだけでなく、設置dhcp3-serverisc-dhcp-server
PUK

クライアントがdhcpからIPアドレスを取得するようにするには、dhcpdを実行する必要があります。これらのdhcpdのいずれかが現在アクティブになっている構成を投稿する必要があります。問題の原因は、クライアントがIPを取得していないためです。個人的には、dnsmasqをお勧めします。これは、内部DNS解決を行うための便利な機能も備えているためです。
TML

@TML私は、追加dhcpd.confのファイルを、私が使用していることが示されたisc-dhcp-server
PUK

1
さらに2つのポイントが必要です。5.デバイスを部分的にしか制御できないことにうんざりしています。6.潜在的にバックドアを持つ可能性のあるルーターを持つことにうんざりしています。ポイント#6は、現在どのルーターでも使用できる本物です。一部のルーターには、ハードコードされたパスワードやポートを密かにリッスンするなどの追加機能が搭載されています。
Ignas2526

回答:


16

あなたが持っているいくつかの不足しているもののために、私はリッパーのジャックのように行かなければなりません:

  1. クライアントがDHCPを使用してIPを取得する場合、DHCPサーバーが必要です。

    iface eth0 inet dhcp

    クライアントでは、これは、DHCPサーバーからIPを取得することを示します。DHCPサーバーをセットアップしなかった場合は、固定IPを使用するか、DHCPサーバーをインストールする必要があります。

  2. クライアントにDNSサーバーが構成されていません。DHCPサーバーがないため、またはすべてのネットワークにローカルDNSサーバーを使用したい場合があります。

  3. あなたはiptablesルール(の出力sudo iptables -L)を提供しませんでしたが、説明したように、マスカレードルールもIP転送も有効にしていないと推測できます。

  4. のIPアドレスeth1は推奨されません。0通常、終了するIPはネットワーク自体であり、ほとんどのルーター/ファイアウォールはこれらが使用されると混乱するだけです。に変更すると192.168.7.1、ほとんど問題ありません。

  5. あなたbroadcastの値eth1のインターフェイスが正しくありません。どこにもパッケージを送信していません。正しい値(インターフェイスの他の値を考慮する)は192.168.7.255です。

  6. DHCPサーバーのオプションは悪質です。ルーターへのARPパッケージは到達しません。これはあなたが持っているべきものです:

    default-lease-time 600;
    max-lease-time 7200;
    option subnet-mask 255.255.255.0;
    option broadcast-address 192.168.7.255;
    option routers 192.168.7.1; ## This should be the same value of the step 4
    option domain-name-servers 8.8.8.8;
    
    subnet 192.168.7.0 netmask 255.255.255.0 {
        range 192.168.7.10 192.168.7.25;
    }

これらに従うと、ほとんどの場合ルーターが機能します。


sudo iptables -L質問の出力を追加しました
-puk

うるさいことにするが、この答えを読んで、他のいずれかの利益のために、あなたはこれらのdhcpd.conf値のいくつかが何であるかを説明することができません:ライン4 192.168.7.255とライン8subnet 192.168.7.0
PUK

コメントで説明するには複雑すぎますが、うまく言えば.255、通常使用されるブロードキャストアドレスです。その方向に送信されるパッケージは、同じサブネット内のすべてのシステムに送信されます。1.2.3.255に送信されたパッケージはすべて、IPが1.2.3で始まるすべてのシステムによって受信されることを意味します。これは、すべてのパッケージが同じサブネットにあるためですen.wikipedia.org/wiki/Subnetwork#IPv4_subnetting
Braiam

動作していません。問題がdhcpネットワークにあるのか、それともネットワークにあるのかを見たい。テストのために静的IPアドレスを実行します。クライアントの静的IPの場合、eth1ゲートウェイとしてIPアドレスを使用しますか?
プーク

1
おそらく、ルーターのeth1のブロードキャストとネットワークが192.168.7.xではなく192.168.1.xを指しているためです。ルーターのeth1からクライアントのeth0と通信できない場合、DHCPACKはクライアントに到達しません(したがって、IPを取得できません)。
TML

9

Braiamが私の質問に答えましたが、ここで徹底的なウォークスルーを行うと役立つと思いました。間違いを犯した場合はこれを更新してください。

最初に2枚のイーサネットカード(NIC)があることを確認し、/etc/network/interfacesファイル自体を更新します(これをファイルと間違えないでください/etc/networks)。

iface lo inet loopback                                                                                                                    

auto eth0
   iface eth0 inet static
   address 192.168.1.70
   netmask 255.255.255.0
   broadcast 192.168.1.255
   network 192.168.1.0
   gateway 192.168.1.1
   dns-nameservers 8.8.8.8

auto eth1
   iface eth1 inet static
   address 192.168.7.1
   netmask 255.255.255.0
   broadcast 192.168.7.255
   network 192.168.1.0

見つけ、あなたのためにgatewaybroadcastそしてnetwork、以下の手順に

次に、クライアントに移動し、静的IPのファイル/etc/network/interface(もう一度ではなく /etc/networks)を編集して、少なくともNICカードが機能していることを確認します。

iface eth0 inet static
address 192.168.7.75
netmask 255.255.255.0
network 192.168.7.0
broadcast 192.168.7.255
gateway 192.168.7.1

上記の値と一致するように値を変更します。それは、素晴らしい作品場合は、指示に従ってくださいここが、それらに従って正確にいくつかありますように、dhcpファイルがそうフォルダを間違えていない/etc/dhcp/etc/dhcp3のように。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.