找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
广告投放联系QQ68610888
查看: 4469|回复: 14

mt7620a lan wan错乱问题求助!(附尝试修复历程)

[复制链接]
1 币恩山币 回复本帖可获得 1 币恩山币奖励! 每人限 1 次
Q:刷入openwrt固件后,发现wan口变成了lan口,而第四个lan口变成了wan口,经过百度和爬贴后没有解决,希望得到大家指导!!!
我的尝试历程:
参照以上链接,并参考
/home/ihid/chaos_calmer/target/linux/ramips/base-files/etc/board.d/02_network中的ramips_setup_interfaces()定义函数如下:

mt7620a_mt7530)
        ucidef_set_interfaces_lan_wan "eth0.1" "eth0.2"
        ucidef_add_switch "switch1" "1" "1"
        ucidef_add_switch_vlan "switch1" "1" "0 1 2 3 6t"
        ucidef_add_switch_vlan "switch1" "2" "4 6t"
        ;;
可知:0--3对应LAN口, 4是WAN口, 6是CPU系统
对/home/ihid/chaos_calmer/package/base-files/files/etc/config/network文件修改如下

config interface 'loopback'                    
        option ifname 'lo'               
        option proto 'static'                  
        option ipaddr '127.0.0.1'              
        option netmask '255.0.0.0'   
​
config globals 'globals'                       
        option ula_prefix auto
​
config interface lan
    option ifname   eth0.1
    option type     bridge
    option proto    static
    option ipaddr   192.168.1.1
    option netmask  255.255.255.0
    option ip6assign 60
​
config interface 'wan'                    
        option ifname 'eth0.2'            
        option proto 'dhcp'
​
config interface 'wan6'                        
        option ifname '@wan'              
        option proto 'dhcpv6'         
​
config switch
    option name 'mt7620x'
    option reset '1'
    option enable_vlan '1'
​
config switch_vlan
    option device 'mt7620x'
    option vlan '1'
    option ports '0 1 2 3 6t'
​
config switch_vlan
    option device 'mt762x'
    option vlan '2'
    option ports '4 6t'
​
但是发现并未生效,陷入僵局

回帖奖励 +1 币恩山币

在wrt交换机界面直接换一下就好了啊
回复

使用道具 举报

 楼主| | 显示全部楼层
長安 发表于 2018-6-2 17:20
在wrt交换机界面直接换一下就好了啊

没有交换机界面,请问如何调出呢,或者我要在编译时选择什么东西吗

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
回复

使用道具 举报



去下载交换机插件,或者换个固件吧


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
回复

使用道具 举报

 楼主| | 显示全部楼层
長安 发表于 2018-6-2 18:20
去下载交换机插件,或者换个固件吧

这个固件是我自己根据需求编译修改的,您能否告知如何添加交换机呢,感激不尽!
回复

使用道具 举报

回帖奖励 +1 币恩山币

参照 rt-n14u 的配置文件修改就好,我现在自用的是斐讯FIR302M,你可以搜搜我自编译的固件分享帖子,另外我多说一句,不熟习就多潜水思考,别瞎 又鸟 巴 乱改一通,
回复

使用道具 举报

 楼主| | 显示全部楼层
hello_limin 发表于 2018-6-2 19:42
参照 rt-n14u 的配置文件修改就好,我现在自用的是斐讯FIR302M,你可以搜搜我自编译的固件分享帖子,另外我 ...

好的,谢谢您
回复

使用道具 举报

修改后如下,

  1. mt7620a_mt7530)
  2.                 ucidef_set_interfaces_lan_wan "eth0.1" "eth0.2"
  3.                 ucidef_add_switch "switch0" "1" "1"
  4.                 ucidef_add_switch_vlan "switch0" "1" "1 2 3 4 6t"
  5.                 ucidef_add_switch_vlan "switch0" "2" "0 6t"
  6.                 ;;
复制代码
回复

使用道具 举报

本帖最后由 hello_limin 于 2018-6-2 19:55 编辑

/etc/config/network 文件,
  1. config switch
  2.         option name 'switch0'
  3.         option reset '1'
  4.         option enable_vlan '1'

  5. config switch_vlan
  6.         option device 'switch0'
  7.         option vlan '1'
  8.         option ports '1 2 3 4 6t'

  9. config switch_vlan
  10.         option device 'switch0'
  11.         option vlan '2'
  12.         option ports '0 6t'
复制代码



回复

使用道具 举报

 楼主| | 显示全部楼层
hello_limin 发表于 2018-6-2 19:53
/etc/config/network 文件,

按照您的两条代码修改,重新编译以后,依然未能解决lan wan错乱的问题呢
回复

使用道具 举报

回帖奖励 +1 币恩山币

ihid 发表于 2018-6-2 18:16
没有交换机界面,请问如何调出呢,或者我要在编译时选择什么东西吗

https://www.petermstewart.net/en ... linksys-wrt1900acs/

这个贴子里提到,交换机界面可以通过编辑/etc/config/network文件,增加如下内容,然后重启路由,交换机(switch)界面就会在luci中出现:

config switch
        option name 'switch0'
        option reset '1'
        option enable_vlan '1'

config switch_vlan
        option device 'switch0'
        option vlan '1'
        option ports '0 1 2 3 6'

config switch_vlan
        option device 'switch0'
        option vlan '2'
        option ports '4 5'
回复

使用道具 举报

 楼主| | 显示全部楼层
skywalkerl 发表于 2018-6-3 10:43
https://www.petermstewart.net/enabling-switch-configuration-in-openwrt-luci-on-linksys-wrt1900acs/ ...

