사이트 내 전체검색
[linux] ADSL 외장형 설치 및 IP공유(masq/iptables)
로빈아빠
https://cmd.kr/server/258 URL이 복사되었습니다.

본문

ADSL 외장형 설치 및 IP공유(masq/iptables)

##### 설치환경 #####

ADSL : 하나로 ADSL Light 외장형(HD3100)
Server : Wow Linux 7.1 paran (kernel 2.4.x)
Client : Window 2000 professional
LANcard : 10/100M realtek (all)

##### 하나로 ADSL 잡기 #####

1. 랜카드를 꼽는다. 부팅한다.
부팅시 혹은 ifconfig 해보면 eth0 인터페이스가 잡혀있음을 확인할수 있다.

2. eth0에 ip를 부여한다.
netcfg로 192.168.0.1(ip), 255.255.255.0(netmask), allboot(yes), proto
(none)한다.

3. adsl-setup
알아서 설정해준다. DNS 확실하게 쳐넣고, firewall은 0(none)으로 하자.

4. adsl-start
ping empas.com 해보자. 핑되면 인터넷 다 된다 이제.

##### IP 공유하기 -Masquerade using iptables #####

1. (iptables이고 뭐고간에 우선 공유컴끼리 핑이 먹는 환경을 만들어야한
다.)
서버컴에 랜카드 하나더 꼽고 인식시킨다.
아까와 마찬가지로 잘 올라왔는지 확인한다.

2. netcfg해서 eth1을 eth0과 다똑같이하고 ip만 192.168.1.1 해준다.

3. 클라이언트컴(windog)에서 TCP/IP 셋업한다.
192.168.1.101(ip), 255.255.255.0(netmask), 192.168.1.1(gateway).
DNS는 서버컴의 DNS와 같이 해준다.

4. 크로스케이블로 클라이언트와 서버컴의 eth1을 연결한다.
서버->클라이언트 : ping 192.168.1.101
클라이언트->서버 : ping 192.168.1.1
양쪽다 잘 가나 확인한다.
자 이제 본격적인 공유 설정을 시작할 시간이다.

5. iptables 관련 설정을 시작한다.
/etc/rc.d/rc.local 파일을 열어 다음을 추가한다.
(이제 추가하는 내용은 masq 관련 설정과 adsl을 구동하는 스크립트다.)

----------------------------- 요기서부터 ------------------------ # # pppo/eth1을 각각 EXTIF/INTIF 변수로 선언 # EXTIF="ppp0" INTIF="eth1" echo "---> External Ethernet Interface : $EXTIF" echo "---> Internal Ethernet Interface : $INTIF" # # iptables + ftp 사용을 위한 모듈 등록 # echo "---> iptables module up <---" /sbin/depmod -a /sbin/insmod ip_tables /sbin/insmod ip_conntrack /sbin/insmod ip_conntrack_ftp /sbin/insmod ip_nat_ftp /sbin/insmod iptable_nat # # ip_forward 를 위한 커널매개변수 수정 # echo "1" > /proc/sys/net/ipv4/ip_forward # # Dynamic IP 사용을 위한 커널매개변수 수정 # echo "1" > /proc/sys/net/ipv4/ip_dynaddr # # IP forwarding / Masquerading 설정 # echo "---> Setting up IP forwarding/masquerading <---" # # 1. 기존 rule을 지우고, 새로운 rule을 적용하기위한 정책설정 # iptables -P INPUT ACCEPT iptables -F INPUT iptables -P OUTPUT ACCEPT iptables -F OUTPUT iptables -P FORWARD DROP iptables -F FORWARD iptables -t nat -F echo "---> step 1 complete" # # 2. iptables rule 설정 # iptables -A FORWARD -i $EXTIF -o $INTIF -m state --state ESTABLISHED,RELATED -j ACCEPT iptables -A FORWARD -i $INTIF -o $EXTIF -j ACCEPT iptables -A FORWARD -j LOG echo "---> step 2 complete" # # 3. ip masquerade 설정 # iptables -t nat -A POSTROUTING -o $EXTIF -s 192.168.1.0/24 -j MASQUERADE echo "---> step 3 complete" # # start ADSL # echo "---> Starting ADSL now!! <---" adsl-start ------------------------------ 요기까지 -------------------------
6. 재부팅하면 이제 자동으로 공유+ADSL이 올라온다.
클라이언트컴과 서버컴에서 ping empas.com 해보자.
양쪽다 잘 동작하면 이제 당신은 해방이다. (야허 -_-/)

##### 클라이언트컴 2대 이상 공유하기 #####

위와 마찬가지로 해주고 eth2의 ip는 192.168.2.1로 해준다.
참고로 필자의 경우 192.168.1.2 이렇게 해주니 또다시 핑이 안먹었었다.
그리고 iptable 관련설정에서 eth1(external)에 해주었던것과 마찬가지로
eth2에 대한 설정을 추가해준다.

##### 주의사항 #####

-> ping test할때 error message

