동기 부여:
여러 가지 이유로 일반 무선 라우터 대신 Linux 서버를 사용하고 싶습니다.
- Linux에서 보다 완전한 서버를 설정하는 방법을 배우고 싶습니다.
- 모뎀, 라우터, 네트워크 스위치에 연결하고 싶지 않습니다.
- 라우터가 작동하지 않기 때문에 10일마다 라우터의 플러그를 뽑아야 하는 것에 지쳤습니다.
- 포트 포워딩이나 고정 IP 주소 지정(DHCP)과 같은 중요한 것이 빠졌다는 사실을 깨닫고 라우터를 구입하는 것에 지쳤습니다.
설정:
궁극적으로 연결은 모뎀으로 들어오고 를 통해 내 서버로 바로 연결되고 eth0
다른 eth1
모든 클라이언트 컴퓨터가 이더넷 케이블을 통해 연결되는 네트워크 스위치로 출력됩니다(당분간 무선은 잊어버리세요). 그러나 현재 저는 사무실 건물에 있고 모뎀으로 연결되고 라우터로 연결되고 네트워크 스위치로 연결되고 eth0
위에 지정된 대로 연결됩니다.
현재 튜토리얼:
몇 가지 튜토리얼을 살펴보았습니다(우분투 튜토리얼가장 좋은 것입니다) 그리고 여기에서 라우터 질문 중 일부를 살펴보았습니다(예:이 하나) 그러나 다음과 같은 몇 가지 주요 개념을 모두 간과하고 있습니다.
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 주소가 할당되지 않습니다.
편집하다:/etc/dhcp3/dhcpd.con
다음은 내가 주로 복사한 isc-dhcp-server 구성 파일입니다.이 장소.
# 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
질문:
이 설정에서 어떤 중요한 단계/구성 요소가 누락되어 있습니까?
답변1
나는 당신이 가지고 있는 몇 가지 누락된 것들로 인해 잭 더 리퍼처럼 가야 합니다:
클라이언트가 DHCP를 사용하여 IP를 얻으려면 DHCP 서버가 필요합니다.
iface eth0 inet dhcp
클라이언트에서 이는 DHCP 서버에서 IP를 가져옴을 나타냅니다. DHCP 서버를 설정하지 않은 경우 고정 IP를 사용하거나 DHCP 서버를 설치해야 합니다.
클라이언트에 구성된 DNS 서버가 부족합니다. DHCP 서버가 부족하거나 모든 네트워크에 로컬 DNS 서버를 사용하고 싶을 수도 있습니다.
iptables
규칙(의 출력 )을 제공하지 않았지만sudo iptables -L
매스커레이드 규칙이나 IP 전달을 활성화하지 않은 것으로 추측할 수 있습니다.설명한대로.의 IP 주소는
eth1
권장되지 않습니다. 끝나는 모든 IP는0
일반적으로 네트워크 자체이며대부분의 라우터/방화벽은 이것을 사용할 때 혼란을 겪습니다.. 그것을로 변경192.168.7.1
하면 대부분 괜찮을 것입니다.broadcast
인터페이스 의 값이 올바르지eth1
않습니다. 아무데도 패키지를 보내고 있지 않습니다. 올바른 값(인터페이스의 다른 값을 고려)은 입니다192.168.7.255
.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; }
다음 사항을 따르면 라우터가 작동할 가능성이 높습니다.
답변2
Braiam은 내 질문에 답변했지만 여기에 철저한 연습을 추가하는 것이 도움이 될 것이라고 생각했습니다. 제가 실수한 것이 있으면 업데이트해 주세요.
먼저 두 개의 이더넷 카드(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
gateway
, broadcast
및 을 찾으려면 network
다음을 따르세요.이 지침.
다음으로 클라이언트로 이동하여 /etc/network/interface
(다시,~ 아니다 /etc/networks
) 먼저 정적 IP용 파일을 만들어 적어도 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
.