感谢您的回复
回复

使用道具 举报

 楼主| | 显示全部楼层
ihid 发表于 2018-6-2 22:47
按照您的两条代码修改,重新编译以后,依然未能解决lan wan错乱的问题呢

在路由器中查看network的config文件,发现原本在源码中修改的参数并未成功添加,然后重新把代码复制到路由器的network里面,重启解决了问题!但是如何在源码中使他生效呢?
回复

使用道具 举报

 楼主| | 显示全部楼层
目前把network文件在烧录系统后替换,可以修正lan&wan错乱,想要在源码中修改。
但是直接替换network文件,发现无效。
根据http://www.cnblogs.com/sammei/p/4091863.html文中所说,network文件由config_generate 文件产生,查看该文件,发现主要有三个定义函数:
generate_network()
函数体如下
generate_network() {
    local vlan
​
    json_select network
    json_select $1
    json_get_vars ifname create_vlan macaddr
    json_select ..
    json_select ..
​
    [ -n "$ifname" ] || return
    [ "$create_vlan" -eq 1 ] && case $1 in
    lan) vlan=1;;
    wan) vlan=2;;
    *)
        vlan=$next_vlan
        next_vlan=$((next_vlan + 1))
        ;;
    esac
    [ -n "$vlan" ] && ifname=${ifname}.${vlan}
    uci -q batch <<EOF
delete network.$1
set network.$1='interface'
set network.$1.ifname='$ifname'
set network.$1.force_link=1
set network.$1.proto='none'
set network.$1.macaddr='$macaddr'
EOF
&#8203;
    case $1 in
    lan) uci -q batch <<EOF
set network.$1.type='bridge'
set network.$1.proto='static'
set network.$1.ipaddr='192.168.1.254'
set network.$1.netmask='255.255.255.0'
set network.$1.ip6assign='60'
EOF
        ;;
    wan) uci -q batch <<EOF
set network.$1.proto='dhcp'
delete network.wan6
set network.wan6='interface'
set network.wan6.ifname='$ifname'
set network.wan6.proto='dhcpv6'
EOF
        ;;
    esac
}
它用于产生如下代码

config interface 'loopback'
    option ifname 'lo'
    option proto 'static'
    option ipaddr '127.0.0.1'
    option netmask '255.0.0.0'
&#8203;
config globals 'globals'
    option ula_prefix 'fd6e:7ebc:363b::/48'
&#8203;
config interface 'lan'
    option ifname 'eth0.1'
    option force_link '1'
    option macaddr '00:02:2b:00:b3:ec'
    option type 'bridge'
    option proto 'static'
    option ipaddr '192.168.1.254'
    option netmask '255.255.255.0'
    option ip6assign '60'
&#8203;
config interface 'wan'
    option ifname 'eth0.2'
    option force_link '1'
    option macaddr '00:02:2b:00:b3:ed'
    option proto 'dhcp'
&#8203;
config interface 'wan6'
    option ifname 'eth0.2'
    option proto 'dhcpv6'
这个函数是正确有效的,无需修改
generate_switch_vlan()
函数体如下

generate_switch_vlan() {
    local device=$1
    local vlan=$2
    local cpu_port=$3
&#8203;
    case $vlan in
    lan)    vlan=1;;
    wan)    vlan=2;;
    *)  vlan=${vlan##vlan};;
    esac
&#8203;
    json_select vlans
    json_select $2
    json_get_values ports
    json_select ..
    json_select ..
&#8203;
    uci -q batch <<EOF
add network switch_vlan
set network.@switch_vlan[-1].device='$device'
set network.@switch_vlan[-1].vlan='$vlan'
set network.@switch_vlan[-1].ports='$ports ${cpu_port}t'
EOF
}
它原本应该用于定义

config switch_vlan
        option device 'switch0'
        option vlan '1'
        option ports '1 2 3 4 6t'
&#8203;
config switch_vlan
        option device 'switch0'
        option vlan '2'
        option ports '0 6t'
如上两个vlan及其端口号,但是并未生效
generate_switch()
函数体如下

generate_switch() {
    local key=$1
    local vlans
&#8203;
    json_select switch
    json_select $key
    json_get_vars enable reset blinkrate cpu_port
&#8203;
    uci -q batch <<EOF
add network switch
set network.@switch[-1].name='$key'
set network.@switch[-1].reset='$reset'
set network.@switch[-1].enable_vlan='$enable'
set network.@switch[-1].blinkrate='$blinkrate'
EOF
    [ -n "$cpu_port" ] && {
        json_get_keys vlans vlans
        for vlan in $vlans; do generate_switch_vlan $1 $vlan $cpu_port; done
    }
    json_select ..
    json_select ..
}
他应该用于产生如下代码

config switch
        option name 'switch0'
        option reset '1'
        option enable_vlan '1'
但是也未生效

回复

使用道具 举报

来自手机 | 显示全部楼层

回帖奖励 +1 币恩山币

修改02_network
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

欢迎大家光临恩山无线论坛上一条 /1 下一条

有疑问请添加管理员QQ86788181|手机版|小黑屋|Archiver|恩山无线论坛(常州市恩山计算机开发有限公司版权所有) ( 苏ICP备05084872号 )

GMT+8, 2024-5-10 18:38

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

| 江苏省互联网有害信息举报中心 举报信箱:js12377 | @jischina.com.cn 举报电话:025-88802724 本站不良内容举报信箱:68610888@qq.com 举报电话:0519-86695797

快速回复 返回顶部 返回列表