이따금 "Request timed out" 혹은 "Destination host unreachable"이란
메시지가 뜰때가 있다. 필자가 서버컴(리눅)의 IP를 다음과같이 설정했을때
다.
eth0 : 192.168.0.1(external)
eth1 : 192.168.0.2(internal)
다음과같이 바꿔주었다.
eth0 : 192.168.0.1(external)
eth1 : 192.168.1.1(internal)
핑이 해결되었다. 어디서 주워들은얘긴데 <B><U>DHCP</U></B>를 쓸 경우에는
192.168.0.x 요 아이피는 언넘이 지정해서 써야한다나.. 하여튼 그런 이유로
내부아이피로는 사용치 않을것을 권한다.
(참고로 랜카드가 서로 달라서 ex) 10M LAN <-> 10/100M LAN
이런일이 있을수 있다고하나, 이또한 95% 이상의 경우 믿기어려운 일이다 -
_-;
요새 거의 10/100M LAN이다)

-> 크로스케이블 확인방법

서로 핑이 안되다보면 괜히 애꿎은 케이블을 의심하게되곤 한다. (-_-;)
거의 95% 이상의 경우에 케이블이 문제인 경우는 없었다 사실.
매장에 가서 살때 테스트를 해보고 사자.
필자의 경우 보니까 테스트기에 연결하고 작동하는걸 보여주던데
선 양쪽의 기계가 불이 반대방향으로 들어오는걸 확인할수 있었다.
ex) 기계1:램프 1->2->3->4 / 기계2:램프 4->3->2->1

-> iptables 실행시 "Device is busy..."

masquerading은 여러가지 방법으로 가능하다.
그중 iptables/ipchains/ipfwadm 등이 유명한데 각각
커널버전 2.4.x/2.2.x/2.0.x 에서 권장하는 방식이라고 한다.
고로 필자의 경우 iptables만 사용할것이므로 다른 모듈을 분리수거해줘야
했다.
default로 깔고나면 대개의 경우 iptables와 ipchains가 모두 올라와있다.
콘솔에서 setup을 치고 "System Services" 항목에서 ipchains를 찾아
uncheck해주자.
"Firewall configuration"에서도 방화벽 사용 안함에 체크해주자.

-> 외부로 ping이 안될때 (혹은 인터넷연결이 안될때)

십중팔구 DNS셋팅이 잘못돼있어서다.
필자의 경우 하나로 ADSL DNS는 210.220.163.82/210.94.6.67 이었다.
하나로측에 문의할때마다 다른 대답을 받았으나 이게 최종적으로 확실하다.
(-_-;)
DNS는 사용중인 모뎀이 ADSL인가 케이블인가에 따라서도 다른 모양이다 아
마.

-> eth[n] 이더넷카드를 인식못할때

이건 드물게 일어나는 현상이라던데
필자의 경우 첨부터 랜카드세장을 꼽았을때 다 인식을 못했다.
참고로 세개 모두 PCI방식 리알텍 카드였다. 당근 자동인식 해줘야한다.
그럴땐 한개씩 뺐다꼽았다를 반복하면서 수차례 리부팅해주니까 결국 다 인
식했다.
ISA방식은 좀 까다롭다고 한다.
일단 부팅시 CMOS셋업에서 PNP기능을 꺼준다음에 IRQ를 강제로 인식시켜줘
야 한다.
..고 들었다. (-_-;)

##### 후기 #####

리눅스에서 인터넷 구동/공유 작업은 참으로 기나긴 싸움이었다 -_-;
필요한 거의 모든 경우의 수를 동원하며 작업해보았고
그 결실이 보름만(?)에 이렇게 나타났다.
위에 정리한 내용의 20배정도의 삽질이 필요했다.
도중에 설치만 십수차례 반복했고, 엄한 크로스케이블도 세개나 구입했으며,
리눅스서적만 10만원 이상을 구입했고, 리눅서들이 자주 방문하는 사이트
열군데정도는 이제 웹서핑이 하루일과가 됐다.
반복된 삽질속에서 조금이나마 리눅스에 대해 알게되었고,
관련한 다른 내용도 간접적으로 공부할수 있었다. 한마디로 보람이 있었다.
나는 쉽게 질문글을 올리지 않았다.
사이트의 필요한 모든 자료를 뽑아서 보았고,
질문란과 팁란에서 떠오르는 모든 검색어로 검색된 글을 최소한 2000년도 1

글까지 죄다 읽었다.
질문이라고 올린건 불과 삽질 2주가 지난 어제 처음으로 질문글 세개를 올렸
고,
질문을 할때는 나름대로 정성을 다했다.
결국 답을 찾아낸것도 오늘 방문한 서점에서 몰래훔쳐본 책에서
뜻하지않은 오류를 발견하게 되었다.
원래 바쁜 현대인인지라 일단 내문제가 해결되면 땡~ 이란 사고방식으로 살
았지만
이런 기나긴 삽질을 하고나서 보니 한국땅 어디에선가 나와같이
삽을하고있을 어느 불쌍한 한 폐인의 그림자가 내눈에 스쳤다. (-_-;;)
누군가 이글을 통해 정말 작은 도움이라도 얻을수있기를 바랄뿐이다.


ps. 최재훈님의 글입니다.

댓글목록

등록된 댓글이 없습니다.

1,139 (14/23P)

Search

Copyright © Cmd 명령어 3.15.145.50