듀얼 네트워크 연결


9

Ubuntu 10.10 상자에 USB 셀룰러 모뎀과 홈 LAN 연결이 있습니다.

둘 다 독립적으로 작동합니다.

둘 다 동시에 연결하는 방법을 알고 싶습니다. 인터넷에 연결할 장치를 사용하는 응용 프로그램을 지정할 수 있습니다.

누구든지 이것을하는 방법을 알고 있습니까?

답변:


11

어떤 패킷이 어디로 갈지 결정하려는 방법에 따라 몇 가지 가능성이 있습니다. 그들 대부분은 리눅스에서 TCP / IP 네트워킹이 어떻게 작동하는지 이해해야합니다. 복잡한 작업을 수행하기 위해 알아야 할 주요 도구는 iptables(Ubuntu : iptables iptables 설치 ) 및 iproute2 ( ip명령) (Ubuntu : iproute iproute 설치 , iproute-doc iproute-doc 설치 )입니다.

대상 IP 주소로 완전히 식별 할 수 있으면 간단합니다. 원하는대로 IP 주소를 라우팅하십시오. 예를 들어 다음 명령은 1.2.3의 모든 패킷을 발생시킵니다. x 와 1.2.4.2는 통과 ppp0하고 다른 패킷은 통과 eth0합니다.

route add -net 1.2.3.4/24 ppp0
route add -host 1.2.4.2 ppp0
route add -net 0.0.0.0/0 eth0

보다 복잡한 요구 사항을 위해서는 iptablesand 를 사용해야합니다 ip route. 예를 들어, 다음 명령은 1로 표시된 모든 패킷이 통과 eth0하고 2로 표시된 모든 패킷이 통과하도록 특수 라우팅 테이블을 설정합니다 ppp0( localhost루프백 인터페이스 에 고정 된 패킷 제외 ).

ip rule add fwmark 1 table 1
ip route add 127.0.0.0/0 table 1 dev lo
ip route add 0.0.0.0/0 table 1 dev eth0
ip rule add fwmark 2 table 2
ip route add 127.0.0.0/8 table 2 dev lo
ip route add 0.0.0.0/0 table 2 dev ppp0

이제 iptables발신 패킷을 "혼합"하여 사용할 경로를 결정하는 마크를 추가 할 수 있습니다. 예를 들어,를 통해 모든 발신 SMTP 트래픽 (포트 25)을 보내는 방법 eth0proxy를 통해 사용자로 실행되는 응용 프로그램에서 발생한 모든 트래픽 을 보내는 방법은 다음 과 같습니다 ppp0.

iptables -t mangle -A OUTPUT -p tcp --dport 25 -j MARK --set-mark 1
iptables -t mangle -A OUTPUT -m owner --uid-owner proxy -j MARK --set-mark 2

인터넷에 연결된 2 개의 네트워크 인터페이스를 참조하십시오 . 도메인 이름에 따라 사용할 수있는 하나를 선택 하고 다른 네트워크 인터페이스에 바인드 소프트웨어를 .


두 인터페이스가 모두 연결될 때 이러한 명령이 실행되도록 정렬해야합니다. /etc/network/if-up.d/0justin-routes원하는 명령을 실행 하는 스크립트를 작성하는 것이 좋습니다 . 이 스크립트는 네트워크 인터페이스가 나타날 때마다 실행됩니다. 이름이로 시작하면 0해당 프로세스의 초기 단계에서 경로가 설정 될 것으로 예상되는 응용 프로그램 별 설정 전에 실행됩니다. /etc/network/if-down.d/인터페이스 중 하나가 다운 될 때 작업을 수행하려는 경우에도 대칭 이 있습니다. (관련된 모든 경로는 자동으로 지워 지므로 다른 인터페이스로 되돌아 가기를 원할 때 일부 패킷이 꼬일 수 있습니다.)

ifup 스크립트는에 설명되어 있습니다 interfaces(5) man page. 알아야 할 주요 사항은 가져 오거나 내린 인터페이스의 이름이 환경 변수에 있다는 것 IFACE입니다. 다른 인터페이스가 이미 사용 중인지 확인할 수 있습니다 if ifconfig | sed 's/ .*//' | grep -Fqx 'eth0'; then ….


@Justin : 이것은 내가 경험 한 것들이 아니기 때문에 작동하는 것, 작동하지 않은 것, 이해하지 못하는 것 등에 대한 피드백을 보내주십시오.
Gilles 'SO-Stop

1
두 가지 추가 사항이 있습니다. 첫째, eth0의 소스 주소로 ppp0에서 트래픽을 보냅니다. 다음을 사용하여이를 변경할 수 있습니다. iptables -t nat -A POSTROUTING -o tun0 -j SNAT --to-source ppp_ip여기서 ppp_ip해당 어댑터의 IP 주소입니다. 둘째, 당신은 엄격한 해제해야합니다 rp_filter에서 /proc/sys/net/ipv4/config/ppp0/rp_filter. 이완 모드 (2)로 설정하면 작동합니다.
Karalga
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.