시스템 경로 표를 어떻게 관리 합 니까?

5362 단어 shelllinux
거 지 는 백만 장 자 를 질투 하 지 는 않 지만 수입 이 더 많은 거 지 를 질투 할 것 이다.로 소
1. 경로 원리
그림 에서 알 수 있 듯 이 시스템 경로 표 의 세 가지 실체 가 있다.
  • 루트 수호 프로그램 routed
  • 경로 명령 route
  • netstat 명령
  • 그 중에서 netstat 명령 은 경로 정보 만 읽 을 수 있 고 시스템 경로 표를 직접 조작 할 수 없다.
    루트 테이블 정 보 를 추가 삭제 하면 루트 수호 프로그램 routed 과 루트 명령 route 에서 만 제공 할 수 있 습 니 다.둘 의 차 이 는:
    데 몬 routed 은 동적 경로 관리 기능 을 제공 합 니 다. 즉, 실제 네트워크 상황 을 통 해 동적 경로 정 보 를 조작 합 니 다.
    경로 명령 route 은 시스템 관리자 가 정적 경로 정 보 를 수정 할 수 있 는 인 터 페 이 스 를 제공 합 니 다.
    다음은 linux 시스템 과 mac 시스템 에 대해 명령 비교 소 개 를 한다.
    2 루트 테이블 조회
    2.1 Linux
    # netstat 
    $: netstat -rn
    Kernel IP routing table
    Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
    0.0.0.0         172.16.15.253   0.0.0.0         UG        0 0          0 eth0
    169.254.0.0     0.0.0.0         255.255.0.0     U         0 0          0 eth0
    ...
    
    # ip route
    $: ip route list
    default via 172.16.15.253 dev eth0
    169.254.0.0/16 dev eth0 scope link metric 1002
    172.16.0.0/20 dev eth0 proto kernel scope link src 172.16.5.102
    ...
    ip 명령 은 매우 강력 한 네트워크 관리 명령 으로 경로 표 만 조작 하 는 것 이 아니다.더 많은 기능 은 man ip 또는 tldr ip 을 참조 하 시기 바 랍 니 다.
    2.2 MacOS
    $: netstat -rn

    이 시스템 은 ip 명령 을 지원 하지 않 습 니 다.
    3 루트 테이블 조작
    3.1 Linux
    # 格式: ip route { add | del | change | append | replace } ROUTE
    # add
    $: ip route add 192.168.0.0/24 via 172.16.15.253 dev eth0
    
    # del
    $: ip route del 192.168.0.0/24 via 172.16.15.253 dev eth0
    
    # get 指定目的IP的路由信息
    $: ip route get 172.18.0.10
    172.18.0.10 dev br-6e39d6696d98 src 172.18.0.1
        cache

    3.2 MacOS ip 명령 을 지원 하지 않 고 독립 적 인 route 명령 을 제공 합 니 다.더 많은 도움말 참조 man route
    
    # add
    $: sudo route add -net 192.168.0.0/24 192.168.255.9
    
    # del
    $: sudo route del -net 192.168.0.0/24 192.168.255.9
    
    # get 指定目的IP的路由信息, 支持域名查询
    $: route get www.google.com
       route to: 74.125.24.105
    destination: default
           mask: 128.0.0.0
        gateway: 192.168.255.5
      interface: utun1
          flags: 
     recvpipe  sendpipe  ssthresh  rtt,msec    rttvar  hopcount      mtu     expire
           0         0         0         0         0         0      1500         0

    4 루트 규칙
    우리 가 흔히 말 하 는 시스템 경로 표 외 에 시스템 에는 경로 규칙 route rule 의 개념 도 있다.
    IP Rule 서브 명령 은 주로 ip 을 관리 하 는 경로 규칙 을 제어 하 는 데 사 용 됩 니 다.이른바 rule 은 더욱 table 처럼 보인다.
    이 규칙 은 주로 루트 테이블 [IP Route Table] 을 관리 하고 제어 합 니 다.즉, 경로 규칙 이란 경로 표 이다.
    기본 적 인 상황 에서 시스템 에 어떤 경로 가 있 는 지 먼저 살 펴 보 자.
    $: ip rule [list]
    0:    from all lookup local
    32766:    from all lookup main
    32767:    from all lookup default

    기본 적 인 상황 에서 시스템 은 local, main, default 세 장의 경로 표를 제공 했다.
    이 세 장의 경로 표 의 구체 적 인 경로 정 보 를 살 펴 보 자.local 경로 표 는 주로 로 컬 을 기록 했다.
    $: ip route list table local
    broadcast 127.0.0.0 dev lo proto kernel scope link src 127.0.0.1
    local 127.0.0.0/8 dev lo proto kernel scope host src 127.0.0.1
    local 127.0.0.1 dev lo proto kernel scope host src 127.0.0.1
    broadcast 127.255.255.255 dev lo proto kernel scope link src 127.0.0.1
    broadcast 172.17.0.0 dev docker0 proto kernel scope link src 172.17.0.1
    ...
    main 경로 표,
    $: ip route list table main
    default via 192.168.0.253 dev eth0
    169.254.0.0/16 dev eth0 scope link metric 1002
    172.17.0.0/16 dev docker0 proto kernel scope link src 172.17.0.1
    ...
    ip route 의 출력 과 비교 해 보면 ip route 명령 은 기본 출력 main 경로 표 정보 임 을 알 수 있다.
    다시 default 루트 표를 보면 기본적으로 이 시 계 는 비어 있 음 을 알 수 있다.ip rule 하위 명령 은 루트 표를 관리 하 는 규칙 으로서 어떤 구체 적 인 의미 가 있 습 니까?구체 적 인 경로 표 의 경로 정 보 는 어떻게 경로 가 있 습 니까?
    다시 한 번 ip rule list 의 수출 을 보면 이 세 장 路由表 을 발견 하기 어렵 지 않 고 路由规则 이 라 고도 부른다.다만 路由规则路由表 의 기초 위 에서 优先级 의 개념 을 증가 시 켰 다.优先级 구체 적 路由表 조 의 현재 숫자 에서 나 올 수 있다.숫자 가 낮 을 수록 우선 순위 가 높다.
    4.1 사용자 정의 경로 규칙
    이 규칙 에 따라 우 리 는 자신의 路由规则 를 증가 시 킬 수 있다. 각자 의 요구 에 따라 우선 순위 와 구체 적 인 경로 표를 설정 할 수 있다.
    실제 작업 ip rule 을 할 때 우 리 는 패 킷 을 태그 처리 하고 해당 하 는 표 시 를 통 해 해당 하 는 경로 표를 설정 합 니 다.
    4.1.1 패 킷 에 표 시 를 한다.
    예 를 들 어 저 희 는 기계 에 더 블 네트워크 카드, eth 0 과 eth 1 이 있 습 니 다. 저 희 는 모든 서비스 프로 세 스 가 보 낸 패 킷 에 대해 구체 적 인 서비스 와 일치 하 는 포트 번 호 를 표시 합 니 다. 다음 과 같은 예 입 니 다.
    모든 원본 포트 가 8080 인 데이터 출력 패 키 지 를 태그 처리 하고 태그 2 를 설정 합 니 다.
    $: iptables -t mangle -A OUTPUT -p tcp --sport 8080 -j MARK --set-mark 2

    4.1.2 표 시 된 패 킷 에 대한 사용자 정의 경로
    패 킷 에 표시 가 있 는 이상 태그 에 따라 경로 규칙 을 설정 할 수 있 습 니 다.위의 예 와 같이 우 리 는 먼저 경로 규칙 을 추가 합 니 다.
    # 标记2的数据包按照2号路由规则表路由
    $: ip rule add priority 10000 fwmark 2 table 2

    2 번 루트 규칙 표 에 구체 적 인 루트 정 보 를 추가 합 니 다.
    //取 eth1 的默认网关地址
    $: gateway=`netstat -rn | grep eth1 | grep H | awk '{print $2}'`
    
    // 添加一条默认路由,使用该规则的包,默认通过网卡eth1进行路由
    $: ip route add default via $gateway dev eth1 table 2

    4.2 경로 규칙 정보 보기
    $: ip route list table 2

    더 많은 글 은 개인 BLOG: GitDiG. com 을 직접 방문 할 수 있 습 니 다.

    좋은 웹페이지 즐겨찾기